diff options
Diffstat (limited to 'chromium/content/renderer/devtools/devtools_agent_filter.cc')
-rw-r--r-- | chromium/content/renderer/devtools/devtools_agent_filter.cc | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/chromium/content/renderer/devtools/devtools_agent_filter.cc b/chromium/content/renderer/devtools/devtools_agent_filter.cc index fc9e34f8a8a..b0a60f00514 100644 --- a/chromium/content/renderer/devtools/devtools_agent_filter.cc +++ b/chromium/content/renderer/devtools/devtools_agent_filter.cc @@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/message_loop/message_loop.h" +#include "content/child/child_process.h" #include "content/common/devtools_messages.h" #include "content/renderer/devtools/devtools_agent.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -20,21 +21,21 @@ namespace { class MessageImpl : public WebDevToolsAgent::MessageDescriptor { public: - MessageImpl(const std::string& message, int host_id) - : msg(message), - host_id(host_id) { + MessageImpl(const std::string& message, int routing_id) + : msg_(message), + routing_id_(routing_id) { } virtual ~MessageImpl() {} virtual WebDevToolsAgent* agent() { - DevToolsAgent* agent = DevToolsAgent::FromHostId(host_id); + DevToolsAgent* agent = DevToolsAgent::FromRoutingId(routing_id_); if (!agent) return 0; return agent->GetWebAgent(); } - virtual WebString message() { return WebString::fromUTF8(msg); } + virtual WebString message() { return WebString::fromUTF8(msg_); } private: - std::string msg; - int host_id; + std::string msg_; + int routing_id_; }; } // namespace @@ -42,6 +43,7 @@ class MessageImpl : public WebDevToolsAgent::MessageDescriptor { DevToolsAgentFilter::DevToolsAgentFilter() : message_handled_(false), render_thread_loop_(base::MessageLoop::current()), + io_message_loop_proxy_(ChildProcess::current()->io_message_loop_proxy()), current_routing_id_(0) {} bool DevToolsAgentFilter::OnMessageReceived(const IPC::Message& message) { @@ -60,6 +62,11 @@ DevToolsAgentFilter::~DevToolsAgentFilter() {} void DevToolsAgentFilter::OnDispatchOnInspectorBackend( const std::string& message) { + if (embedded_worker_routes_.find(current_routing_id_) != + embedded_worker_routes_.end()) { + message_handled_ = false; + return; + } if (!WebDevToolsAgent::shouldInterruptForMessage( WebString::fromUTF8(message))) { message_handled_ = false; @@ -72,4 +79,27 @@ void DevToolsAgentFilter::OnDispatchOnInspectorBackend( FROM_HERE, base::Bind(&WebDevToolsAgent::processPendingMessages)); } +void DevToolsAgentFilter::AddEmbeddedWorkerRouteOnMainThread(int32 routing_id) { + io_message_loop_proxy_->PostTask( + FROM_HERE, + base::Bind( + &DevToolsAgentFilter::AddEmbeddedWorkerRoute, this, routing_id)); +} + +void DevToolsAgentFilter::RemoveEmbeddedWorkerRouteOnMainThread( + int32 routing_id) { + io_message_loop_proxy_->PostTask( + FROM_HERE, + base::Bind( + &DevToolsAgentFilter::RemoveEmbeddedWorkerRoute, this, routing_id)); +} + +void DevToolsAgentFilter::AddEmbeddedWorkerRoute(int32 routing_id) { + embedded_worker_routes_.insert(routing_id); +} + +void DevToolsAgentFilter::RemoveEmbeddedWorkerRoute(int32 routing_id) { + embedded_worker_routes_.erase(routing_id); +} + } // namespace content |