summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-01 14:22:02 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-01 14:22:02 +0000
commit7d713ec8c4fdd6940ff2a436cfe6cd2e7ea0cc69 (patch)
tree318cea12dfe12d61ec9e616c827bbec3a9ee6b04
parentb8b9d30cc9a9fb93ffa6a301bcec79ed85239c4a (diff)
downloadchromium_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.cc30
-rw-r--r--chrome/common/extensions/api/extension_api.json16
-rw-r--r--chrome/common/extensions/docs/experimental.debugger.html144
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>.