summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-14 16:21:05 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-14 16:21:05 +0000
commit6e07d8b7d3b054975a2e717a5d0a6e60bc0c9444 (patch)
treecf8cb65ab8ffa28c7165b1e9400f9918bdb4c712 /chrome
parent5558fffd6a542a5eb0260ff4866ed9388438704b (diff)
downloadchromium_src-6e07d8b7d3b054975a2e717a5d0a6e60bc0c9444.zip
chromium_src-6e07d8b7d3b054975a2e717a5d0a6e60bc0c9444.tar.gz
chromium_src-6e07d8b7d3b054975a2e717a5d0a6e60bc0c9444.tar.bz2
Move worker code from chrome\worker to content\worker.
TBR=atwilson Review URL: http://codereview.chromium.org/6691004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78039 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/chrome.gyp32
-rw-r--r--chrome/chrome_dll.gypi2
-rw-r--r--chrome/chrome_tests.gypi2
-rw-r--r--chrome/worker/DEPS10
-rw-r--r--chrome/worker/websharedworker_stub.cc90
-rw-r--r--chrome/worker/websharedworker_stub.h50
-rw-r--r--chrome/worker/webworker_stub.cc73
-rw-r--r--chrome/worker/webworker_stub.h44
-rw-r--r--chrome/worker/webworker_stub_base.cc40
-rw-r--r--chrome/worker/webworker_stub_base.h48
-rw-r--r--chrome/worker/webworkerclient_proxy.cc200
-rw-r--r--chrome/worker/webworkerclient_proxy.h100
-rw-r--r--chrome/worker/worker_main.cc55
-rw-r--r--chrome/worker/worker_thread.cc127
-rw-r--r--chrome/worker/worker_thread.h54
-rw-r--r--chrome/worker/worker_uitest.cc772
-rw-r--r--chrome/worker/worker_webapplicationcachehost_impl.cc27
-rw-r--r--chrome/worker/worker_webapplicationcachehost_impl.h51
-rw-r--r--chrome/worker/worker_webkitclient_impl.cc258
-rw-r--r--chrome/worker/worker_webkitclient_impl.h89
20 files changed, 3 insertions, 2121 deletions
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index 5b7fcfd..87ecd89 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -28,9 +28,9 @@
'renderer',
'syncapi',
'utility',
- 'worker',
'service',
'../content/content.gyp:content_gpu',
+ '../content/content.gyp:content_worker',
'../printing/printing.gyp:printing',
'../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:inspector_resources',
],
@@ -662,36 +662,6 @@
],
},
{
- 'target_name': 'worker',
- 'type': '<(library)',
- 'msvs_guid': 'C78D02D0-A366-4EC6-A248-AA8E64C4BA18',
- 'dependencies': [
- '../base/base.gyp:base',
- '../skia/skia.gyp:skia',
- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit',
- ],
- 'sources': [
- 'worker/websharedworker_stub.cc',
- 'worker/websharedworker_stub.h',
- 'worker/webworker_stub_base.cc',
- 'worker/webworker_stub_base.h',
- 'worker/webworker_stub.cc',
- 'worker/webworker_stub.h',
- 'worker/webworkerclient_proxy.cc',
- 'worker/webworkerclient_proxy.h',
- 'worker/worker_main.cc',
- 'worker/worker_thread.cc',
- 'worker/worker_thread.h',
- 'worker/worker_webapplicationcachehost_impl.cc',
- 'worker/worker_webapplicationcachehost_impl.h',
- 'worker/worker_webkitclient_impl.cc',
- 'worker/worker_webkitclient_impl.h',
- ],
- 'include_dirs': [
- '..',
- ],
- },
- {
# Provides a syncapi dynamic library target from checked-in binaries,
# or from compiling a stub implementation.
'target_name': 'syncapi',
diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi
index 94d3af5..eb35f68 100644
--- a/chrome/chrome_dll.gypi
+++ b/chrome/chrome_dll.gypi
@@ -81,7 +81,7 @@
'chrome_dll_version',
'chrome_resources',
'installer_util_strings',
- 'worker',
+ '../content/content.gyp:content_worker',
'../printing/printing.gyp:printing',
'../net/net.gyp:net_resources',
'../third_party/cld/cld.gyp:cld',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 5e8ff4d..fcf5ba0 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -595,10 +595,10 @@
'test/ui/sandbox_uitests.cc',
'test/ui/sunspider_uitest.cc',
'test/ui/v8_benchmark_uitest.cc',
- 'worker/worker_uitest.cc',
'../content/browser/appcache/appcache_ui_test.cc',
'../content/browser/in_process_webkit/dom_storage_uitest.cc',
'../content/browser/renderer_host/resource_dispatcher_host_uitest.cc',
+ '../content/worker/worker_uitest.cc',
],
'conditions': [
['target_arch!="arm"', {
diff --git a/chrome/worker/DEPS b/chrome/worker/DEPS
deleted file mode 100644
index 12aee6e..0000000
--- a/chrome/worker/DEPS
+++ /dev/null
@@ -1,10 +0,0 @@
-include_rules = [
- "+chrome/app", # For UI test
- "+chrome/browser/worker_host", # For UI test.
- "+chrome/renderer",
- "+chrome/worker",
- "+sandbox/src",
- "+webkit/appcache",
- "+webkit/glue",
-]
-
diff --git a/chrome/worker/websharedworker_stub.cc b/chrome/worker/websharedworker_stub.cc
deleted file mode 100644
index 4599a77..0000000
--- a/chrome/worker/websharedworker_stub.cc
+++ /dev/null
@@ -1,90 +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/websharedworker_stub.h"
-
-#include "content/common/child_thread.h"
-#include "content/common/file_system/file_system_dispatcher.h"
-#include "content/common/webmessageportchannel_impl.h"
-#include "content/common/worker_messages.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebSharedWorker.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
-
-WebSharedWorkerStub::WebSharedWorkerStub(
- const string16& name, int route_id,
- const WorkerAppCacheInitInfo& appcache_init_info)
- : WebWorkerStubBase(route_id, appcache_init_info),
- name_(name),
- started_(false) {
- // TODO(atwilson): Add support for NaCl when they support MessagePorts.
- impl_ = WebKit::WebSharedWorker::create(client());
-}
-
-WebSharedWorkerStub::~WebSharedWorkerStub() {
- impl_->clientDestroyed();
-}
-
-bool WebSharedWorkerStub::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(WebSharedWorkerStub, message)
- IPC_MESSAGE_HANDLER(WorkerMsg_StartWorkerContext, OnStartWorkerContext)
- IPC_MESSAGE_HANDLER(WorkerMsg_TerminateWorkerContext,
- OnTerminateWorkerContext)
- IPC_MESSAGE_HANDLER(WorkerMsg_Connect, OnConnect)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void WebSharedWorkerStub::OnChannelError() {
- OnTerminateWorkerContext();
-}
-
-const GURL& WebSharedWorkerStub::url() const {
- return url_;
-}
-
-void WebSharedWorkerStub::OnStartWorkerContext(
- const GURL& url, const string16& user_agent, const string16& source_code) {
- // Ignore multiple attempts to start this worker (can happen if two pages
- // try to start it simultaneously).
- if (started_)
- return;
-
- impl_->startWorkerContext(url, name_, user_agent, source_code, 0);
- started_ = true;
- url_ = url;
-
- // Process any pending connections.
- for (PendingConnectInfoList::const_iterator iter = pending_connects_.begin();
- iter != pending_connects_.end();
- ++iter) {
- OnConnect(iter->first, iter->second);
- }
- pending_connects_.clear();
-}
-
-void WebSharedWorkerStub::OnConnect(int sent_message_port_id, int routing_id) {
- if (started_) {
- WebKit::WebMessagePortChannel* channel =
- new WebMessagePortChannelImpl(routing_id, sent_message_port_id);
- impl_->connect(channel, NULL);
- } else {
- // If two documents try to load a SharedWorker at the same time, the
- // WorkerMsg_Connect for one of the documents can come in before the
- // worker is started. Just queue up the connect and deliver it once the
- // worker starts.
- PendingConnectInfo pending_connect(sent_message_port_id, routing_id);
- pending_connects_.push_back(pending_connect);
- }
-}
-
-void WebSharedWorkerStub::OnTerminateWorkerContext() {
- impl_->terminateWorkerContext();
-
- // Call the client to make sure context exits.
- EnsureWorkerContextTerminates();
- started_ = false;
-}
diff --git a/chrome/worker/websharedworker_stub.h b/chrome/worker/websharedworker_stub.h
deleted file mode 100644
index 04f07af..0000000
--- a/chrome/worker/websharedworker_stub.h
+++ /dev/null
@@ -1,50 +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.
-
-#ifndef CHROME_WORKER_WEBSHAREDWORKER_STUB_H_
-#define CHROME_WORKER_WEBSHAREDWORKER_STUB_H_
-#pragma once
-
-#include "chrome/worker/webworker_stub_base.h"
-#include "chrome/worker/webworkerclient_proxy.h"
-#include "googleurl/src/gurl.h"
-
-namespace WebKit {
-class WebSharedWorker;
-}
-
-// This class creates a WebSharedWorker, and translates incoming IPCs to the
-// appropriate WebSharedWorker APIs.
-class WebSharedWorkerStub : public WebWorkerStubBase {
- public:
- WebSharedWorkerStub(const string16& name, int route_id,
- const WorkerAppCacheInitInfo& appcache_init_info);
-
- // IPC::Channel::Listener implementation.
- virtual bool OnMessageReceived(const IPC::Message& message);
- virtual void OnChannelError();
-
- virtual const GURL& url() const;
-
- private:
- virtual ~WebSharedWorkerStub();
-
- void OnConnect(int sent_message_port_id, int routing_id);
- void OnStartWorkerContext(
- const GURL& url, const string16& user_agent, const string16& source_code);
- void OnTerminateWorkerContext();
-
- WebKit::WebSharedWorker* impl_;
- string16 name_;
- bool started_;
- GURL url_;
-
- typedef std::pair<int, int> PendingConnectInfo;
- typedef std::vector<PendingConnectInfo> PendingConnectInfoList;
- PendingConnectInfoList pending_connects_;
-
- DISALLOW_COPY_AND_ASSIGN(WebSharedWorkerStub);
-};
-
-#endif // CHROME_WORKER_WEBSHAREDWORKER_STUB_H_
diff --git a/chrome/worker/webworker_stub.cc b/chrome/worker/webworker_stub.cc
deleted file mode 100644
index 8d7a75f..0000000
--- a/chrome/worker/webworker_stub.cc
+++ /dev/null
@@ -1,73 +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/webworker_stub.h"
-
-#include "base/command_line.h"
-#include "content/common/child_thread.h"
-#include "content/common/file_system/file_system_dispatcher.h"
-#include "content/common/webmessageportchannel_impl.h"
-#include "content/common/worker_messages.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::WebWorker;
-
-WebWorkerStub::WebWorkerStub(const GURL& url, int route_id,
- const WorkerAppCacheInitInfo& appcache_init_info)
- : WebWorkerStubBase(route_id, appcache_init_info),
- ALLOW_THIS_IN_INITIALIZER_LIST(impl_(WebWorker::create(client()))),
- url_(url) {
-}
-
-WebWorkerStub::~WebWorkerStub() {
- impl_->clientDestroyed();
-}
-
-void WebWorkerStub::OnChannelError() {
- OnTerminateWorkerContext();
-}
-
-const GURL& WebWorkerStub::url() const {
- return url_;
-}
-
-bool WebWorkerStub::OnMessageReceived(const IPC::Message& message) {
- if (!impl_)
- return false;
-
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(WebWorkerStub, message)
- IPC_MESSAGE_FORWARD(WorkerMsg_StartWorkerContext, impl_,
- WebWorker::startWorkerContext)
- IPC_MESSAGE_HANDLER(WorkerMsg_TerminateWorkerContext,
- OnTerminateWorkerContext)
- IPC_MESSAGE_HANDLER(WorkerMsg_PostMessage, OnPostMessage)
- IPC_MESSAGE_FORWARD(WorkerMsg_WorkerObjectDestroyed, impl_,
- WebWorker::workerObjectDestroyed)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void WebWorkerStub::OnTerminateWorkerContext() {
- impl_->terminateWorkerContext();
-
- // Call the client to make sure context exits.
- EnsureWorkerContextTerminates();
-}
-
-void WebWorkerStub::OnPostMessage(
- const string16& message,
- const std::vector<int>& sent_message_port_ids,
- const std::vector<int>& new_routing_ids) {
- WebKit::WebMessagePortChannelArray channels(sent_message_port_ids.size());
- for (size_t i = 0; i < sent_message_port_ids.size(); i++) {
- channels[i] = new WebMessagePortChannelImpl(
- new_routing_ids[i], sent_message_port_ids[i]);
- }
-
- impl_->postMessageToWorkerContext(message, channels);
-}
diff --git a/chrome/worker/webworker_stub.h b/chrome/worker/webworker_stub.h
deleted file mode 100644
index cc0d75d..0000000
--- a/chrome/worker/webworker_stub.h
+++ /dev/null
@@ -1,44 +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.
-
-#ifndef CHROME_WORKER_WEBWORKER_STUB_H_
-#define CHROME_WORKER_WEBWORKER_STUB_H_
-#pragma once
-
-#include "chrome/worker/webworker_stub_base.h"
-#include "chrome/worker/webworkerclient_proxy.h"
-#include "googleurl/src/gurl.h"
-
-namespace WebKit {
-class WebWorker;
-}
-
-// This class creates a WebWorker, and translates incoming IPCs to the
-// appropriate WebWorker APIs.
-class WebWorkerStub : public WebWorkerStubBase {
- public:
- WebWorkerStub(const GURL& url, int route_id,
- const WorkerAppCacheInitInfo& appcache_init_info);
-
- // IPC::Channel::Listener implementation.
- virtual bool OnMessageReceived(const IPC::Message& message);
- virtual void OnChannelError();
-
- virtual const GURL& url() const;
-
- private:
- virtual ~WebWorkerStub();
-
- void OnTerminateWorkerContext();
- void OnPostMessage(const string16& message,
- const std::vector<int>& sent_message_port_ids,
- const std::vector<int>& new_routing_ids);
-
- WebKit::WebWorker* impl_;
- GURL url_;
-
- DISALLOW_COPY_AND_ASSIGN(WebWorkerStub);
-};
-
-#endif // CHROME_WORKER_WEBWORKER_STUB_H_
diff --git a/chrome/worker/webworker_stub_base.cc b/chrome/worker/webworker_stub_base.cc
deleted file mode 100644
index 93ad75d..0000000
--- a/chrome/worker/webworker_stub_base.cc
+++ /dev/null
@@ -1,40 +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/webworker_stub_base.h"
-
-#include "base/compiler_specific.h"
-#include "chrome/worker/worker_thread.h"
-#include "content/common/child_process.h"
-
-WebWorkerStubBase::WebWorkerStubBase(
- int route_id, const WorkerAppCacheInitInfo& appcache_init_info)
- : route_id_(route_id),
- appcache_init_info_(appcache_init_info),
- ALLOW_THIS_IN_INITIALIZER_LIST(client_(route_id, this)) {
-
- WorkerThread* workerThread = WorkerThread::current();
- DCHECK(workerThread);
- workerThread->AddWorkerStub(this);
- // Start processing incoming IPCs for this worker.
- workerThread->AddRoute(route_id_, this);
- ChildProcess::current()->AddRefProcess();
-}
-
-WebWorkerStubBase::~WebWorkerStubBase() {
- WorkerThread* workerThread = WorkerThread::current();
- DCHECK(workerThread);
- workerThread->RemoveWorkerStub(this);
- workerThread->RemoveRoute(route_id_);
- ChildProcess::current()->ReleaseProcess();
-}
-
-void WebWorkerStubBase::Shutdown() {
- // The worker has exited - free ourselves and the client.
- delete this;
-}
-
-void WebWorkerStubBase::EnsureWorkerContextTerminates() {
- client_.EnsureWorkerContextTerminates();
-}
diff --git a/chrome/worker/webworker_stub_base.h b/chrome/worker/webworker_stub_base.h
deleted file mode 100644
index 2ab2ac7..0000000
--- a/chrome/worker/webworker_stub_base.h
+++ /dev/null
@@ -1,48 +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.
-
-#ifndef CHROME_WORKER_WEBWORKER_STUB_BASE_H_
-#define CHROME_WORKER_WEBWORKER_STUB_BASE_H_
-#pragma once
-
-#include "base/scoped_ptr.h"
-#include "chrome/worker/webworkerclient_proxy.h"
-#include "chrome/worker/worker_webapplicationcachehost_impl.h"
-#include "ipc/ipc_channel.h"
-
-// This class is the common base class for both WebWorkerStub and
-// WebSharedWorkerStub and contains common setup/teardown functionality.
-class WebWorkerStubBase : public IPC::Channel::Listener {
- public:
- WebWorkerStubBase(int route_id,
- const WorkerAppCacheInitInfo& appcache_init_info);
- virtual ~WebWorkerStubBase();
-
- // Invoked when the WebWorkerClientProxy is shutting down.
- void Shutdown();
-
- // Called after terminating the worker context to make sure that the worker
- // actually terminates (is not stuck in an infinite loop).
- void EnsureWorkerContextTerminates();
-
- WebWorkerClientProxy* client() { return &client_; }
-
- const WorkerAppCacheInitInfo& appcache_init_info() const {
- return appcache_init_info_;
- }
-
- // Returns the script url of this worker.
- virtual const GURL& url() const = 0;
-
- private:
- int route_id_;
- WorkerAppCacheInitInfo appcache_init_info_;
-
- // WebWorkerClient that responds to outgoing API calls from the worker object.
- WebWorkerClientProxy client_;
-
- DISALLOW_COPY_AND_ASSIGN(WebWorkerStubBase);
-};
-
-#endif // CHROME_WORKER_WEBWORKER_STUB_BASE_H_
diff --git a/chrome/worker/webworkerclient_proxy.cc b/chrome/worker/webworkerclient_proxy.cc
deleted file mode 100644
index 951c2a4..0000000
--- a/chrome/worker/webworkerclient_proxy.cc
+++ /dev/null
@@ -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);
-}
diff --git a/chrome/worker/webworkerclient_proxy.h b/chrome/worker/webworkerclient_proxy.h
deleted file mode 100644
index b849009..0000000
--- a/chrome/worker/webworkerclient_proxy.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2010 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.
-
-#ifndef CHROME_WORKER_WEBWORKERCLIENT_PROXY_H_
-#define CHROME_WORKER_WEBWORKERCLIENT_PROXY_H_
-#pragma once
-
-#include "base/basictypes.h"
-#include "base/task.h"
-#include "ipc/ipc_channel.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystem.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebWorkerClient.h"
-
-namespace WebKit {
-class WebApplicationCacheHost;
-class WebApplicationCacheHostClient;
-class WebFrame;
-class WebWorker;
-}
-
-class WebWorkerStubBase;
-
-// This class receives IPCs from the renderer and calls the WebCore::Worker
-// implementation (after the data types have been converted by glue code). It
-// is also called by the worker code and converts these function calls into
-// IPCs that are sent to the renderer, where they're converted back to function
-// calls by WebWorkerProxy.
-class WebWorkerClientProxy : public WebKit::WebWorkerClient {
- public:
- WebWorkerClientProxy(int route_id, WebWorkerStubBase* stub);
- virtual ~WebWorkerClientProxy();
-
- // WebWorkerClient implementation.
- virtual void postMessageToWorkerObject(
- const WebKit::WebString& message,
- const WebKit::WebMessagePortChannelArray& channel);
- virtual void postExceptionToWorkerObject(
- const WebKit::WebString& error_message,
- int line_number,
- const WebKit::WebString& source_url);
- // TODO(caseq): The overload before is obsolete and is preserved for
- // WebKit/chromium compatibility only (pure virtual is base class).
- // Should be removed once WebKit part is updated.
- virtual void postConsoleMessageToWorkerObject(
- int destination,
- int source,
- int type,
- int level,
- const WebKit::WebString& message,
- int line_number,
- const WebKit::WebString& source_url) {
- }
- virtual void postConsoleMessageToWorkerObject(
- int source,
- int type,
- int level,
- const WebKit::WebString& message,
- int line_number,
- const WebKit::WebString& source_url);
- virtual void confirmMessageFromWorkerObject(bool has_pending_activity);
- virtual void reportPendingActivity(bool has_pending_activity);
- virtual void workerContextClosed();
- virtual void workerContextDestroyed();
- virtual WebKit::WebWorker* createWorker(WebKit::WebWorkerClient* client);
-
- virtual WebKit::WebNotificationPresenter* notificationPresenter();
-
- virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost(
- WebKit::WebApplicationCacheHostClient* client);
-
- virtual bool allowDatabase(WebKit::WebFrame* frame,
- const WebKit::WebString& name,
- const WebKit::WebString& display_name,
- unsigned long estimated_size);
-
- virtual void openFileSystem(WebKit::WebFileSystem::Type type,
- long long size,
- bool create,
- WebKit::WebFileSystemCallbacks* callbacks);
-
- // TODO(adamk): Remove this method once it's gone from WebKit.
- virtual void openFileSystem(WebKit::WebFileSystem::Type type,
- long long size,
- WebKit::WebFileSystemCallbacks* callbacks);
-
- void EnsureWorkerContextTerminates();
-
- private:
- bool Send(IPC::Message* message);
-
- int route_id_;
- int appcache_host_id_;
- WebWorkerStubBase* stub_;
- ScopedRunnableMethodFactory<WebWorkerClientProxy> kill_process_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(WebWorkerClientProxy);
-};
-
-#endif // CHROME_WORKER_WEBWORKERCLIENT_PROXY_H_
diff --git a/chrome/worker/worker_main.cc b/chrome/worker/worker_main.cc
deleted file mode 100644
index 7bab77c..0000000
--- a/chrome/worker/worker_main.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2010 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 "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/message_loop.h"
-#include "base/string_util.h"
-#include "base/threading/platform_thread.h"
-#include "chrome/worker/worker_thread.h"
-#include "content/common/child_process.h"
-#include "content/common/hi_res_timer_manager.h"
-#include "content/common/main_function_params.h"
-#include "ui/base/system_monitor/system_monitor.h"
-
-#if defined(OS_WIN)
-#include "content/common/sandbox_init_wrapper.h"
-#include "sandbox/src/sandbox.h"
-#endif
-
-// Mainline routine for running as the worker process.
-int WorkerMain(const MainFunctionParams& parameters) {
- // The main message loop of the worker process.
- MessageLoop main_message_loop;
- base::PlatformThread::SetName("CrWorkerMain");
-
- ui::SystemMonitor system_monitor;
- HighResolutionTimerManager hi_res_timer_manager;
-
- ChildProcess worker_process;
- worker_process.set_main_thread(new WorkerThread());
-#if defined(OS_WIN)
- sandbox::TargetServices* target_services =
- parameters.sandbox_info_.TargetServices();
- if (!target_services)
- return false;
-
- // Cause advapi32 to load before the sandbox is turned on.
- unsigned int dummy_rand;
- rand_s(&dummy_rand);
-
- target_services->LowerToken();
-#endif
-
- const CommandLine& parsed_command_line = parameters.command_line_;
- if (parsed_command_line.HasSwitch(switches::kWaitForDebugger)) {
- ChildProcess::WaitForDebugger("Worker");
- }
-
- // Load the accelerator table from the browser executable and tell the
- // message loop to use it when translating messages.
- MessageLoop::current()->Run();
-
- return 0;
-}
diff --git a/chrome/worker/worker_thread.cc b/chrome/worker/worker_thread.cc
deleted file mode 100644
index 5c50f7c..0000000
--- a/chrome/worker/worker_thread.cc
+++ /dev/null
@@ -1,127 +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/worker_thread.h"
-
-#include "base/command_line.h"
-#include "base/lazy_instance.h"
-#include "base/threading/thread_local.h"
-#include "chrome/worker/webworker_stub.h"
-#include "chrome/worker/websharedworker_stub.h"
-#include "chrome/worker/worker_webkitclient_impl.h"
-#include "content/common/appcache/appcache_dispatcher.h"
-#include "content/common/content_switches.h"
-#include "content/common/db_message_filter.h"
-#include "content/common/web_database_observer_impl.h"
-#include "content/common/worker_messages.h"
-#include "ipc/ipc_sync_channel.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlobRegistry.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebRuntimeFeatures.h"
-#include "webkit/glue/webkit_glue.h"
-
-using WebKit::WebRuntimeFeatures;
-
-static base::LazyInstance<base::ThreadLocalPointer<WorkerThread> > lazy_tls(
- base::LINKER_INITIALIZED);
-
-
-WorkerThread::WorkerThread() {
- lazy_tls.Pointer()->Set(this);
- webkit_client_.reset(new WorkerWebKitClientImpl);
- WebKit::initialize(webkit_client_.get());
-
- appcache_dispatcher_.reset(new AppCacheDispatcher(this));
-
- web_database_observer_impl_.reset(new WebDatabaseObserverImpl(this));
- WebKit::WebDatabase::setObserver(web_database_observer_impl_.get());
- db_message_filter_ = new DBMessageFilter();
- channel()->AddFilter(db_message_filter_.get());
-
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
-
- webkit_glue::EnableWebCoreLogChannels(
- command_line.GetSwitchValueASCII(switches::kWebCoreLogChannels));
-
- WebKit::WebRuntimeFeatures::enableDatabase(
- !command_line.HasSwitch(switches::kDisableDatabases));
-
- WebKit::WebRuntimeFeatures::enableApplicationCache(
- !command_line.HasSwitch(switches::kDisableApplicationCache));
-
-#if defined(OS_WIN)
- // We don't yet support notifications on non-Windows, so hide it from pages.
- WebRuntimeFeatures::enableNotifications(
- !command_line.HasSwitch(switches::kDisableDesktopNotifications));
-#endif
-
- WebRuntimeFeatures::enableSockets(
- !command_line.HasSwitch(switches::kDisableWebSockets));
-
- WebRuntimeFeatures::enableFileSystem(
- !command_line.HasSwitch(switches::kDisableFileSystem));
-
- WebRuntimeFeatures::enableWebGL(
- !command_line.HasSwitch(switches::kDisable3DAPIs) &&
- !command_line.HasSwitch(switches::kDisableExperimentalWebGL));
-}
-
-WorkerThread::~WorkerThread() {
- // Shutdown in reverse of the initialization order.
- channel()->RemoveFilter(db_message_filter_.get());
- db_message_filter_ = NULL;
-
- WebKit::shutdown();
- lazy_tls.Pointer()->Set(NULL);
-}
-
-WorkerThread* WorkerThread::current() {
- return lazy_tls.Pointer()->Get();
-}
-
-bool WorkerThread::OnControlMessageReceived(const IPC::Message& msg) {
- // Appcache messages are handled by a delegate.
- if (appcache_dispatcher_->OnMessageReceived(msg))
- return true;
-
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(WorkerThread, msg)
- IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateWorker)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void WorkerThread::OnCreateWorker(
- const WorkerProcessMsg_CreateWorker_Params& params) {
- WorkerAppCacheInitInfo appcache_init_info(
- params.is_shared, params.creator_process_id,
- params.creator_appcache_host_id,
- params.shared_worker_appcache_id);
-
- // WebWorkerStub and WebSharedWorkerStub own themselves.
- if (params.is_shared)
- new WebSharedWorkerStub(params.name, params.route_id, appcache_init_info);
- else
- new WebWorkerStub(params.url, params.route_id, appcache_init_info);
-}
-
-// The browser process is likely dead. Terminate all workers.
-void WorkerThread::OnChannelError() {
- set_on_channel_error_called(true);
-
- for (WorkerStubsList::iterator it = worker_stubs_.begin();
- it != worker_stubs_.end(); ++it) {
- (*it)->OnChannelError();
- }
-}
-
-void WorkerThread::RemoveWorkerStub(WebWorkerStubBase* stub) {
- worker_stubs_.erase(stub);
-}
-
-void WorkerThread::AddWorkerStub(WebWorkerStubBase* stub) {
- worker_stubs_.insert(stub);
-}
diff --git a/chrome/worker/worker_thread.h b/chrome/worker/worker_thread.h
deleted file mode 100644
index efc7b16..0000000
--- a/chrome/worker/worker_thread.h
+++ /dev/null
@@ -1,54 +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.
-
-#ifndef CHROME_WORKER_WORKER_THREAD_H_
-#define CHROME_WORKER_WORKER_THREAD_H_
-#pragma once
-
-#include <set>
-
-#include "content/common/child_thread.h"
-
-class GURL;
-class AppCacheDispatcher;
-class DBMessageFilter;
-class WebDatabaseObserverImpl;
-class WebWorkerStubBase;
-class WorkerWebKitClientImpl;
-struct WorkerProcessMsg_CreateWorker_Params;
-
-class WorkerThread : public ChildThread {
- public:
- WorkerThread();
- ~WorkerThread();
-
- // Returns the one worker thread.
- static WorkerThread* current();
-
- // Invoked from stub constructors/destructors. Stubs own themselves.
- void AddWorkerStub(WebWorkerStubBase* stub);
- void RemoveWorkerStub(WebWorkerStubBase* stub);
-
- AppCacheDispatcher* appcache_dispatcher() {
- return appcache_dispatcher_.get();
- }
-
- private:
- virtual bool OnControlMessageReceived(const IPC::Message& msg);
- virtual void OnChannelError();
-
- void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params);
-
- scoped_ptr<WorkerWebKitClientImpl> webkit_client_;
- scoped_ptr<AppCacheDispatcher> appcache_dispatcher_;
- scoped_ptr<WebDatabaseObserverImpl> web_database_observer_impl_;
- scoped_refptr<DBMessageFilter> db_message_filter_;
-
- typedef std::set<WebWorkerStubBase*> WorkerStubsList;
- WorkerStubsList worker_stubs_;
-
- DISALLOW_COPY_AND_ASSIGN(WorkerThread);
-};
-
-#endif // CHROME_WORKER_WORKER_THREAD_H_
diff --git a/chrome/worker/worker_uitest.cc b/chrome/worker/worker_uitest.cc
deleted file mode 100644
index 6cfbb47..0000000
--- a/chrome/worker/worker_uitest.cc
+++ /dev/null
@@ -1,772 +0,0 @@
-// Copyright (c) 2011 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 "base/file_path.h"
-#include "base/string_util.h"
-#include "base/test/test_timeouts.h"
-#include "base/threading/platform_thread.h"
-#include "chrome/app/chrome_command_ids.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/automation/browser_proxy.h"
-#include "chrome/test/automation/tab_proxy.h"
-#include "chrome/test/ui/ui_layout_test.h"
-#include "chrome/test/ui_test_utils.h"
-#include "content/browser/worker_host/worker_service.h"
-#include "net/test/test_server.h"
-
-namespace {
-
-const char kTestCompleteCookie[] = "status";
-const char kTestCompleteSuccess[] = "OK";
-const FilePath::CharType* kTestDir =
- FILE_PATH_LITERAL("workers");
-const FilePath::CharType* kManySharedWorkersFile =
- FILE_PATH_LITERAL("many_shared_workers.html");
-const FilePath::CharType* kManyWorkersFile =
- FILE_PATH_LITERAL("many_workers.html");
-const FilePath::CharType* kQuerySharedWorkerShutdownFile =
- FILE_PATH_LITERAL("queued_shared_worker_shutdown.html");
-const FilePath::CharType* kShutdownSharedWorkerFile =
- FILE_PATH_LITERAL("shutdown_shared_worker.html");
-const FilePath::CharType* kSingleSharedWorkersFile =
- FILE_PATH_LITERAL("single_shared_worker.html");
-const FilePath::CharType* kWorkerClose =
- FILE_PATH_LITERAL("worker_close.html");
-
-} // anonymous namespace
-
-class WorkerTest : public UILayoutTest {
- protected:
- virtual ~WorkerTest() { }
-
- void RunTest(const FilePath& test_case) {
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
-
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case);
- ASSERT_TRUE(tab->NavigateToURL(url));
-
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- }
-
- void RunIncognitoTest(const FilePath& test_case) {
- scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
-
- // Open an Incognito window.
- ASSERT_TRUE(browser->RunCommand(IDC_NEW_INCOGNITO_WINDOW));
- scoped_refptr<BrowserProxy> incognito(automation()->GetBrowserWindow(1));
- ASSERT_TRUE(incognito.get());
- int window_count;
- ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count));
- ASSERT_EQ(2, window_count);
-
- scoped_refptr<TabProxy> tab(incognito->GetTab(0));
- ASSERT_TRUE(tab.get());
-
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case);
- ASSERT_TRUE(tab->NavigateToURL(url));
-
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
-
- // Close the incognito window
- ASSERT_TRUE(incognito->RunCommand(IDC_CLOSE_WINDOW));
- ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count));
- ASSERT_EQ(1, window_count);
-
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- }
-
- bool WaitForProcessCountToBe(int tabs, int workers) {
- // The 1 is for the browser process.
- int number_of_processes = 1 + workers +
- (ProxyLauncher::in_process_renderer() ? 0 : tabs);
-#if defined(OS_LINUX)
- // On Linux, we also have a zygote process and a sandbox host process.
- number_of_processes += 2;
-#endif
-
- int cur_process_count;
- for (int i = 0; i < 100; ++i) {
- cur_process_count = 0;
- if (!GetBrowserProcessCount(&cur_process_count))
- return false;
- if (cur_process_count == number_of_processes)
- return true;
-
- // Sometimes the worker processes can take a while to shut down on the
- // bots, so use a longer timeout period to avoid spurious failures.
- base::PlatformThread::Sleep(TestTimeouts::action_max_timeout_ms() / 100);
- }
-
- EXPECT_EQ(number_of_processes, cur_process_count);
- return false;
- }
-
- void RunWorkerFastLayoutTest(const std::string& test_case_file_name) {
- FilePath fast_test_dir;
- fast_test_dir = fast_test_dir.AppendASCII("fast");
-
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("workers");
- InitializeForLayoutTest(fast_test_dir, worker_test_dir, kNoHttpPort);
-
- // Worker tests also rely on common files in js/resources.
- FilePath js_dir = fast_test_dir.AppendASCII("js");
- FilePath resource_dir;
- resource_dir = resource_dir.AppendASCII("resources");
- AddResourceForLayoutTest(js_dir, resource_dir);
-
- printf("Test: %s\n", test_case_file_name.c_str());
- RunLayoutTest(test_case_file_name, kNoHttpPort);
-
- // Navigate to a blank page so that any workers are cleaned up.
- // This helps leaks trackers do a better job of reporting.
- scoped_refptr<TabProxy> tab(GetActiveTab());
- GURL about_url(chrome::kAboutBlankURL);
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(about_url));
- }
-
- void RunWorkerStorageLayoutTest(const std::string& test_case_file_name) {
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("fast");
- worker_test_dir = worker_test_dir.AppendASCII("workers");
-
- FilePath storage_test_dir;
- storage_test_dir = storage_test_dir.AppendASCII("storage");
- InitializeForLayoutTest(worker_test_dir, storage_test_dir, kNoHttpPort);
-
- // Storage worker tests also rely on common files in 'resources'.
- FilePath resource_dir;
- resource_dir = resource_dir.AppendASCII("resources");
- AddResourceForLayoutTest(worker_test_dir.Append(storage_test_dir),
- resource_dir);
-
- printf("Test: %s\n", test_case_file_name.c_str());
- RunLayoutTest(test_case_file_name, kNoHttpPort);
-
- // Navigate to a blank page so that any workers are cleaned up.
- // This helps leaks trackers do a better job of reporting.
- scoped_refptr<TabProxy> tab(GetActiveTab());
- GURL about_url(chrome::kAboutBlankURL);
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(about_url));
- }
-
- bool NavigateAndWaitForAuth(TabProxy* tab, const GURL& url) {
- // Pass a large number of navigations to tell the tab to block until an auth
- // dialog pops up.
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED,
- tab->NavigateToURLBlockUntilNavigationsComplete(url, 100));
- return tab->NeedsAuth();
- }
-};
-
-
-TEST_F(WorkerTest, SingleWorker) {
- RunTest(FilePath(FILE_PATH_LITERAL("single_worker.html")));
-}
-
-TEST_F(WorkerTest, MultipleWorkers) {
- RunTest(FilePath(FILE_PATH_LITERAL("multi_worker.html")));
-}
-
-TEST_F(WorkerTest, SingleSharedWorker) {
- RunTest(FilePath(FILE_PATH_LITERAL("single_worker.html?shared=true")));
-}
-
-TEST_F(WorkerTest, MultipleSharedWorkers) {
- RunTest(FilePath(FILE_PATH_LITERAL("multi_worker.html?shared=true")));
-}
-
-TEST_F(WorkerTest, TerminateQueuedWorkers) {
- ASSERT_TRUE(WaitForProcessCountToBe(1, 0));
- RunTest(FilePath(FILE_PATH_LITERAL("terminate_queued_workers.html")));
- // Make sure all workers exit.
- ASSERT_TRUE(WaitForProcessCountToBe(1, 0));
-}
-
-#if defined(OS_LINUX)
-// http://crbug.com/30021
-#define IncognitoSharedWorkers FLAKY_IncognitoSharedWorkers
-#endif
-
-// Incognito windows should not share workers with non-incognito windows
-TEST_F(WorkerTest, IncognitoSharedWorkers) {
- // Load a non-incognito tab and have it create a shared worker
- RunTest(FilePath(FILE_PATH_LITERAL("incognito_worker.html")));
- // Incognito worker should not share with non-incognito
- RunIncognitoTest(FilePath(FILE_PATH_LITERAL("incognito_worker.html")));
-}
-
-const FilePath::CharType kDocRoot[] =
- FILE_PATH_LITERAL("chrome/test/data/workers");
-
-#if defined(OS_WIN)
-// http://crbug.com/33344 - NavigateAndWaitForAuth times out on the Windows
-// build bots.
-#define WorkerHttpAuth DISABLED_WorkerHttpAuth
-#endif
-// Make sure that auth dialog is displayed from worker context.
-TEST_F(WorkerTest, WorkerHttpAuth) {
- net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
- ASSERT_TRUE(test_server.Start());
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
-
- GURL url = test_server.GetURL("files/worker_auth.html");
- EXPECT_TRUE(NavigateAndWaitForAuth(tab, url));
-}
-
-#if defined(OS_WIN)
-// http://crbug.com/33344 - NavigateAndWaitForAuth times out on the Windows
-// build bots.
-#define SharedWorkerHttpAuth DISABLED_SharedWorkerHttpAuth
-#endif
-// Make sure that auth dialog is displayed from shared worker context.
-TEST_F(WorkerTest, SharedWorkerHttpAuth) {
- net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
- ASSERT_TRUE(test_server.Start());
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
-
- GURL url = test_server.GetURL("files/shared_worker_auth.html");
- EXPECT_TRUE(NavigateAndWaitForAuth(tab, url));
- // TODO(atwilson): Add support to automation framework to test for auth
- // dialogs displayed by non-navigating tabs.
-}
-
-TEST_F(WorkerTest, StressJSExecution) {
- RunWorkerFastLayoutTest("stress-js-execution.html");
-}
-
-TEST_F(WorkerTest, UseMachineStack) {
- RunWorkerFastLayoutTest("use-machine-stack.html");
-}
-
-TEST_F(WorkerTest, WorkerCall) {
- RunWorkerFastLayoutTest("worker-call.html");
-}
-
-// Crashy, http://crbug.com/35965.
-// Flaky, http://crbug.com/36555.
-TEST_F(WorkerTest, DISABLED_WorkerClonePort) {
- RunWorkerFastLayoutTest("worker-cloneport.html");
-}
-
-// Flaky, http://crbug.com/59780.
-TEST_F(WorkerTest, FLAKY_WorkerCloseFast) {
- RunWorkerFastLayoutTest("worker-close.html");
-}
-
-TEST_F(WorkerTest, WorkerConstructor) {
- RunWorkerFastLayoutTest("worker-constructor.html");
-}
-
-TEST_F(WorkerTest, WorkerContextGc) {
- RunWorkerFastLayoutTest("worker-context-gc.html");
-}
-
-TEST_F(WorkerTest, WorkerContextMultiPort) {
- RunWorkerFastLayoutTest("worker-context-multi-port.html");
-}
-
-TEST_F(WorkerTest, WorkerEventListener) {
- RunWorkerFastLayoutTest("worker-event-listener.html");
-}
-
-TEST_F(WorkerTest, WorkerGC) {
- RunWorkerFastLayoutTest("worker-gc.html");
-}
-
-// worker-lifecycle.html relies on layoutTestController.workerThreadCount
-// which is not currently implemented. http://crbug.com/45168
-TEST_F(WorkerTest, DISABLED_WorkerLifecycle) {
- RunWorkerFastLayoutTest("worker-lifecycle.html");
-}
-
-TEST_F(WorkerTest, WorkerLocation) {
- RunWorkerFastLayoutTest("worker-location.html");
-}
-
-// Flaky, http://crbug.com/71518.
-TEST_F(WorkerTest, FLAKY_WorkerMapGc) {
- RunWorkerFastLayoutTest("wrapper-map-gc.html");
-}
-
-TEST_F(WorkerTest, WorkerMessagePort) {
- RunWorkerFastLayoutTest("worker-messageport.html");
-}
-
-TEST_F(WorkerTest, WorkerMessagePortGC) {
- RunWorkerFastLayoutTest("worker-messageport-gc.html");
-}
-
-TEST_F(WorkerTest, WorkerMultiPort) {
- RunWorkerFastLayoutTest("worker-multi-port.html");
-}
-
-TEST_F(WorkerTest, WorkerNavigator) {
- RunWorkerFastLayoutTest("worker-navigator.html");
-}
-
-TEST_F(WorkerTest, WorkerReplaceGlobalConstructor) {
- RunWorkerFastLayoutTest("worker-replace-global-constructor.html");
-}
-
-TEST_F(WorkerTest, WorkerReplaceSelf) {
- RunWorkerFastLayoutTest("worker-replace-self.html");
-}
-
-// See bug 44457.
-#if defined(OS_MACOSX)
-#define WorkerScriptError FLAKY_WorkerScriptError
-#endif
-
-TEST_F(WorkerTest, WorkerScriptError) {
- RunWorkerFastLayoutTest("worker-script-error.html");
-}
-
-TEST_F(WorkerTest, WorkerTerminate) {
- RunWorkerFastLayoutTest("worker-terminate.html");
-}
-
-TEST_F(WorkerTest, WorkerTimeout) {
- RunWorkerFastLayoutTest("worker-timeout.html");
-}
-
-//
-// SharedWorkerFastLayoutTests
-//
-// http://crbug.com/27636 - incorrect URL_MISMATCH exceptions sometimes get
-// generated on the windows try bots. FLAKY on Win.
-// http://crbug.com/28445 - flakiness on mac
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastConstructor) {
- RunWorkerFastLayoutTest("shared-worker-constructor.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastContextGC) {
- RunWorkerFastLayoutTest("shared-worker-context-gc.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastEventListener) {
- RunWorkerFastLayoutTest("shared-worker-event-listener.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastException) {
- RunWorkerFastLayoutTest("shared-worker-exception.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastGC) {
- RunWorkerFastLayoutTest("shared-worker-gc.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastInIframe) {
- RunWorkerFastLayoutTest("shared-worker-in-iframe.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastLoadError) {
- RunWorkerFastLayoutTest("shared-worker-load-error.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastLocation) {
- RunWorkerFastLayoutTest("shared-worker-location.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastName) {
- RunWorkerFastLayoutTest("shared-worker-name.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastNavigator) {
- RunWorkerFastLayoutTest("shared-worker-navigator.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastReplaceGlobalConstructor) {
- RunWorkerFastLayoutTest("shared-worker-replace-global-constructor.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastReplaceSelf) {
- RunWorkerFastLayoutTest("shared-worker-replace-self.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastScriptError) {
- RunWorkerFastLayoutTest("shared-worker-script-error.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastShared) {
- RunWorkerFastLayoutTest("shared-worker-shared.html");
-}
-
-TEST_F(WorkerTest, FLAKY_SharedWorkerFastSimple) {
- RunWorkerFastLayoutTest("shared-worker-simple.html");
-}
-
-// http://crbug.com/16934
-TEST_F(WorkerTest, DISABLED_WorkerHttpLayoutTests) {
- static const char* kLayoutTestFiles[] = {
- "shared-worker-importScripts.html",
- "shared-worker-redirect.html",
- // flakey? BUG 16934 "text-encoding.html",
-#if defined(OS_WIN)
- // Fails on the mac (and linux?):
- // http://code.google.com/p/chromium/issues/detail?id=22599
- "worker-importScripts.html",
-#endif
- "worker-redirect.html",
- };
-
- FilePath http_test_dir;
- http_test_dir = http_test_dir.AppendASCII("http");
- http_test_dir = http_test_dir.AppendASCII("tests");
-
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("workers");
- InitializeForLayoutTest(http_test_dir, worker_test_dir, kHttpPort);
-
- StartHttpServer(new_http_root_dir_);
- for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i)
- RunLayoutTest(kLayoutTestFiles[i], kHttpPort);
- StopHttpServer();
-}
-
-TEST_F(WorkerTest, WorkerWebSocketLayoutTests) {
- static const char* kLayoutTestFiles[] = {
- "close-in-onmessage-crash.html",
- "close-in-shared-worker.html",
- "close-in-worker.html",
- "shared-worker-simple.html",
- "worker-handshake-challenge-randomness.html",
- "worker-simple.html"
- };
-
- FilePath websocket_test_dir;
- websocket_test_dir = websocket_test_dir.AppendASCII("http");
- websocket_test_dir = websocket_test_dir.AppendASCII("tests");
-
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("websocket");
- worker_test_dir = worker_test_dir.AppendASCII("tests");
- worker_test_dir = worker_test_dir.AppendASCII("workers");
- InitializeForLayoutTest(websocket_test_dir, worker_test_dir, kHttpPort);
-
- FilePath websocket_root_dir(temp_test_dir_);
- websocket_root_dir = websocket_root_dir.AppendASCII("LayoutTests");
- ui_test_utils::TestWebSocketServer websocket_server;
- ASSERT_TRUE(websocket_server.Start(websocket_root_dir));
-
- StartHttpServer(new_http_root_dir_);
- for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i)
- RunLayoutTest(kLayoutTestFiles[i], kHttpPort);
- StopHttpServer();
-}
-
-TEST_F(WorkerTest, DISABLED_WorkerXhrHttpLayoutTests) {
- static const char* kLayoutTestFiles[] = {
- "abort-exception-assert.html",
-#if defined(OS_WIN)
- // Fails on the mac (and linux?):
- // http://code.google.com/p/chromium/issues/detail?id=22599
- "close.html",
-#endif
- // These tests (and the shared-worker versions below) are disabled due to
- // limitations in lighttpd (doesn't handle all of the HTTP methods).
- // "methods-async.html",
- // "methods.html",
-
- "shared-worker-close.html",
- // Disabled due to limitations in lighttpd (does not handle methods other
- // than GET/PUT/POST).
- // "shared-worker-methods-async.html",
- // "shared-worker-methods.html",
- "shared-worker-xhr-file-not-found.html",
-
- "xmlhttprequest-file-not-found.html"
- };
-
- FilePath http_test_dir;
- http_test_dir = http_test_dir.AppendASCII("http");
- http_test_dir = http_test_dir.AppendASCII("tests");
-
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("xmlhttprequest");
- worker_test_dir = worker_test_dir.AppendASCII("workers");
- InitializeForLayoutTest(http_test_dir, worker_test_dir, kHttpPort);
-
- StartHttpServer(new_http_root_dir_);
- for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i)
- RunLayoutTest(kLayoutTestFiles[i], kHttpPort);
- StopHttpServer();
-}
-
-// Flaky, http://crbug.com/34996.
-TEST_F(WorkerTest, FLAKY_MessagePorts) {
- static const char* kLayoutTestFiles[] = {
- "message-channel-gc.html",
- "message-channel-gc-2.html",
- "message-channel-gc-3.html",
- "message-channel-gc-4.html",
- "message-port.html",
- "message-port-clone.html",
- "message-port-constructor-for-deleted-document.html",
- "message-port-deleted-document.html",
- "message-port-deleted-frame.html",
- "message-port-inactive-document.html",
- "message-port-multi.html",
- "message-port-no-wrapper.html",
- // Only works with run-webkit-tests --leaks.
- // "message-channel-listener-circular-ownership.html",
- };
-
- FilePath fast_test_dir;
- fast_test_dir = fast_test_dir.AppendASCII("fast");
-
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("events");
- InitializeForLayoutTest(fast_test_dir, worker_test_dir, kNoHttpPort);
-
- // MessagePort tests also rely on common files in js/resources.
- FilePath js_dir = fast_test_dir.AppendASCII("js");
- FilePath resource_dir;
- resource_dir = resource_dir.AppendASCII("resources");
- AddResourceForLayoutTest(js_dir, resource_dir);
-
- for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i)
- RunLayoutTest(kLayoutTestFiles[i], kNoHttpPort);
-}
-
-// This has been flaky on Windows since r39931. http://crbug.com/36800
-// And on Mac since r51935. http://crbug.com/48664
-TEST_F(WorkerTest, FLAKY_LimitPerPage) {
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kManyWorkersFile));
- url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab + 1));
-
- NavigateToURL(url);
- ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab));
-}
-
-// Doesn't crash, but on all platforms, it sometimes fails.
-// Flaky on all platforms: http://crbug.com/28445
-#if defined(OS_LINUX)
-// Hangs on Linux: http://30332
-#define FLAKY_LimitTotal DISABLED_LimitTotal
-#endif
-TEST_F(WorkerTest, FLAKY_LimitTotal) {
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- int total_workers = WorkerService::kMaxWorkersWhenSeparate;
-
- int tab_count = (total_workers / max_workers_per_tab) + 1;
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kManyWorkersFile));
- url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab));
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- ASSERT_TRUE(tab->NavigateToURL(url));
- scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(window.get());
- for (int i = 1; i < tab_count; ++i)
- ASSERT_TRUE(window->AppendTab(url));
-
- // Check that we didn't create more than the max number of workers.
- ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers));
-
- // Now close a page and check that the queued workers were started.
- const FilePath::CharType* kGoogleDir = FILE_PATH_LITERAL("google");
- const FilePath::CharType* kGoogleFile = FILE_PATH_LITERAL("google.html");
- ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
- tab->NavigateToURL(ui_test_utils::GetTestUrl(FilePath(kGoogleDir),
- FilePath(kGoogleFile))));
-
- ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers));
-}
-
-// Flaky, http://crbug.com/59786.
-TEST_F(WorkerTest, FLAKY_WorkerClose) {
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kWorkerClose));
- ASSERT_TRUE(tab->NavigateToURL(url));
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- ASSERT_TRUE(WaitForProcessCountToBe(1, 0));
-}
-
-// Flaky, http://crbug.com/70861.
-TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerShutdown) {
- // Tests to make sure that queued shared workers are started up when
- // shared workers shut down.
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kQuerySharedWorkerShutdownFile));
- url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab));
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- ASSERT_TRUE(tab->NavigateToURL(url));
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab));
-}
-
-// Flaky, http://crbug.com/69881.
-TEST_F(WorkerTest, FLAKY_MultipleTabsQueuedSharedWorker) {
- // Tests to make sure that only one instance of queued shared workers are
- // started up even when those instances are on multiple tabs.
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kManySharedWorkersFile));
- url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1));
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- ASSERT_TRUE(tab->NavigateToURL(url));
- ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab));
-
- // Create same set of workers in new tab (leaves one worker queued from this
- // tab).
- scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(window.get());
- ASSERT_TRUE(window->AppendTab(url));
- ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab));
-
- // Now shutdown one of the shared workers - this will fire both queued
- // workers, but only one instance should be started
- GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kShutdownSharedWorkerFile));
- url2 = GURL(url2.spec() + "?id=0");
- ASSERT_TRUE(window->AppendTab(url2));
-
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- ASSERT_TRUE(WaitForProcessCountToBe(3, max_workers_per_tab));
-}
-
-// Flaky: http://crbug.com/48148
-TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerStartedFromOtherTab) {
- // Tests to make sure that queued shared workers are started up when
- // an instance is launched from another tab.
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kManySharedWorkersFile));
- url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1));
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- ASSERT_TRUE(tab->NavigateToURL(url));
- ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab));
- // First window has hit its limit. Now launch second window which creates
- // the same worker that was queued in the first window, to ensure it gets
- // connected to the first window too.
- scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(window.get());
- GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir),
- FilePath(kSingleSharedWorkersFile));
- url2 = GURL(url2.spec() + StringPrintf("?id=%d", max_workers_per_tab));
- ASSERT_TRUE(window->AppendTab(url2));
-
- std::string value = WaitUntilCookieNonEmpty(tab.get(), url,
- kTestCompleteCookie, TestTimeouts::action_max_timeout_ms());
- ASSERT_STREQ(kTestCompleteSuccess, value.c_str());
- ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab+1));
-}
-
-class WorkerFileSystemTest : public WorkerTest {
- protected:
- void RunWorkerFileSystemLayoutTest(const std::string& test_case_file_name) {
- FilePath worker_test_dir;
- worker_test_dir = worker_test_dir.AppendASCII("fast");
-
- FilePath filesystem_test_dir;
- filesystem_test_dir = filesystem_test_dir.AppendASCII("filesystem");
- filesystem_test_dir = filesystem_test_dir.AppendASCII("workers");
- InitializeForLayoutTest(worker_test_dir, filesystem_test_dir, kNoHttpPort);
-
- FilePath resource_dir;
- resource_dir = resource_dir.AppendASCII("resources");
- AddResourceForLayoutTest(worker_test_dir.AppendASCII("filesystem"),
- resource_dir);
-
- // FS tests also rely on common files in js/resources.
- FilePath js_dir = worker_test_dir.AppendASCII("js");
- FilePath js_resource_dir;
- js_resource_dir = js_resource_dir.AppendASCII("resources");
- AddResourceForLayoutTest(js_dir, js_resource_dir);
-
- RunLayoutTest(test_case_file_name, kNoHttpPort);
-
- // Navigate to a blank page so that any workers are cleaned up.
- // This helps leaks trackers do a better job of reporting.
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- GURL about_url(chrome::kAboutBlankURL);
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(about_url));
- }
-};
-
-TEST_F(WorkerFileSystemTest, Temporary) {
- RunWorkerFileSystemLayoutTest("simple-temporary.html");
-}
-
-TEST_F(WorkerFileSystemTest, Persistent) {
- RunWorkerFileSystemLayoutTest("simple-persistent.html");
-}
-
-TEST_F(WorkerFileSystemTest, SyncTemporary) {
- RunWorkerFileSystemLayoutTest("simple-temporary-sync.html");
-}
-
-TEST_F(WorkerFileSystemTest, SyncPersistent) {
- RunWorkerFileSystemLayoutTest("simple-persistent-sync.html");
-}
-
-TEST_F(WorkerFileSystemTest, AsyncOperations) {
- RunWorkerFileSystemLayoutTest("async-operations.html");
-}
-
-TEST_F(WorkerFileSystemTest, SyncOperations) {
- RunWorkerFileSystemLayoutTest("sync-operations.html");
-}
-
-TEST_F(WorkerFileSystemTest, FileEntryToURISync) {
- RunWorkerFileSystemLayoutTest("file-entry-to-uri-sync.html");
-}
-
-#if defined(OS_LINUX)
-// These tests fail on Linux due to an assert in WebKit's RNG.
-// See http://webkit.org/b/55728.
-#define FileFromFileEntry DISABLED_FileFromFileEntry
-#define FileFromFileEntrySync DISABLED_FileFromFileEntrySync
-#define FileWriterTruncateExtend DISABLED_FileWriterTruncateExtend
-#define FileWriterSyncTruncateExtend DISABLED_FileWriterSyncTruncateExtend
-#define FileWriterSyncWriteOverlapped DISABLED_FileWriterSyncWriteOverlapped
-#endif
-TEST_F(WorkerFileSystemTest, FileFromFileEntry) {
- RunWorkerFileSystemLayoutTest("file-from-file-entry.html");
-}
-
-TEST_F(WorkerFileSystemTest, FileFromFileEntrySync) {
- RunWorkerFileSystemLayoutTest("file-from-file-entry-sync.html");
-}
-
-TEST_F(WorkerFileSystemTest, FileWriterTruncateExtend) {
- RunWorkerFileSystemLayoutTest("file-writer-truncate-extend.html");
-}
-
-TEST_F(WorkerFileSystemTest, FileWriterSyncTruncateExtend) {
- RunWorkerFileSystemLayoutTest("file-writer-sync-truncate-extend.html");
-}
-
-TEST_F(WorkerFileSystemTest, FileWriterSyncWriteOverlapped) {
- RunWorkerFileSystemLayoutTest("file-writer-sync-write-overlapped.html");
-}
diff --git a/chrome/worker/worker_webapplicationcachehost_impl.cc b/chrome/worker/worker_webapplicationcachehost_impl.cc
deleted file mode 100644
index 0f63a1f..0000000
--- a/chrome/worker/worker_webapplicationcachehost_impl.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011 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/worker_webapplicationcachehost_impl.h"
-
-#include "chrome/worker/worker_thread.h"
-#include "content/common/appcache/appcache_dispatcher.h"
-
-WorkerWebApplicationCacheHostImpl::WorkerWebApplicationCacheHostImpl(
- const WorkerAppCacheInitInfo& init_info,
- WebKit::WebApplicationCacheHostClient* client)
- : WebApplicationCacheHostImpl(client,
- WorkerThread::current()->appcache_dispatcher()->backend_proxy()) {
- if (init_info.is_shared_worker)
- backend()->SelectCacheForSharedWorker(host_id(),
- init_info.main_resource_appcache_id);
- else
- backend()->SelectCacheForWorker(host_id(),
- init_info.parent_process_id,
- init_info.parent_appcache_host_id);
-}
-
-bool WorkerWebApplicationCacheHostImpl::selectCacheWithManifest(
- const WebKit::WebURL& manifestURL) {
- return true;
-}
diff --git a/chrome/worker/worker_webapplicationcachehost_impl.h b/chrome/worker/worker_webapplicationcachehost_impl.h
deleted file mode 100644
index db6dc8a..0000000
--- a/chrome/worker/worker_webapplicationcachehost_impl.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2010 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.
-
-#ifndef CHROME_WORKER_WORKER_WEBAPPLICATIONCACHEHOST_IMPL_H_
-#define CHROME_WORKER_WORKER_WEBAPPLICATIONCACHEHOST_IMPL_H_
-#pragma once
-
-#include "webkit/appcache/web_application_cache_host_impl.h"
-
-// Information used to construct and initialize an appcache host
-// for a worker.
-struct WorkerAppCacheInitInfo {
- bool is_shared_worker;
- int parent_process_id;
- int parent_appcache_host_id; // Only valid for dedicated workers.
- int64 main_resource_appcache_id; // Only valid for shared workers.
-
- WorkerAppCacheInitInfo()
- : is_shared_worker(false), parent_process_id(0),
- parent_appcache_host_id(0), main_resource_appcache_id(0) {
- }
- WorkerAppCacheInitInfo(
- bool is_shared, int process_id, int host_id, int64 cache_id)
- : is_shared_worker(is_shared), parent_process_id(process_id),
- parent_appcache_host_id(host_id), main_resource_appcache_id(cache_id) {
- }
-};
-
-class WorkerWebApplicationCacheHostImpl
- : public appcache::WebApplicationCacheHostImpl {
- public:
- WorkerWebApplicationCacheHostImpl(
- const WorkerAppCacheInitInfo& init_info,
- WebKit::WebApplicationCacheHostClient* client);
-
- // Main resource loading is different for workers. The resource is
- // loaded by the creator of the worker rather than the worker itself.
- virtual void willStartMainResourceRequest(WebKit::WebURLRequest&) {}
- virtual void didReceiveResponseForMainResource(
- const WebKit::WebURLResponse&) {}
- virtual void didReceiveDataForMainResource(const char* data, int len) {}
- virtual void didFinishLoadingMainResource(bool success) {}
-
- // Cache selection is also different for workers. We know at construction
- // time what cache to select and do so then.
- virtual void selectCacheWithoutManifest() {}
- virtual bool selectCacheWithManifest(const WebKit::WebURL& manifestURL);
-};
-
-#endif // CHROME_WORKER_WORKER_WEBAPPLICATIONCACHEHOST_IMPL_H_
diff --git a/chrome/worker/worker_webkitclient_impl.cc b/chrome/worker/worker_webkitclient_impl.cc
deleted file mode 100644
index 3bb6ff1..0000000
--- a/chrome/worker/worker_webkitclient_impl.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2010 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/worker_webkitclient_impl.h"
-
-#include "base/logging.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/worker/worker_thread.h"
-#include "content/common/database_util.h"
-#include "content/common/file_system/webfilesystem_impl.h"
-#include "content/common/file_utilities_messages.h"
-#include "content/common/mime_registry_messages.h"
-#include "content/common/webblobregistry_impl.h"
-#include "content/common/webmessageportchannel_impl.h"
-#include "ipc/ipc_sync_message_filter.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlobRegistry.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
-#include "webkit/glue/webfileutilities_impl.h"
-#include "webkit/glue/webkit_glue.h"
-
-using WebKit::WebBlobRegistry;
-using WebKit::WebClipboard;
-using WebKit::WebFileSystem;
-using WebKit::WebFileUtilities;
-using WebKit::WebKitClient;
-using WebKit::WebMessagePortChannel;
-using WebKit::WebMimeRegistry;
-using WebKit::WebSandboxSupport;
-using WebKit::WebSharedWorkerRepository;
-using WebKit::WebStorageNamespace;
-using WebKit::WebString;
-using WebKit::WebURL;
-
-// TODO(kinuko): Probably this could be consolidated into
-// RendererWebKitClientImpl::FileUtilities.
-class WorkerWebKitClientImpl::FileUtilities
- : public webkit_glue::WebFileUtilitiesImpl {
- public:
- virtual bool getFileSize(const WebKit::WebString& path, long long& result);
- virtual bool getFileModificationTime(const WebKit::WebString& path,
- double& result);
-};
-
-static bool SendSyncMessageFromAnyThread(IPC::SyncMessage* msg) {
- WorkerThread* worker_thread = WorkerThread::current();
- if (worker_thread)
- return worker_thread->Send(msg);
-
- scoped_refptr<IPC::SyncMessageFilter> sync_msg_filter(
- ChildThread::current()->sync_message_filter());
- return sync_msg_filter->Send(msg);
-}
-
-bool WorkerWebKitClientImpl::FileUtilities::getFileSize(const WebString& path,
- long long& result) {
- if (SendSyncMessageFromAnyThread(new FileUtilitiesMsg_GetFileSize(
- webkit_glue::WebStringToFilePath(path),
- reinterpret_cast<int64*>(&result)))) {
- return result >= 0;
- }
-
- result = -1;
- return false;
-}
-
-bool WorkerWebKitClientImpl::FileUtilities::getFileModificationTime(
- const WebString& path,
- double& result) {
- base::Time time;
- if (SendSyncMessageFromAnyThread(new FileUtilitiesMsg_GetFileModificationTime(
- webkit_glue::WebStringToFilePath(path), &time))) {
- result = time.ToDoubleT();
- return !time.is_null();
- }
-
- result = 0;
- return false;
-}
-
-//------------------------------------------------------------------------------
-
-WorkerWebKitClientImpl::WorkerWebKitClientImpl() {
-}
-
-WorkerWebKitClientImpl::~WorkerWebKitClientImpl() {
-}
-
-WebClipboard* WorkerWebKitClientImpl::clipboard() {
- NOTREACHED();
- return NULL;
-}
-
-WebMimeRegistry* WorkerWebKitClientImpl::mimeRegistry() {
- return this;
-}
-
-WebFileSystem* WorkerWebKitClientImpl::fileSystem() {
- if (!web_file_system_.get())
- web_file_system_.reset(new WebFileSystemImpl());
- return web_file_system_.get();
-}
-
-WebFileUtilities* WorkerWebKitClientImpl::fileUtilities() {
- if (!file_utilities_.get()) {
- file_utilities_.reset(new FileUtilities);
- file_utilities_->set_sandbox_enabled(sandboxEnabled());
- }
- return file_utilities_.get();
-}
-
-WebSandboxSupport* WorkerWebKitClientImpl::sandboxSupport() {
- NOTREACHED();
- return NULL;
-}
-
-bool WorkerWebKitClientImpl::sandboxEnabled() {
- // Always return true because WebKit should always act as though the Sandbox
- // is enabled for workers. See the comment in WebKitClient for more info.
- return true;
-}
-
-unsigned long long WorkerWebKitClientImpl::visitedLinkHash(
- const char* canonical_url,
- size_t length) {
- NOTREACHED();
- return 0;
-}
-
-bool WorkerWebKitClientImpl::isLinkVisited(unsigned long long link_hash) {
- NOTREACHED();
- return false;
-}
-
-WebMessagePortChannel*
-WorkerWebKitClientImpl::createMessagePortChannel() {
- return new WebMessagePortChannelImpl();
-}
-
-void WorkerWebKitClientImpl::setCookies(const WebURL& url,
- const WebURL& first_party_for_cookies,
- const WebString& value) {
- NOTREACHED();
-}
-
-WebString WorkerWebKitClientImpl::cookies(
- const WebURL& url, const WebURL& first_party_for_cookies) {
- // WebSocketHandshake may access cookies in worker process.
- return WebString();
-}
-
-void WorkerWebKitClientImpl::prefetchHostName(const WebString&) {
- NOTREACHED();
-}
-
-WebString WorkerWebKitClientImpl::defaultLocale() {
- NOTREACHED();
- return WebString();
-}
-
-WebStorageNamespace* WorkerWebKitClientImpl::createLocalStorageNamespace(
- const WebString& path, unsigned quota) {
- NOTREACHED();
- return 0;
-}
-
-void WorkerWebKitClientImpl::dispatchStorageEvent(
- const WebString& key, const WebString& old_value,
- const WebString& new_value, const WebString& origin,
- const WebKit::WebURL& url, bool is_local_storage) {
- NOTREACHED();
-}
-
-WebSharedWorkerRepository* WorkerWebKitClientImpl::sharedWorkerRepository() {
- return 0;
-}
-
-WebKitClient::FileHandle WorkerWebKitClientImpl::databaseOpenFile(
- const WebString& vfs_file_name, int desired_flags) {
- return DatabaseUtil::databaseOpenFile(vfs_file_name, desired_flags);
-}
-
-int WorkerWebKitClientImpl::databaseDeleteFile(
- const WebString& vfs_file_name, bool sync_dir) {
- return DatabaseUtil::databaseDeleteFile(vfs_file_name, sync_dir);
-}
-
-long WorkerWebKitClientImpl::databaseGetFileAttributes(
- const WebString& vfs_file_name) {
- return DatabaseUtil::databaseGetFileAttributes(vfs_file_name);
-}
-
-long long WorkerWebKitClientImpl::databaseGetFileSize(
- const WebString& vfs_file_name) {
- return DatabaseUtil::databaseGetFileSize(vfs_file_name);
-}
-
-WebMimeRegistry::SupportsType WorkerWebKitClientImpl::supportsMIMEType(
- const WebString&) {
- return WebMimeRegistry::IsSupported;
-}
-
-WebMimeRegistry::SupportsType WorkerWebKitClientImpl::supportsImageMIMEType(
- const WebString&) {
- NOTREACHED();
- return WebMimeRegistry::IsSupported;
-}
-
-WebMimeRegistry::SupportsType
-WorkerWebKitClientImpl::supportsJavaScriptMIMEType(const WebString&) {
- NOTREACHED();
- return WebMimeRegistry::IsSupported;
-}
-
-WebMimeRegistry::SupportsType WorkerWebKitClientImpl::supportsMediaMIMEType(
- const WebString&, const WebString&) {
- NOTREACHED();
- return WebMimeRegistry::IsSupported;
-}
-
-WebMimeRegistry::SupportsType WorkerWebKitClientImpl::supportsNonImageMIMEType(
- const WebString&) {
- NOTREACHED();
- return WebMimeRegistry::IsSupported;
-}
-
-WebString WorkerWebKitClientImpl::mimeTypeForExtension(
- const WebString& file_extension) {
- std::string mime_type;
- SendSyncMessageFromAnyThread(new MimeRegistryMsg_GetMimeTypeFromExtension(
- webkit_glue::WebStringToFilePathString(file_extension), &mime_type));
- return ASCIIToUTF16(mime_type);
-}
-
-WebString WorkerWebKitClientImpl::mimeTypeFromFile(
- const WebString& file_path) {
- std::string mime_type;
- SendSyncMessageFromAnyThread(new MimeRegistryMsg_GetMimeTypeFromFile(
- FilePath(webkit_glue::WebStringToFilePathString(file_path)),
- &mime_type));
- return ASCIIToUTF16(mime_type);
-}
-
-WebString WorkerWebKitClientImpl::preferredExtensionForMIMEType(
- const WebString& mime_type) {
- FilePath::StringType file_extension;
- SendSyncMessageFromAnyThread(
- new MimeRegistryMsg_GetPreferredExtensionForMimeType(
- UTF16ToASCII(mime_type), &file_extension));
- return webkit_glue::FilePathStringToWebString(file_extension);
-}
-
-WebBlobRegistry* WorkerWebKitClientImpl::blobRegistry() {
- if (!blob_registry_.get())
- blob_registry_.reset(new WebBlobRegistryImpl(WorkerThread::current()));
- return blob_registry_.get();
-}
diff --git a/chrome/worker/worker_webkitclient_impl.h b/chrome/worker/worker_webkitclient_impl.h
deleted file mode 100644
index 6724737..0000000
--- a/chrome/worker/worker_webkitclient_impl.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2010 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.
-
-#ifndef CHROME_WORKER_WORKER_WEBKITCLIENT_IMPL_H_
-#define CHROME_WORKER_WORKER_WEBKITCLIENT_IMPL_H_
-#pragma once
-
-#include "base/scoped_ptr.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebMimeRegistry.h"
-#include "webkit/glue/webkitclient_impl.h"
-
-class WebFileSystemImpl;
-
-namespace WebKit {
-class WebFileUtilities;
-}
-
-class WorkerWebKitClientImpl : public webkit_glue::WebKitClientImpl,
- public WebKit::WebMimeRegistry {
- public:
- WorkerWebKitClientImpl();
- virtual ~WorkerWebKitClientImpl();
-
- // WebKitClient methods:
- virtual WebKit::WebClipboard* clipboard();
- virtual WebKit::WebMimeRegistry* mimeRegistry();
- virtual WebKit::WebFileSystem* fileSystem();
- virtual WebKit::WebFileUtilities* fileUtilities();
- virtual WebKit::WebSandboxSupport* sandboxSupport();
- virtual bool sandboxEnabled();
- virtual unsigned long long visitedLinkHash(const char* canonicalURL,
- size_t length);
- virtual bool isLinkVisited(unsigned long long linkHash);
- virtual WebKit::WebMessagePortChannel* createMessagePortChannel();
- virtual void setCookies(const WebKit::WebURL& url,
- const WebKit::WebURL& first_party_for_cookies,
- const WebKit::WebString& value);
- virtual WebKit::WebString cookies(
- const WebKit::WebURL& url,
- const WebKit::WebURL& first_party_for_cookies);
- virtual void prefetchHostName(const WebKit::WebString&);
- virtual WebKit::WebString defaultLocale();
- virtual WebKit::WebStorageNamespace* createLocalStorageNamespace(
- const WebKit::WebString& path, unsigned quota);
- virtual void dispatchStorageEvent(
- const WebKit::WebString& key, const WebKit::WebString& old_value,
- const WebKit::WebString& new_value, const WebKit::WebString& origin,
- const WebKit::WebURL& url, bool is_local_storage);
- virtual WebKit::WebSharedWorkerRepository* sharedWorkerRepository();
-
- virtual WebKit::WebKitClient::FileHandle databaseOpenFile(
- const WebKit::WebString& vfs_file_name, int desired_flags);
- virtual int databaseDeleteFile(const WebKit::WebString& vfs_file_name,
- bool sync_dir);
- virtual long databaseGetFileAttributes(
- const WebKit::WebString& vfs_file_name);
- virtual long long databaseGetFileSize(
- const WebKit::WebString& vfs_file_name);
-
- virtual WebKit::WebBlobRegistry* blobRegistry();
-
- // WebMimeRegistry methods:
- virtual WebKit::WebMimeRegistry::SupportsType supportsMIMEType(
- const WebKit::WebString&);
- virtual WebKit::WebMimeRegistry::SupportsType supportsImageMIMEType(
- const WebKit::WebString&);
- virtual WebKit::WebMimeRegistry::SupportsType supportsJavaScriptMIMEType(
- const WebKit::WebString&);
- virtual WebKit::WebMimeRegistry::SupportsType supportsMediaMIMEType(
- const WebKit::WebString&, const WebKit::WebString&);
- virtual WebKit::WebMimeRegistry::SupportsType supportsNonImageMIMEType(
- const WebKit::WebString&);
- virtual WebKit::WebString mimeTypeForExtension(const WebKit::WebString&);
- virtual WebKit::WebString mimeTypeFromFile(const WebKit::WebString&);
- virtual WebKit::WebString preferredExtensionForMIMEType(
- const WebKit::WebString&);
-
- private:
-
- class FileUtilities;
- scoped_ptr<FileUtilities> file_utilities_;
-
- scoped_ptr<WebKit::WebBlobRegistry> blob_registry_;
-
- scoped_ptr<WebFileSystemImpl> web_file_system_;
-};
-
-#endif // CHROME_WORKER_WORKER_WEBKITCLIENT_IMPL_H_