diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/webworker_proxy.cc | 11 | ||||
-rw-r--r-- | chrome/renderer/webworker_proxy.h | 6 |
3 files changed, 14 insertions, 5 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index dafb0ad..e6899dc 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -1910,7 +1910,7 @@ void RenderView::OnMissingPluginStatus(WebPluginDelegate* delegate, WebWorker* RenderView::CreateWebWorker(WebWorkerClient* client) { #if defined(OS_WIN) - return new WebWorkerProxy(client); + return new WebWorkerProxy(client, routing_id_); #else // TODO(port): out of process workers NOTIMPLEMENTED(); diff --git a/chrome/renderer/webworker_proxy.cc b/chrome/renderer/webworker_proxy.cc index 0da55f3..43ff9f5 100644 --- a/chrome/renderer/webworker_proxy.cc +++ b/chrome/renderer/webworker_proxy.cc @@ -9,8 +9,12 @@ #include "chrome/renderer/render_thread.h" #include "webkit/glue/webworkerclient.h" -WebWorkerProxy::WebWorkerProxy(WebWorkerClient* client) - : route_id_(MSG_ROUTING_NONE), client_(client) { +WebWorkerProxy::WebWorkerProxy( + WebWorkerClient* client, + int render_view_route_id) + : route_id_(MSG_ROUTING_NONE), + render_view_route_id_(render_view_route_id), + client_(client) { } WebWorkerProxy::~WebWorkerProxy() { @@ -21,7 +25,8 @@ void WebWorkerProxy::StartWorkerContext( const string16& user_agent, const string16& source_code) { RenderThread::current()->Send( - new ViewHostMsg_CreateDedicatedWorker(script_url, &route_id_)); + new ViewHostMsg_CreateDedicatedWorker( + script_url, render_view_route_id_, &route_id_)); if (route_id_ == MSG_ROUTING_NONE) return; diff --git a/chrome/renderer/webworker_proxy.h b/chrome/renderer/webworker_proxy.h index e068e8e..94c199d 100644 --- a/chrome/renderer/webworker_proxy.h +++ b/chrome/renderer/webworker_proxy.h @@ -26,7 +26,7 @@ class Message; class WebWorkerProxy : public WebWorker, public IPC::Channel::Listener { public: - WebWorkerProxy(WebWorkerClient* client); + WebWorkerProxy(WebWorkerClient* client, int render_view_route_id); virtual ~WebWorkerProxy(); // WebWorker implementation. @@ -45,8 +45,12 @@ class WebWorkerProxy : public WebWorker, private: bool Send(IPC::Message* message); + // The routing id used to reach WebWorkerClientProxy in the worker process. int route_id_; + // The routing id for the RenderView that created this worker. + int render_view_route_id_; + // Used to communicate to the WebCore::Worker object in response to IPC // messages. WebWorkerClient* client_; |