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..d341ec072400ba703a44f73f7e486aafa4bf58d5 100644 |
| --- a/content/browser/devtools/devtools_session.cc |
| +++ b/content/browser/devtools/devtools_session.cc |
| @@ -8,33 +8,61 @@ |
| #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" |
|
caseq
2016/12/23 00:38:41
These should hopefully no longer be necessary :-)
dgozman
2016/12/27 20:01:52
Done.
|
| +#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, |
| int* call_id, |
| std::string* method) { |
| std::unique_ptr<base::Value> value = base::JSONReader::Read(message); |
| - DevToolsManagerDelegate* delegate = |
| - DevToolsManager::GetInstance()->delegate(); |
| + DevToolsManagerDelegate* delegate = offer_to_delegate ? |
| + DevToolsManager::GetInstance()->delegate() : nullptr; |
| if (value && value->IsType(base::Value::Type::DICTIONARY) && delegate) { |
| std::unique_ptr<base::DictionaryValue> response(delegate->HandleCommand( |
| agent_host_, |
| @@ -65,4 +93,12 @@ 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(); |
| +} |
| + |
| } // namespace content |