Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1326)

Unified Diff: content/browser/devtools/render_frame_devtools_agent_host.cc

Issue 2500093002: [DevTools] Move IO and Tracing to new generator. (Closed)
Patch Set: roll Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}
« no previous file with comments | « content/browser/devtools/render_frame_devtools_agent_host.h ('k') | content/browser/devtools/worker_devtools_agent_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698