| Index: chrome/worker/webworkerclient_proxy.cc
|
| ===================================================================
|
| --- chrome/worker/webworkerclient_proxy.cc (revision 78005)
|
| +++ chrome/worker/webworkerclient_proxy.cc (working copy)
|
| @@ -1,200 +0,0 @@
|
| -// 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/worker/webworkerclient_proxy.h"
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/message_loop.h"
|
| -#include "chrome/worker/webworker_stub_base.h"
|
| -#include "chrome/worker/worker_thread.h"
|
| -#include "chrome/worker/worker_webapplicationcachehost_impl.h"
|
| -#include "content/common/content_switches.h"
|
| -#include "content/common/file_system/file_system_dispatcher.h"
|
| -#include "content/common/file_system/webfilesystem_callback_dispatcher.h"
|
| -#include "content/common/webmessageportchannel_impl.h"
|
| -#include "content/common/worker_messages.h"
|
| -// TODO(jam): uncomment this and WebWorkerClientProxy::createWorker when the
|
| -// renderer worker code moves to content. This code isn't used now since we
|
| -// don't support nested workers anyways.
|
| -//#include "content/renderer/webworker_proxy.h"
|
| -#include "ipc/ipc_logging.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallbacks.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebWorker.h"
|
| -
|
| -using WebKit::WebApplicationCacheHost;
|
| -using WebKit::WebFrame;
|
| -using WebKit::WebMessagePortChannel;
|
| -using WebKit::WebMessagePortChannelArray;
|
| -using WebKit::WebSecurityOrigin;
|
| -using WebKit::WebString;
|
| -using WebKit::WebWorker;
|
| -using WebKit::WebWorkerClient;
|
| -
|
| -// How long to wait for worker to finish after it's been told to terminate.
|
| -#define kMaxTimeForRunawayWorkerMs 3000
|
| -
|
| -WebWorkerClientProxy::WebWorkerClientProxy(int route_id,
|
| - WebWorkerStubBase* stub)
|
| - : route_id_(route_id),
|
| - appcache_host_id_(0),
|
| - stub_(stub),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(kill_process_factory_(this)) {
|
| -}
|
| -
|
| -WebWorkerClientProxy::~WebWorkerClientProxy() {
|
| -}
|
| -
|
| -void WebWorkerClientProxy::postMessageToWorkerObject(
|
| - const WebString& message,
|
| - const WebMessagePortChannelArray& channels) {
|
| - std::vector<int> message_port_ids(channels.size());
|
| - std::vector<int> routing_ids(channels.size());
|
| - for (size_t i = 0; i < channels.size(); ++i) {
|
| - WebMessagePortChannelImpl* webchannel =
|
| - static_cast<WebMessagePortChannelImpl*>(channels[i]);
|
| - message_port_ids[i] = webchannel->message_port_id();
|
| - webchannel->QueueMessages();
|
| - DCHECK(message_port_ids[i] != MSG_ROUTING_NONE);
|
| - routing_ids[i] = MSG_ROUTING_NONE;
|
| - }
|
| -
|
| - Send(new WorkerMsg_PostMessage(
|
| - route_id_, message, message_port_ids, routing_ids));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::postExceptionToWorkerObject(
|
| - const WebString& error_message,
|
| - int line_number,
|
| - const WebString& source_url) {
|
| - Send(new WorkerHostMsg_PostExceptionToWorkerObject(
|
| - route_id_, error_message, line_number, source_url));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::postConsoleMessageToWorkerObject(
|
| - int source,
|
| - int type,
|
| - int level,
|
| - const WebString& message,
|
| - int line_number,
|
| - const WebString& source_url) {
|
| - WorkerHostMsg_PostConsoleMessageToWorkerObject_Params params;
|
| - params.source_identifier = source;
|
| - params.message_type = type;
|
| - params.message_level = level;
|
| - params.message = message;
|
| - params.line_number = line_number;
|
| - params.source_url = source_url;
|
| - Send(new WorkerHostMsg_PostConsoleMessageToWorkerObject(route_id_, params));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::confirmMessageFromWorkerObject(
|
| - bool has_pending_activity) {
|
| - Send(new WorkerHostMsg_ConfirmMessageFromWorkerObject(
|
| - route_id_, has_pending_activity));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::reportPendingActivity(bool has_pending_activity) {
|
| - Send(new WorkerHostMsg_ReportPendingActivity(
|
| - route_id_, has_pending_activity));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::workerContextClosed() {
|
| - Send(new WorkerHostMsg_WorkerContextClosed(route_id_));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::workerContextDestroyed() {
|
| - Send(new WorkerHostMsg_WorkerContextDestroyed(route_id_));
|
| - // Tell the stub that the worker has shutdown - frees this object.
|
| - if (stub_)
|
| - stub_->Shutdown();
|
| -}
|
| -
|
| -WebKit::WebWorker* WebWorkerClientProxy::createWorker(
|
| - WebKit::WebWorkerClient* client) {
|
| - // TODO(jam): see comment at top of file
|
| - //return new WebWorkerProxy(client, WorkerThread::current(),
|
| - // 0, appcache_host_id_);
|
| - return NULL;
|
| -}
|
| -
|
| -WebKit::WebNotificationPresenter*
|
| -WebWorkerClientProxy::notificationPresenter() {
|
| - // TODO(johnnyg): Notifications are not yet hooked up to workers.
|
| - // Coming soon.
|
| - NOTREACHED();
|
| - return NULL;
|
| -}
|
| -
|
| -WebApplicationCacheHost* WebWorkerClientProxy::createApplicationCacheHost(
|
| - WebKit::WebApplicationCacheHostClient* client) {
|
| - WorkerWebApplicationCacheHostImpl* host =
|
| - new WorkerWebApplicationCacheHostImpl(stub_->appcache_init_info(),
|
| - client);
|
| - // Remember the id of the instance we create so we have access to that
|
| - // value when creating nested dedicated workers in createWorker.
|
| - appcache_host_id_ = host->host_id();
|
| - return host;
|
| -}
|
| -
|
| -bool WebWorkerClientProxy::allowDatabase(WebFrame* frame,
|
| - const WebString& name,
|
| - const WebString& display_name,
|
| - unsigned long estimated_size) {
|
| - WebSecurityOrigin origin = frame->securityOrigin();
|
| - if (origin.isEmpty())
|
| - return false;
|
| -
|
| - bool result;
|
| - if (!Send(new WorkerProcessHostMsg_AllowDatabase(route_id_,
|
| - GURL(origin.toString().utf8()), name, display_name, estimated_size,
|
| - &result)))
|
| - return false;
|
| -
|
| - return result;
|
| -}
|
| -
|
| -void WebWorkerClientProxy::openFileSystem(
|
| - WebKit::WebFileSystem::Type type,
|
| - long long size,
|
| - bool create,
|
| - WebKit::WebFileSystemCallbacks* callbacks) {
|
| - ChildThread::current()->file_system_dispatcher()->OpenFileSystem(
|
| - stub_->url().GetOrigin(), static_cast<fileapi::FileSystemType>(type),
|
| - size, create, new WebFileSystemCallbackDispatcher(callbacks));
|
| -}
|
| -
|
| -void WebWorkerClientProxy::openFileSystem(
|
| - WebKit::WebFileSystem::Type type,
|
| - long long size,
|
| - WebKit::WebFileSystemCallbacks* callbacks) {
|
| - openFileSystem(type, size, true, callbacks);
|
| -}
|
| -
|
| -bool WebWorkerClientProxy::Send(IPC::Message* message) {
|
| - return WorkerThread::current()->Send(message);
|
| -}
|
| -
|
| -void WebWorkerClientProxy::EnsureWorkerContextTerminates() {
|
| - // Avoid a worker doing a while(1) from never exiting.
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kWebWorkerShareProcesses)) {
|
| - // Can't kill the process since there could be workers from other
|
| - // renderer process.
|
| - NOTIMPLEMENTED();
|
| - return;
|
| - }
|
| -
|
| - // This shuts down the process cleanly from the perspective of the browser
|
| - // process, and avoids the crashed worker infobar from appearing to the new
|
| - // page. It's ok to post several of theese, because the first executed task
|
| - // will exit the message loop and subsequent ones won't be executed.
|
| - MessageLoop::current()->PostDelayedTask(FROM_HERE,
|
| - kill_process_factory_.NewRunnableMethod(
|
| - &WebWorkerClientProxy::workerContextDestroyed),
|
| - kMaxTimeForRunawayWorkerMs);
|
| -}
|
|
|