| Index: content/browser/devtools/devtools_http_handler_impl.cc
|
| diff --git a/content/browser/devtools/devtools_http_handler_impl.cc b/content/browser/devtools/devtools_http_handler_impl.cc
|
| index 9029441967da877b76f75a3601fe11340a180c2a..595f51b5b9dcf00451ebe73956cc658bb14afbe5 100644
|
| --- a/content/browser/devtools/devtools_http_handler_impl.cc
|
| +++ b/content/browser/devtools/devtools_http_handler_impl.cc
|
| @@ -21,7 +21,8 @@
|
| #include "content/browser/devtools/devtools_protocol.h"
|
| #include "content/browser/devtools/devtools_protocol_constants.h"
|
| #include "content/browser/devtools/devtools_system_info_handler.h"
|
| -#include "content/browser/devtools/devtools_tracing_handler.h"
|
| +#include "content/browser/devtools/protocol/devtools_protocol_handler_impl.h"
|
| +#include "content/browser/devtools/protocol/tracing_handler.h"
|
| #include "content/browser/devtools/tethering_handler.h"
|
| #include "content/common/devtools_messages.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -159,7 +160,13 @@ class DevToolsHttpHandlerImpl::BrowserTarget {
|
| int connection_id)
|
| : message_loop_(message_loop),
|
| server_(server),
|
| - connection_id_(connection_id) {
|
| + connection_id_(connection_id),
|
| + tracing_handler_(new devtools::tracing::TracingHandler(
|
| + devtools::tracing::TracingHandler::Browser)),
|
| + protocol_handler_(new DevToolsProtocolHandlerImpl()) {
|
| + protocol_handler_->SetNotifier(
|
| + base::Bind(&BrowserTarget::Respond, base::Unretained(this)));
|
| + protocol_handler_->SetTracingHandler(tracing_handler_.get());
|
| }
|
|
|
| ~BrowserTarget() {
|
| @@ -184,17 +191,20 @@ class DevToolsHttpHandlerImpl::BrowserTarget {
|
| return;
|
| }
|
|
|
| + scoped_refptr<DevToolsProtocol::Response> response =
|
| + protocol_handler_->HandleCommand(command);
|
| for (const auto& handler : handlers_) {
|
| - scoped_refptr<DevToolsProtocol::Response> response =
|
| - handler->HandleCommand(command);
|
| - if (response.get()) {
|
| - if (!response->is_async_promise())
|
| - Respond(response->Serialize());
|
| - return;
|
| - }
|
| + if (response.get())
|
| + break;
|
| + response = handler->HandleCommand(command);
|
| }
|
|
|
| - Respond(command->NoSuchMethodErrorResponse()->Serialize());
|
| + if (response.get()) {
|
| + if (!response->is_async_promise())
|
| + Respond(response->Serialize());
|
| + } else {
|
| + Respond(command->NoSuchMethodErrorResponse()->Serialize());
|
| + }
|
| }
|
|
|
| void Respond(const std::string& message) {
|
| @@ -211,6 +221,8 @@ class DevToolsHttpHandlerImpl::BrowserTarget {
|
| base::MessageLoop* const message_loop_;
|
| net::HttpServer* const server_;
|
| const int connection_id_;
|
| + scoped_ptr<devtools::tracing::TracingHandler> tracing_handler_;
|
| + scoped_ptr<DevToolsProtocolHandlerImpl> protocol_handler_;
|
| std::vector<DevToolsProtocol::Handler*> handlers_;
|
| };
|
|
|
| @@ -692,8 +704,6 @@ void DevToolsHttpHandlerImpl::OnWebSocketRequestUI(
|
| BrowserTarget* browser_target = new BrowserTarget(
|
| thread_->message_loop(), server_.get(), connection_id);
|
| browser_target->RegisterHandler(
|
| - new DevToolsTracingHandler(DevToolsTracingHandler::Browser));
|
| - browser_target->RegisterHandler(
|
| new TetheringHandler(delegate_.get(), thread_->message_loop_proxy()));
|
| browser_target->RegisterHandler(
|
| new DevToolsSystemInfoHandler());
|
|
|