diff options
author | atwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-05 06:29:08 +0000 |
---|---|---|
committer | atwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-05 06:29:08 +0000 |
commit | bec1ed112990143fe30b6cae4624fdde3015efce (patch) | |
tree | 24ca36e4bc748f6a872decfaccd7f41cac60c4b3 /chrome/renderer/websharedworker_proxy.cc | |
parent | c38a0c74b4a29e6eecb99babf7c98045f05c1c56 (diff) | |
download | chromium_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.cc | 52 |
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(); +} + |