diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-01 14:22:02 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-01 14:22:02 +0000 |
commit | 7d713ec8c4fdd6940ff2a436cfe6cd2e7ea0cc69 (patch) | |
tree | 318cea12dfe12d61ec9e616c827bbec3a9ee6b04 | |
parent | b8b9d30cc9a9fb93ffa6a301bcec79ed85239c4a (diff) | |
download | chromium_src-7d713ec8c4fdd6940ff2a436cfe6cd2e7ea0cc69.zip chromium_src-7d713ec8c4fdd6940ff2a436cfe6cd2e7ea0cc69.tar.gz chromium_src-7d713ec8c4fdd6940ff2a436cfe6cd2e7ea0cc69.tar.bz2 |
Extensions: pass domain and command to the debugger events.
Review URL: http://codereview.chromium.org/6689012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80154 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_debugger_api.cc | 30 | ||||
-rw-r--r-- | chrome/common/extensions/api/extension_api.json | 16 | ||||
-rw-r--r-- | chrome/common/extensions/docs/experimental.debugger.html | 144 |
3 files changed, 178 insertions, 12 deletions
diff --git a/chrome/browser/extensions/extension_debugger_api.cc b/chrome/browser/extensions/extension_debugger_api.cc index d5e3403..de034ce 100644 --- a/chrome/browser/extensions/extension_debugger_api.cc +++ b/chrome/browser/extensions/extension_debugger_api.cc @@ -44,7 +44,7 @@ class ExtensionDevToolsClientHost : public DevToolsClientHost, void SendMessageToBackend(SendCommandDebuggerFunction* function, const std::string& domain, const std::string& command, - const Value& body); + Value* body); // DevToolsClientHost interface virtual void InspectedTabClosing(); @@ -179,14 +179,15 @@ void ExtensionDevToolsClientHost::SendMessageToBackend( SendCommandDebuggerFunction* function, const std::string& domain, const std::string& command, - const Value& body) { + Value* body) { DictionaryValue protocol_command; int request_id = ++last_request_id_; pending_requests_[request_id] = function; protocol_command.SetInteger("id", request_id); protocol_command.SetString("domain", domain); protocol_command.SetString("command", command); - protocol_command.Set("arguments", body.DeepCopy()); + if (body) + protocol_command.Set("arguments", body->DeepCopy()); std::string json_args; base::JSONWriter::Write(&protocol_command, false, &json_args); @@ -216,9 +217,26 @@ void ExtensionDevToolsClientHost::OnDispatchOnInspectorFrontend( std::string type; if (dictionary->GetString("type", &type) && type == "event") { - std::string message = StringPrintf("[%d,%s]", tab_id_, data.c_str()); + std::string domain; + std::string event_name; + std::string data; + Value* data_value; + if (!dictionary->GetString("domain", &domain) || + !dictionary->GetString("event", &event_name) || + !dictionary->Get("data", &data_value)) + return; + + ListValue args; + args.Append(Value::CreateIntegerValue(tab_id_)); + args.Append(Value::CreateStringValue(domain)); + args.Append(Value::CreateStringValue(event_name)); + args.Append(data_value->DeepCopy()); + + std::string json_args; + base::JSONWriter::Write(&args, false, &json_args); + profile->GetExtensionEventRouter()->DispatchEventToExtension( - extension_id_, keys::kOnEvent, message, profile, GURL()); + extension_id_, keys::kOnEvent, json_args, profile, GURL()); return; } @@ -352,7 +370,7 @@ bool SendCommandDebuggerFunction::RunImpl() { Value *body; EXTENSION_FUNCTION_VALIDATE(args_->Get(3, &body)); - client_host_->SendMessageToBackend(this, domain, command, *body); + client_host_->SendMessageToBackend(this, domain, command, body); return true; } diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index 125095d..7eb2bfe 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -4874,6 +4874,7 @@ { "type": "object", "name": "result", + "optional": true, "properties": {}, "additionalProperties": { "type": "any" }, "description": "JSON object with the command response." @@ -4896,11 +4897,22 @@ "description": "The id of the tab that generated debug evet." }, { + "type": "string", + "name": "domain", + "description": "Event domain." + }, + { + "type": "string", + "name": "event", + "description": "Event name." + }, + { "type": "object", - "name": "message", + "name": "data", + "optional": true, "properties": {}, "additionalProperties": { "type": "any" }, - "description": "JSON object matching Developer Tools / Web Inspector Protocol event scheme." + "description": "JSON object matching Developer Tools / Web Inspector Protocol event data scheme." } ] }, diff --git a/chrome/common/extensions/docs/experimental.debugger.html b/chrome/common/extensions/docs/experimental.debugger.html index 52fa031..bf9d9624 100644 --- a/chrome/common/extensions/docs/experimental.debugger.html +++ b/chrome/common/extensions/docs/experimental.debugger.html @@ -1166,7 +1166,7 @@ terminated. Extension can then re-establish it via attaching to a tab later. <!-- TYPE --> <div style="display:inline"> ( - <span class="optional" style="display: none; ">optional</span> + <span class="optional">optional</span> <span class="enum" style="display: none; ">enumerated</span> <span id="typeTemplate"> <span style="display: none; "> @@ -1344,7 +1344,7 @@ terminated. Extension can then re-establish it via attaching to a tab later. <div class="summary"> <!-- Note: intentionally longer 80 columns --> - <span class="subdued">chrome.experimental.debugger.</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>integer tabId, object message</span>) <span class="subdued">{...}</span>); + <span class="subdued">chrome.experimental.debugger.</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>integer tabId, string domain, string event, object data</span>) <span class="subdued">{...}</span>); </div> <div class="description"> @@ -1426,7 +1426,7 @@ terminated. Extension can then re-establish it via attaching to a tab later. </div><div> <div> <dt> - <var>message</var> + <var>domain</var> <em> <!-- TYPE --> @@ -1442,6 +1442,142 @@ terminated. Extension can then re-establish it via attaching to a tab later. <span style="display: none; "> array of <span><span></span></span> </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Event domain.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>event</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Event name.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>data</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> <span>object</span> <span style="display: none; "></span> </span> @@ -1454,7 +1590,7 @@ terminated. Extension can then re-establish it via attaching to a tab later. <dd class="todo" style="display: none; "> Undocumented. </dd> - <dd>JSON object matching Developer Tools / Web Inspector Protocol event scheme.</dd> + <dd>JSON object matching Developer Tools / Web Inspector Protocol event data scheme.</dd> <dd style="display: none; "> This parameter was added in version <b><span></span></b>. |