Index: content/browser/devtools/render_frame_devtools_agent_host.cc |
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc |
index ecf93bac421dda505a52bcee3b96d3079ec848dd..b0461f57842e4733d4d5ad5f41bf3c8b2a7259f1 100644 |
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc |
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc |
@@ -8,6 +8,7 @@ |
#include <utility> |
#include "base/guid.h" |
+#include "base/json/json_reader.h" |
#include "base/lazy_instance.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
@@ -24,6 +25,7 @@ |
#include "content/browser/devtools/protocol/io_handler.h" |
#include "content/browser/devtools/protocol/network_handler.h" |
#include "content/browser/devtools/protocol/page_handler.h" |
+#include "content/browser/devtools/protocol/protocol.h" |
#include "content/browser/devtools/protocol/schema_handler.h" |
#include "content/browser/devtools/protocol/security_handler.h" |
#include "content/browser/devtools/protocol/service_worker_handler.h" |
@@ -395,7 +397,7 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
dom_handler_(new devtools::dom::DOMHandler()), |
input_handler_(new devtools::input::InputHandler()), |
inspector_handler_(new devtools::inspector::InspectorHandler()), |
- io_handler_(new devtools::io::IOHandler(GetIOContext())), |
+ io_handler_(new protocol::IOHandler(GetIOContext())), |
network_handler_(new devtools::network::NetworkHandler()), |
page_handler_(nullptr), |
schema_handler_(new devtools::schema::SchemaHandler()), |
@@ -404,13 +406,14 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
new devtools::service_worker::ServiceWorkerHandler()), |
storage_handler_(new devtools::storage::StorageHandler()), |
target_handler_(new devtools::target::TargetHandler()), |
- tracing_handler_(new devtools::tracing::TracingHandler( |
- devtools::tracing::TracingHandler::Renderer, |
+ tracing_handler_(new protocol::TracingHandler( |
+ protocol::TracingHandler::Renderer, |
host->GetFrameTreeNodeId(), |
GetIOContext())), |
emulation_handler_(nullptr), |
frame_trace_recorder_(nullptr), |
protocol_handler_(new DevToolsProtocolHandler(this)), |
+ protocol_dispatcher_(new protocol::UberDispatcher(this, true)), |
handlers_frame_host_(nullptr), |
current_frame_crashed_(false), |
pending_handle_(nullptr), |
@@ -419,13 +422,13 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
dispatcher->SetDOMHandler(dom_handler_.get()); |
dispatcher->SetInputHandler(input_handler_.get()); |
dispatcher->SetInspectorHandler(inspector_handler_.get()); |
- dispatcher->SetIOHandler(io_handler_.get()); |
+ io_handler_->Wire(protocol_dispatcher_.get()); |
dispatcher->SetNetworkHandler(network_handler_.get()); |
dispatcher->SetSchemaHandler(schema_handler_.get()); |
dispatcher->SetServiceWorkerHandler(service_worker_handler_.get()); |
dispatcher->SetStorageHandler(storage_handler_.get()); |
dispatcher->SetTargetHandler(target_handler_.get()); |
- dispatcher->SetTracingHandler(tracing_handler_.get()); |
+ tracing_handler_->Wire(protocol_dispatcher_.get()); |
if (!host->GetParent()) { |
security_handler_.reset(new devtools::security::SecurityHandler()); |
@@ -516,11 +519,19 @@ void RenderFrameDevToolsAgentHost::Detach() { |
bool RenderFrameDevToolsAgentHost::DispatchProtocolMessage( |
const std::string& message) { |
+ std::unique_ptr<base::Value> value = base::JSONReader::Read(message); |
+ if (protocol_dispatcher_->dispatch( |
+ protocol::toProtocolValue(value.get(), 1000)) != |
+ protocol::Response::kFallThrough) { |
+ return true; |
+ } |
+ |
int call_id = 0; |
std::string method; |
- if (protocol_handler_->HandleOptionalMessage(session_id(), message, &call_id, |
- &method)) |
+ if (protocol_handler_->HandleOptionalMessage( |
+ session_id(), std::move(value), &call_id, &method)) { |
return true; |
+ } |
if (!navigating_handles_.empty()) { |
DCHECK(IsBrowserSideNavigationEnabled()); |