| 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 cc99610ca36cb9c6b5b3ccb946d6a69e489350fd..8975be6473baf109fbe26ae0f6134f63f202d379 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"
|
| @@ -25,6 +26,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"
|
| @@ -396,7 +398,6 @@ 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())),
|
| network_handler_(new devtools::network::NetworkHandler()),
|
| page_handler_(nullptr),
|
| schema_handler_(new devtools::schema::SchemaHandler()),
|
| @@ -405,10 +406,6 @@ 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,
|
| - host->GetFrameTreeNodeId(),
|
| - GetIOContext())),
|
| emulation_handler_(nullptr),
|
| frame_trace_recorder_(nullptr),
|
| protocol_handler_(new DevToolsProtocolHandler(this)),
|
| @@ -420,13 +417,11 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
|
| dispatcher->SetDOMHandler(dom_handler_.get());
|
| dispatcher->SetInputHandler(input_handler_.get());
|
| dispatcher->SetInspectorHandler(inspector_handler_.get());
|
| - dispatcher->SetIOHandler(io_handler_.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());
|
|
|
| if (!host->GetParent()) {
|
| security_handler_.reset(new devtools::security::SecurityHandler());
|
| @@ -500,6 +495,17 @@ WebContents* RenderFrameDevToolsAgentHost::GetWebContents() {
|
| }
|
|
|
| void RenderFrameDevToolsAgentHost::Attach() {
|
| + session()->dispatcher()->setFallThroughForNotFound(true);
|
| +
|
| + io_handler_.reset(new protocol::IOHandler(GetIOContext()));
|
| + io_handler_->Wire(session()->dispatcher());
|
| +
|
| + tracing_handler_.reset(new protocol::TracingHandler(
|
| + protocol::TracingHandler::Renderer,
|
| + frame_tree_node_->frame_tree_node_id(),
|
| + GetIOContext()));
|
| + tracing_handler_->Wire(session()->dispatcher());
|
| +
|
| if (current_)
|
| current_->Attach();
|
| if (pending_)
|
| @@ -508,6 +514,11 @@ void RenderFrameDevToolsAgentHost::Attach() {
|
| }
|
|
|
| void RenderFrameDevToolsAgentHost::Detach() {
|
| + io_handler_->Disable();
|
| + io_handler_.reset();
|
| + tracing_handler_->Disable();
|
| + tracing_handler_.reset();
|
| +
|
| if (current_)
|
| current_->Detach();
|
| if (pending_)
|
| @@ -517,11 +528,20 @@ void RenderFrameDevToolsAgentHost::Detach() {
|
|
|
| bool RenderFrameDevToolsAgentHost::DispatchProtocolMessage(
|
| const std::string& message) {
|
| + std::unique_ptr<base::Value> value = base::JSONReader::Read(message);
|
| + std::unique_ptr<protocol::Value> protocolValue =
|
| + protocol::toProtocolValue(value.get(), 1000);
|
| + if (session()->dispatcher()->dispatch(std::move(protocolValue)) !=
|
| + protocol::Response::kFallThrough) {
|
| + return true;
|
| + }
|
| +
|
| int call_id = 0;
|
| std::string method;
|
| - if (protocol_handler_->HandleOptionalMessage(session()->session_id(), message,
|
| - &call_id, &method))
|
| + if (protocol_handler_->HandleOptionalMessage(
|
| + session()->session_id(), std::move(value), &call_id, &method)) {
|
| return true;
|
| + }
|
|
|
| if (!navigating_handles_.empty()) {
|
| DCHECK(IsBrowserSideNavigationEnabled());
|
| @@ -566,7 +586,6 @@ void RenderFrameDevToolsAgentHost::OnClientDetached() {
|
| page_handler_->Detached();
|
| service_worker_handler_->Detached();
|
| target_handler_->Detached();
|
| - tracing_handler_->Detached();
|
| frame_trace_recorder_.reset();
|
| in_navigation_protocol_message_buffer_.clear();
|
| }
|
|
|