diff options
author | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-04 18:06:48 +0000 |
---|---|---|
committer | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-04 18:06:48 +0000 |
commit | ee5460655f5445a1e5e98221d7c4557a609b7130 (patch) | |
tree | 010dbcfeb85db4dd1a1777d4f2e6b69cc201242b | |
parent | 005d71b328dd56268d8301900d708f34d6c8af62 (diff) | |
download | chromium_src-ee5460655f5445a1e5e98221d7c4557a609b7130.zip chromium_src-ee5460655f5445a1e5e98221d7c4557a609b7130.tar.gz chromium_src-ee5460655f5445a1e5e98221d7c4557a609b7130.tar.bz2 |
[DevTools] Make sendMessageToBackend one of embedder messages.
The new message is called sendMessageToBrowser.
BUG=398049
Review URL: https://codereview.chromium.org/423673003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287363 0039d316-1c4b-4281-b951-d872f2087c98
6 files changed, 46 insertions, 1 deletions
diff --git a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc index 870496e..6e6716b 100644 --- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc +++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc @@ -289,5 +289,7 @@ DevToolsEmbedderMessageDispatcher* &Delegate::SetDeviceCountUpdatesEnabled, delegate); d->RegisterHandler("setDevicesUpdatesEnabled", &Delegate::SetDevicesUpdatesEnabled, delegate); + d->RegisterHandler("sendMessageToBrowser", + &Delegate::SendMessageToBrowser, delegate); return d; } diff --git a/chrome/browser/devtools/devtools_embedder_message_dispatcher.h b/chrome/browser/devtools/devtools_embedder_message_dispatcher.h index d85ba08..b5f9d67 100644 --- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.h +++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.h @@ -64,6 +64,7 @@ class DevToolsEmbedderMessageDispatcher { virtual void SetDeviceCountUpdatesEnabled(bool enabled) = 0; virtual void SetDevicesUpdatesEnabled(bool enabled) = 0; + virtual void SendMessageToBrowser(const std::string& message) = 0; }; virtual ~DevToolsEmbedderMessageDispatcher() {} diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc index 620f432..295a9e2 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chrome/browser/devtools/devtools_ui_bindings.cc @@ -630,6 +630,11 @@ void DevToolsUIBindings::SetDevicesUpdatesEnabled(bool enabled) { } } +void DevToolsUIBindings::SendMessageToBrowser(const std::string& message) { + content::DevToolsManager::GetInstance()->DispatchOnInspectorBackend( + this, message); +} + void DevToolsUIBindings::DeviceCountChanged(int count) { base::FundamentalValue value(count); CallClientFunction("InspectorFrontendAPI.deviceCountUpdated", &value, NULL, diff --git a/chrome/browser/devtools/devtools_ui_bindings.h b/chrome/browser/devtools/devtools_ui_bindings.h index 2ec6de5..e0c5557 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.h +++ b/chrome/browser/devtools/devtools_ui_bindings.h @@ -125,6 +125,7 @@ class DevToolsUIBindings : public content::NotificationObserver, const std::string& url) OVERRIDE; virtual void SetDeviceCountUpdatesEnabled(bool enabled) OVERRIDE; virtual void SetDevicesUpdatesEnabled(bool enabled) OVERRIDE; + virtual void SendMessageToBrowser(const std::string& message) OVERRIDE; void EnableRemoteDeviceCounter(bool enable); diff --git a/content/shell/browser/shell_devtools_frontend.cc b/content/shell/browser/shell_devtools_frontend.cc index fe30edd..76e2936 100644 --- a/content/shell/browser/shell_devtools_frontend.cc +++ b/content/shell/browser/shell_devtools_frontend.cc @@ -5,7 +5,9 @@ #include "content/shell/browser/shell_devtools_frontend.h" #include "base/command_line.h" +#include "base/json/json_reader.h" #include "base/path_service.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "content/public/browser/devtools_http_handler.h" @@ -135,6 +137,40 @@ void ShellDevToolsFrontend::RenderProcessGone(base::TerminationStatus status) { WebKitTestController::Get()->DevToolsProcessCrashed(); } +void ShellDevToolsFrontend::HandleMessageFromDevToolsFrontend( + const std::string& message) { + std::string method; + std::string browser_message; + int id = 0; + + base::ListValue* params = NULL; + base::DictionaryValue* dict = NULL; + scoped_ptr<base::Value> parsed_message(base::JSONReader::Read(message)); + if (!parsed_message || + !parsed_message->GetAsDictionary(&dict) || + !dict->GetString("method", &method) || + !dict->GetList("params", ¶ms)) { + return; + } + + if (method != "sendMessageToBrowser" || + params->GetSize() != 1 || + !params->GetString(0, &browser_message)) { + return; + } + dict->GetInteger("id", &id); + + DevToolsManager::GetInstance()->DispatchOnInspectorBackend( + this, browser_message); + + if (id) { + std::string code = "InspectorFrontendAPI.embedderMessageAck(" + + base::IntToString(id) + ",\"\");"; + base::string16 javascript = base::UTF8ToUTF16(code); + web_contents()->GetMainFrame()->ExecuteJavaScript(javascript); + } +} + void ShellDevToolsFrontend::HandleMessageFromDevToolsFrontendToBackend( const std::string& message) { DevToolsManager::GetInstance()->DispatchOnInspectorBackend( diff --git a/content/shell/browser/shell_devtools_frontend.h b/content/shell/browser/shell_devtools_frontend.h index 381ff22..0c7f259 100644 --- a/content/shell/browser/shell_devtools_frontend.h +++ b/content/shell/browser/shell_devtools_frontend.h @@ -50,7 +50,7 @@ class ShellDevToolsFrontend : public WebContentsObserver, // content::DevToolsFrontendHost::Delegate implementation. virtual void HandleMessageFromDevToolsFrontend( - const std::string& message) OVERRIDE {} + const std::string& message) OVERRIDE; virtual void HandleMessageFromDevToolsFrontendToBackend( const std::string& message) OVERRIDE; |