summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/render_view.cc2
-rw-r--r--chrome/renderer/webworker_proxy.cc11
-rw-r--r--chrome/renderer/webworker_proxy.h6
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_;