Chromium Code Reviews| 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 |