From ae4b5a5d80e576cc50ae972bb65b96069c2d727c Mon Sep 17 00:00:00 2001 From: "pfeldman@chromium.org" Date: Mon, 30 Jan 2012 16:40:55 +0000 Subject: [PATCH] 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): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106246 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 16 ++++++++++++++++ Source/WebCore/inspector/Inspector.json | 3 +-- .../inspector/generate-inspector-protocol-version | 8 ++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index b72ffda..44c4323 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,19 @@ +2012-01-30 Pavel Feldman + + 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 Web Inspector: keyboard navigation through comparison view in heap profiler should update retainers view diff --git a/Source/WebCore/inspector/Inspector.json b/Source/WebCore/inspector/Inspector.json index e05134f..6333165 100644 --- a/Source/WebCore/inspector/Inspector.json +++ b/Source/WebCore/inspector/Inspector.json @@ -367,8 +367,7 @@ { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for object 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)." } ] }, { diff --git a/Source/WebCore/inspector/generate-inspector-protocol-version b/Source/WebCore/inspector/generate-inspector-protocol-version index b6488fd..0e5fe35 100755 --- a/Source/WebCore/inspector/generate-inspector-protocol-version +++ b/Source/WebCore/inspector/generate-inspector-protocol-version @@ -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" ] -- 2.7.4