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..efd76cba7c4ae07b691ff8952da1e1ccbe53561a 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::SendMessageToClient, |
+ base::Unretained(this)))), |
+ id_(base::GenerateGUID()), |
client_(NULL) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
g_instances.Get()[id_] = this; |
@@ -219,4 +224,27 @@ 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 true; |
+ |
+ 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); |
+ SendMessageToClient(json_response); |
+ return true; |
+ } |
+ } |
+ |
+ return protocol_handler_->HandleOptionalCommand(command.Pass()); |
+} |
+ |
} // namespace content |