OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/devtools/browser_devtools_agent_host.h" | 5 #include "content/browser/devtools/browser_devtools_agent_host.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_reader.h" |
8 #include "base/guid.h" | 9 #include "base/guid.h" |
9 #include "content/browser/devtools/devtools_protocol_handler.h" | 10 #include "content/browser/devtools/devtools_protocol_handler.h" |
10 #include "content/browser/devtools/protocol/io_handler.h" | 11 #include "content/browser/devtools/protocol/io_handler.h" |
11 #include "content/browser/devtools/protocol/memory_handler.h" | 12 #include "content/browser/devtools/protocol/memory_handler.h" |
| 13 #include "content/browser/devtools/protocol/protocol.h" |
12 #include "content/browser/devtools/protocol/system_info_handler.h" | 14 #include "content/browser/devtools/protocol/system_info_handler.h" |
13 #include "content/browser/devtools/protocol/tethering_handler.h" | 15 #include "content/browser/devtools/protocol/tethering_handler.h" |
14 #include "content/browser/devtools/protocol/tracing_handler.h" | 16 #include "content/browser/devtools/protocol/tracing_handler.h" |
15 #include "content/browser/frame_host/frame_tree_node.h" | 17 #include "content/browser/frame_host/frame_tree_node.h" |
16 | 18 |
17 namespace content { | 19 namespace content { |
18 | 20 |
19 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::CreateForBrowser( | 21 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::CreateForBrowser( |
20 scoped_refptr<base::SingleThreadTaskRunner> tethering_task_runner, | 22 scoped_refptr<base::SingleThreadTaskRunner> tethering_task_runner, |
21 const CreateServerSocketCallback& socket_callback) { | 23 const CreateServerSocketCallback& socket_callback) { |
22 return new BrowserDevToolsAgentHost(tethering_task_runner, socket_callback); | 24 return new BrowserDevToolsAgentHost(tethering_task_runner, socket_callback); |
23 } | 25 } |
24 | 26 |
25 BrowserDevToolsAgentHost::BrowserDevToolsAgentHost( | 27 BrowserDevToolsAgentHost::BrowserDevToolsAgentHost( |
26 scoped_refptr<base::SingleThreadTaskRunner> tethering_task_runner, | 28 scoped_refptr<base::SingleThreadTaskRunner> tethering_task_runner, |
27 const CreateServerSocketCallback& socket_callback) | 29 const CreateServerSocketCallback& socket_callback) |
28 : DevToolsAgentHostImpl(base::GenerateGUID()), | 30 : DevToolsAgentHostImpl(base::GenerateGUID()), |
29 io_handler_(new devtools::io::IOHandler(GetIOContext())), | 31 io_handler_(new protocol::IOHandler(GetIOContext())), |
30 memory_handler_(new devtools::memory::MemoryHandler()), | 32 memory_handler_(new devtools::memory::MemoryHandler()), |
31 system_info_handler_(new devtools::system_info::SystemInfoHandler()), | 33 system_info_handler_(new devtools::system_info::SystemInfoHandler()), |
32 tethering_handler_( | 34 tethering_handler_( |
33 new devtools::tethering::TetheringHandler(socket_callback, | 35 new devtools::tethering::TetheringHandler(socket_callback, |
34 tethering_task_runner)), | 36 tethering_task_runner)), |
35 tracing_handler_(new devtools::tracing::TracingHandler( | 37 tracing_handler_(new protocol::TracingHandler( |
36 devtools::tracing::TracingHandler::Browser, | 38 protocol::TracingHandler::Browser, |
37 FrameTreeNode::kFrameTreeNodeInvalidId, | 39 FrameTreeNode::kFrameTreeNodeInvalidId, |
38 GetIOContext())), | 40 GetIOContext())), |
39 protocol_handler_(new DevToolsProtocolHandler(this)) { | 41 protocol_handler_(new DevToolsProtocolHandler(this)), |
| 42 protocol_dispatcher_(new protocol::UberDispatcher(this, true)) { |
40 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); | 43 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); |
41 dispatcher->SetIOHandler(io_handler_.get()); | 44 io_handler_->Wire(protocol_dispatcher_.get()); |
42 dispatcher->SetMemoryHandler(memory_handler_.get()); | 45 dispatcher->SetMemoryHandler(memory_handler_.get()); |
43 dispatcher->SetSystemInfoHandler(system_info_handler_.get()); | 46 dispatcher->SetSystemInfoHandler(system_info_handler_.get()); |
44 dispatcher->SetTetheringHandler(tethering_handler_.get()); | 47 dispatcher->SetTetheringHandler(tethering_handler_.get()); |
45 dispatcher->SetTracingHandler(tracing_handler_.get()); | 48 tracing_handler_->Wire(protocol_dispatcher_.get()); |
46 NotifyCreated(); | 49 NotifyCreated(); |
47 } | 50 } |
48 | 51 |
49 BrowserDevToolsAgentHost::~BrowserDevToolsAgentHost() { | 52 BrowserDevToolsAgentHost::~BrowserDevToolsAgentHost() { |
50 } | 53 } |
51 | 54 |
52 void BrowserDevToolsAgentHost::Attach() { | 55 void BrowserDevToolsAgentHost::Attach() { |
53 } | 56 } |
54 | 57 |
55 void BrowserDevToolsAgentHost::Detach() { | 58 void BrowserDevToolsAgentHost::Detach() { |
(...skipping 17 matching lines...) Expand all Loading... |
73 | 76 |
74 bool BrowserDevToolsAgentHost::Close() { | 77 bool BrowserDevToolsAgentHost::Close() { |
75 return false; | 78 return false; |
76 } | 79 } |
77 | 80 |
78 void BrowserDevToolsAgentHost::Reload() { | 81 void BrowserDevToolsAgentHost::Reload() { |
79 } | 82 } |
80 | 83 |
81 bool BrowserDevToolsAgentHost::DispatchProtocolMessage( | 84 bool BrowserDevToolsAgentHost::DispatchProtocolMessage( |
82 const std::string& message) { | 85 const std::string& message) { |
83 protocol_handler_->HandleMessage(session_id(), message); | 86 std::unique_ptr<base::Value> value = base::JSONReader::Read(message); |
| 87 if (protocol_dispatcher_->dispatch( |
| 88 protocol::toProtocolValue(value.get(), 1000)) == |
| 89 protocol::Response::kFallThrough) { |
| 90 protocol_handler_->HandleMessage(session_id(), std::move(value)); |
| 91 } |
84 return true; | 92 return true; |
85 } | 93 } |
86 | 94 |
87 } // content | 95 } // content |
OLD | NEW |