Web Inspector: protocol validator should fail if one of response fields turns optional
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Jan 2012 16:40:55 +0000 (16:40 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Jan 2012 16:40:55 +0000 (16:40 +0000)
https://bugs.webkit.org/show_bug.cgi?id=76452

Reviewed by Yury Semikhatsky.

* inspector/Inspector-0.1.json:
* inspector/Inspector.json:
* inspector/generate-inspector-protocol-version:
(compare_commands):
(compare_events):
(compare_params_list):
(compare_types):
(self_test):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106246 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/inspector/Inspector.json
Source/WebCore/inspector/generate-inspector-protocol-version

index b72ffda..44c4323 100644 (file)
@@ -1,3 +1,19 @@
+2012-01-30  Pavel Feldman  <pfeldman@google.com>
+
+        Web Inspector: protocol validator should fail if one of response fields turns optional
+        https://bugs.webkit.org/show_bug.cgi?id=76452
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/Inspector-0.1.json:
+        * inspector/Inspector.json:
+        * inspector/generate-inspector-protocol-version:
+        (compare_commands):
+        (compare_events):
+        (compare_params_list):
+        (compare_types):
+        (self_test):
+
 2012-01-30  Yury Semikhatsky  <yurys@chromium.org>
 
         Web Inspector: keyboard navigation through comparison view in heap profiler should update retainers view
index e05134f..6333165 100644 (file)
                     { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for <code>object</code> type values only." },
                     { "name": "value", "type": "any", "optional": true, "description": "Remote object value (in case of primitive values or JSON values if it was requested)." },
                     { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." },
-                    { "name": "functionName", "type": "string", "optional": true, "description": "User-friendly name of the function represented by this object." }
+                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." }
                 ]
             },
             {
index b6488fd..0e5fe35 100755 (executable)
@@ -123,6 +123,9 @@ def compare_params_list(params_1, params_2, types_map_1, types_map_2, depth, err
             continue
 
         param_2 = params_2[name]
+        if param_2 and "optional" in param_2 and not "optional" in param_1:
+            errors.append("required parameter is now optional: %s" % name)
+            continue;
         type_1 = extract_type(param_1, types_map_1, errors)
         type_2 = extract_type(param_2, types_map_2, errors)
         compare_types("param " + name, type_1, type_2, types_map_1, types_map_2, depth, errors)
@@ -226,6 +229,7 @@ def self_test():
                     ],
                     "returns": [
                         { "name": "mimeType", "type": "string" },
+                        { "name": "nonOptionalMimeType", "type": "string" },
                         { "name": "optionalMimeType", "type": "string", "optional": True }
                     ]
                 }
@@ -273,6 +277,9 @@ def self_test():
                     "name": "setExtraHTTPHeaders",
                     "parameters": [
                         { "name": "headers", "type": "object" },
+                    ],
+                    "returns": [
+                        { "name": "nonOptionalMimeType", "type": "string", "optional": True }
                     ]
                 }
             ],
@@ -291,6 +298,7 @@ def self_test():
     golden_errors = [
         "Network.setUserAgentOverride: command is missing",
         "Network.setExtraHTTPHeaders: required parameter is missing: mimeType",
+        "Network.setExtraHTTPHeaders: required parameter is now optional: nonOptionalMimeType",
         "Network.loadingFailed: event is missing",
         "Network.requestWillBeSent: required parameter is missing: postData",
         "Network.requestWillBeSent: required parameter is missing: documentURL" ]