Index: content/browser/devtools/devtools_session.cc |
diff --git a/content/browser/devtools/devtools_session.cc b/content/browser/devtools/devtools_session.cc |
index 60ccb85ebebdd22377769751c2bcd04697f7bb2a..559e038a21921fe8ba5fc4f7bffe67c2f21bbd49 100644 |
--- a/content/browser/devtools/devtools_session.cc |
+++ b/content/browser/devtools/devtools_session.cc |
@@ -8,27 +8,55 @@ |
#include "base/json/json_writer.h" |
#include "content/browser/devtools/devtools_agent_host_impl.h" |
#include "content/browser/devtools/devtools_manager.h" |
+#include "content/browser/devtools/protocol/input_handler.h" |
+#include "content/browser/devtools/protocol/inspector_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/target_handler.h" |
+#include "content/browser/devtools/protocol/tracing_handler.h" |
#include "content/public/browser/devtools_manager_delegate.h" |
namespace content { |
DevToolsSession::DevToolsSession( |
DevToolsAgentHostImpl* agent_host, |
+ DevToolsAgentHostClient* client, |
int session_id) |
: agent_host_(agent_host), |
+ client_(client), |
session_id_(session_id), |
+ host_(nullptr), |
dispatcher_(new protocol::UberDispatcher(this)) { |
} |
-DevToolsSession::~DevToolsSession() {} |
- |
-void DevToolsSession::ResetDispatcher() { |
+DevToolsSession::~DevToolsSession() { |
dispatcher_.reset(); |
+ for (auto& pair : handlers_) |
+ pair.second->Disable(); |
+ handlers_.clear(); |
+} |
+ |
+void DevToolsSession::AddHandler( |
+ std::unique_ptr<protocol::DevToolsDomainHandler> handler) { |
+ handler->Wire(dispatcher_.get()); |
+ handler->SetRenderFrameHost(host_); |
+ handlers_[handler->name()] = std::move(handler); |
+} |
+ |
+void DevToolsSession::SetRenderFrameHost(RenderFrameHostImpl* host) { |
+ host_ = host; |
+ for (auto& pair : handlers_) |
+ pair.second->SetRenderFrameHost(host_); |
+} |
+ |
+void DevToolsSession::SetFallThroughForNotFound(bool value) { |
+ dispatcher_->setFallThroughForNotFound(value); |
} |
protocol::Response::Status DevToolsSession::Dispatch( |
const std::string& message, |
+ bool offer_to_delegate, |
caseq
2016/12/21 23:17:27
remove this?
dgozman
2016/12/22 06:26:13
Ops, I meant to use it actually.
|
int* call_id, |
std::string* method) { |
std::unique_ptr<base::Value> value = base::JSONReader::Read(message); |
@@ -65,4 +93,42 @@ void DevToolsSession::sendProtocolNotification( |
void DevToolsSession::flushProtocolNotifications() { |
} |
+protocol::DevToolsDomainHandler* DevToolsSession::GetHandlerByName( |
+ const std::string& name) { |
+ auto it = handlers_.find(name); |
+ if (it == handlers_.end()) |
+ return nullptr; |
+ return it->second.get(); |
+} |
+ |
+protocol::InputHandler* DevToolsSession::GetInputHandler() { |
+ return static_cast<protocol::InputHandler*>( |
+ GetHandlerByName(protocol::Input::Metainfo::domainName)); |
+} |
+ |
+protocol::InspectorHandler* DevToolsSession::GetInspectorHandler() { |
+ return static_cast<protocol::InspectorHandler*>( |
+ GetHandlerByName(protocol::Inspector::Metainfo::domainName)); |
+} |
+ |
+protocol::NetworkHandler* DevToolsSession::GetNetworkHandler() { |
+ return static_cast<protocol::NetworkHandler*>( |
+ GetHandlerByName(protocol::Network::Metainfo::domainName)); |
+} |
+ |
+protocol::PageHandler* DevToolsSession::GetPageHandler() { |
+ return static_cast<protocol::PageHandler*>( |
+ GetHandlerByName(protocol::Page::Metainfo::domainName)); |
+} |
+ |
+protocol::TargetHandler* DevToolsSession::GetTargetHandler() { |
+ return static_cast<protocol::TargetHandler*>( |
+ GetHandlerByName(protocol::Target::Metainfo::domainName)); |
+} |
+ |
+protocol::TracingHandler* DevToolsSession::GetTracingHandler() { |
+ return static_cast<protocol::TracingHandler*>( |
+ GetHandlerByName(protocol::Tracing::Metainfo::domainName)); |
+} |
+ |
} // namespace content |