Chromium Code Reviews| 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 8975be6473baf109fbe26ae0f6134f63f202d379..95904c097726fbd69c5f1a90e7d475fac20c0254 100644 |
| --- a/content/browser/devtools/render_frame_devtools_agent_host.cc |
| +++ b/content/browser/devtools/render_frame_devtools_agent_host.cc |
| @@ -378,9 +378,8 @@ RenderFrameDevToolsAgentHost::CreateThrottleForNavigation( |
| bool RenderFrameDevToolsAgentHost::IsNetworkHandlerEnabled( |
| FrameTreeNode* frame_tree_node) { |
| RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(frame_tree_node); |
| - if (!agent_host) |
| - return false; |
| - return agent_host->network_handler_->enabled(); |
| + return !!agent_host && agent_host->network_handler_ && |
|
caseq
2016/12/06 18:42:13
nit: nuke !!
dgozman
2016/12/07 00:22:13
Done.
|
| + agent_host->network_handler_->enabled(); |
| } |
| // static |
| @@ -397,10 +396,7 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
| : DevToolsAgentHostImpl(base::GenerateGUID()), |
| dom_handler_(new devtools::dom::DOMHandler()), |
| input_handler_(new devtools::input::InputHandler()), |
| - inspector_handler_(new devtools::inspector::InspectorHandler()), |
| - network_handler_(new devtools::network::NetworkHandler()), |
| page_handler_(nullptr), |
| - schema_handler_(new devtools::schema::SchemaHandler()), |
| security_handler_(nullptr), |
| service_worker_handler_( |
| new devtools::service_worker::ServiceWorkerHandler()), |
| @@ -416,9 +412,6 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
| DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); |
| dispatcher->SetDOMHandler(dom_handler_.get()); |
| dispatcher->SetInputHandler(input_handler_.get()); |
| - dispatcher->SetInspectorHandler(inspector_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()); |
| @@ -497,9 +490,20 @@ WebContents* RenderFrameDevToolsAgentHost::GetWebContents() { |
| void RenderFrameDevToolsAgentHost::Attach() { |
| session()->dispatcher()->setFallThroughForNotFound(true); |
| + inspector_handler_.reset(new protocol::InspectorHandler()); |
| + inspector_handler_->Wire(session()->dispatcher()); |
|
caseq
2016/12/06 18:42:13
Symmetrically to detaching automatically in destru
dgozman
2016/12/07 00:22:13
Good point. I'll follow up with a refactoring afte
|
| + inspector_handler_->SetRenderFrameHost(handlers_frame_host_); |
| + |
| io_handler_.reset(new protocol::IOHandler(GetIOContext())); |
| io_handler_->Wire(session()->dispatcher()); |
| + network_handler_.reset(new protocol::NetworkHandler()); |
| + network_handler_->Wire(session()->dispatcher()); |
| + network_handler_->SetRenderFrameHost(handlers_frame_host_); |
| + |
| + schema_handler_.reset(new protocol::SchemaHandler()); |
| + schema_handler_->Wire(session()->dispatcher()); |
| + |
| tracing_handler_.reset(new protocol::TracingHandler( |
| protocol::TracingHandler::Renderer, |
| frame_tree_node_->frame_tree_node_id(), |
| @@ -514,8 +518,14 @@ void RenderFrameDevToolsAgentHost::Attach() { |
| } |
| void RenderFrameDevToolsAgentHost::Detach() { |
| + inspector_handler_->Disable(); |
| + inspector_handler_.reset(); |
| io_handler_->Disable(); |
| io_handler_.reset(); |
| + network_handler_->Disable(); |
| + network_handler_.reset(); |
| + schema_handler_->Disable(); |
| + schema_handler_.reset(); |
| tracing_handler_->Disable(); |
| tracing_handler_.reset(); |
| @@ -797,11 +807,13 @@ void RenderFrameDevToolsAgentHost::RenderProcessGone( |
| case base::TERMINATION_STATUS_OOM_PROTECTED: |
| #endif |
| case base::TERMINATION_STATUS_LAUNCH_FAILED: |
| - inspector_handler_->TargetCrashed(); |
| + if (inspector_handler_) |
| + inspector_handler_->TargetCrashed(); |
| current_frame_crashed_ = true; |
| break; |
| default: |
| - inspector_handler_->TargetDetached("Render process gone."); |
| + if (inspector_handler_) |
| + inspector_handler_->TargetDetached("Render process gone."); |
| break; |
| } |
| DCHECK(CheckConsistency()); |
| @@ -918,8 +930,10 @@ void RenderFrameDevToolsAgentHost::UpdateProtocolHandlers( |
| emulation_handler_->SetRenderFrameHost(host); |
| input_handler_->SetRenderWidgetHost( |
| host ? host->GetRenderWidgetHost() : nullptr); |
| - inspector_handler_->SetRenderFrameHost(host); |
| - network_handler_->SetRenderFrameHost(host); |
| + if (inspector_handler_) |
| + inspector_handler_->SetRenderFrameHost(host); |
| + if (network_handler_) |
| + network_handler_->SetRenderFrameHost(host); |
| if (page_handler_) |
| page_handler_->SetRenderFrameHost(host); |
| service_worker_handler_->SetRenderFrameHost(host); |