Index: content/browser/devtools/devtools_agent_host_impl.cc |
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc |
index 2c55fade8043bee655e5c7291de4e23dd5b520e2..00ebdd9328fe2b76af5f1d6fc1575b1419ecdb7f 100644 |
--- a/content/browser/devtools/devtools_agent_host_impl.cc |
+++ b/content/browser/devtools/devtools_agent_host_impl.cc |
@@ -9,9 +9,11 @@ |
#include "base/basictypes.h" |
#include "base/guid.h" |
+#include "base/json/json_writer.h" |
#include "base/lazy_instance.h" |
#include "content/browser/devtools/devtools_manager.h" |
#include "content/browser/devtools/forwarding_agent_host.h" |
+#include "content/browser/devtools/protocol/devtools_protocol_handler.h" |
#include "content/browser/devtools/render_frame_devtools_agent_host.h" |
#include "content/browser/devtools/service_worker_devtools_agent_host.h" |
#include "content/browser/devtools/service_worker_devtools_manager.h" |
@@ -65,7 +67,10 @@ scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker( |
} |
DevToolsAgentHostImpl::DevToolsAgentHostImpl() |
- : id_(base::GenerateGUID()), |
+ : protocol_handler_(new DevToolsProtocolHandler( |
+ base::Bind(&DevToolsAgentHostImpl::DispatchOnInspectorFrontend, |
+ base::Unretained(this)))), |
+ id_(base::GenerateGUID()), |
client_(NULL) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
g_instances.Get()[id_] = this; |
@@ -219,4 +224,37 @@ void DevToolsAgentHostImpl::Inspect(BrowserContext* browser_context) { |
manager->delegate()->Inspect(browser_context, this); |
} |
+bool DevToolsAgentHostImpl::DispatchProtocolMessage( |
+ const std::string& message) { |
+ scoped_ptr<base::DictionaryValue> command = |
+ protocol_handler_->ParseCommand(message); |
+ if (!command) |
+ return false; |
pfeldman
2015/03/23 09:59:00
See my comment below, this should be "true" since
Kunihiko Sakamoto
2015/03/23 10:23:58
Done.
|
+ |
+ DevToolsManagerDelegate* delegate = |
+ DevToolsManager::GetInstance()->delegate(); |
+ if (delegate) { |
+ scoped_ptr<base::DictionaryValue> response( |
+ delegate->HandleCommand(this, command.get())); |
+ if (response) { |
+ std::string json_response; |
+ base::JSONWriter::Write(response.get(), &json_response); |
+ DispatchOnInspectorFrontend(json_response); |
+ return true; |
+ } |
+ } |
+ |
+ if (protocol_handler_->HandleOptionalCommand(command.Pass())) |
+ return true; |
+ |
+ return false; |
+} |
+ |
+void DevToolsAgentHostImpl::DispatchOnInspectorFrontend( |
+ const std::string& message) { |
+ if (!IsAttached()) |
pfeldman
2015/03/23 09:59:00
This check is already present in SendMessageToClie
|
+ return; |
+ SendMessageToClient(message); |
+} |
+ |
} // namespace content |