summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/websharedworker_proxy.cc
diff options
context:
space:
mode:
authoratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-05 06:29:08 +0000
committeratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-05 06:29:08 +0000
commitbec1ed112990143fe30b6cae4624fdde3015efce (patch)
tree24ca36e4bc748f6a872decfaccd7f41cac60c4b3 /chrome/renderer/websharedworker_proxy.cc
parentc38a0c74b4a29e6eecb99babf7c98045f05c1c56 (diff)
downloadchromium_src-bec1ed112990143fe30b6cae4624fdde3015efce.zip
chromium_src-bec1ed112990143fe30b6cae4624fdde3015efce.tar.gz
chromium_src-bec1ed112990143fe30b6cae4624fdde3015efce.tar.bz2
Added beginnings of browser-process support for shared workers.
Refactored WebWorkerClientProxy into two classes - WebWorkerDispatcher which dispatches incoming IPCs for the worker, and WebWorkerClientProxy, which handles outgoing API calls from WebWorkerImpl. This allows WebWorkerClientProxy to be reused by WebSharedWorkerDispatcher. BUG=26233 TEST=none (will enable layout tests when basic functionality available) Review URL: http://codereview.chromium.org/351004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31077 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/websharedworker_proxy.cc')
-rw-r--r--chrome/renderer/websharedworker_proxy.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/chrome/renderer/websharedworker_proxy.cc b/chrome/renderer/websharedworker_proxy.cc
new file mode 100644
index 0000000..ee08901
--- /dev/null
+++ b/chrome/renderer/websharedworker_proxy.cc
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/websharedworker_proxy.h"
+
+#include "chrome/common/render_messages.h"
+#include "chrome/common/webmessageportchannel_impl.h"
+#include "chrome/common/worker_messages.h"
+#include "webkit/api/public/WebURL.h"
+
+WebSharedWorkerProxy::WebSharedWorkerProxy(ChildThread* child_thread,
+ int route_id,
+ int render_view_route_id)
+ : WebWorkerBase(child_thread, route_id, render_view_route_id) {
+}
+
+bool WebSharedWorkerProxy::isStarted() {
+ return IsStarted();
+}
+
+void WebSharedWorkerProxy::startWorkerContext(
+ const WebKit::WebURL& script_url,
+ const WebKit::WebString& name,
+ const WebKit::WebString& user_agent,
+ const WebKit::WebString& source_code) {
+ CreateWorkerContext(script_url, true, name, user_agent, source_code);
+}
+
+void WebSharedWorkerProxy::connect(WebKit::WebMessagePortChannel* channel) {
+ WebMessagePortChannelImpl* webchannel =
+ static_cast<WebMessagePortChannelImpl*>(channel);
+
+ int message_port_id = webchannel->message_port_id();
+ DCHECK(message_port_id != MSG_ROUTING_NONE);
+ webchannel->QueueMessages();
+
+ Send(new WorkerMsg_Connect(route_id_, message_port_id, MSG_ROUTING_NONE));
+}
+
+void WebSharedWorkerProxy::OnMessageReceived(const IPC::Message& message) {
+ IPC_BEGIN_MESSAGE_MAP(WebSharedWorkerProxy, message)
+ IPC_MESSAGE_HANDLER(ViewMsg_WorkerCreated, OnWorkerCreated)
+ IPC_END_MESSAGE_MAP()
+}
+
+void WebSharedWorkerProxy::OnWorkerCreated() {
+ // The worker is created - now send off the CreateWorkerContext message and
+ // any other queued messages
+ SendQueuedMessages();
+}
+