summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-29 23:58:00 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-29 23:58:00 +0000
commit724214aea569fd0fe6be1ecbacf9e7d8c5e87555 (patch)
tree604285f2a709a5cb6937df9ddf5ce9f11c5b844b /content
parent0370485992fa455ca06c9cb7305e5ca0f8a010c0 (diff)
downloadchromium_src-724214aea569fd0fe6be1ecbacf9e7d8c5e87555.zip
chromium_src-724214aea569fd0fe6be1ecbacf9e7d8c5e87555.tar.gz
chromium_src-724214aea569fd0fe6be1ecbacf9e7d8c5e87555.tar.bz2
Create an API around WorkerService that chrome consumes. Rename the existing WorkerService to WorkerServiceImpl and put it in the content namespace while at it. Also move WorkerServiceObserver to the public directory and into the content namespace.
BUG=98716 Review URL: http://codereview.chromium.org/9052007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@116007 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/debugger/worker_devtools_manager.cc4
-rw-r--r--content/browser/debugger/worker_devtools_manager.h4
-rw-r--r--content/browser/debugger/worker_devtools_message_filter.cc1
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host.cc5
-rw-r--r--content/browser/renderer_host/resource_request_details.cc6
-rw-r--r--content/browser/worker_host/worker_message_filter.cc13
-rw-r--r--content/browser/worker_host/worker_process_host.cc21
-rw-r--r--content/browser/worker_host/worker_process_host.h3
-rw-r--r--content/browser/worker_host/worker_service_impl.cc (renamed from content/browser/worker_host/worker_service.cc)89
-rw-r--r--content/browser/worker_host/worker_service_impl.h (renamed from content/browser/worker_host/worker_service.h)47
-rw-r--r--content/content_browser.gypi7
-rw-r--r--content/public/browser/DEPS1
-rw-r--r--content/public/browser/worker_service.h31
-rw-r--r--content/public/browser/worker_service_observer.h (renamed from content/browser/worker_host/worker_service_observer.h)15
-rw-r--r--content/worker/test/worker_uitest.cc16
15 files changed, 158 insertions, 105 deletions
diff --git a/content/browser/debugger/worker_devtools_manager.cc b/content/browser/debugger/worker_devtools_manager.cc
index 2029648..0411fcc 100644
--- a/content/browser/debugger/worker_devtools_manager.cc
+++ b/content/browser/debugger/worker_devtools_manager.cc
@@ -12,7 +12,7 @@
#include "content/browser/debugger/devtools_manager_impl.h"
#include "content/browser/debugger/worker_devtools_message_filter.h"
#include "content/browser/worker_host/worker_process_host.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include "content/common/devtools_messages.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/devtools_agent_host_registry.h"
@@ -277,7 +277,7 @@ DevToolsAgentHost* WorkerDevToolsManager::GetDevToolsAgentHostForWorker(
}
WorkerDevToolsManager::WorkerDevToolsManager() {
- WorkerService::GetInstance()->AddObserver(this);
+ WorkerServiceImpl::GetInstance()->AddObserver(this);
}
WorkerDevToolsManager::~WorkerDevToolsManager() {
diff --git a/content/browser/debugger/worker_devtools_manager.h b/content/browser/debugger/worker_devtools_manager.h
index 9cc55e5..8ee9c1c 100644
--- a/content/browser/debugger/worker_devtools_manager.h
+++ b/content/browser/debugger/worker_devtools_manager.h
@@ -13,7 +13,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
#include "content/common/content_export.h"
-#include "content/browser/worker_host/worker_service_observer.h"
+#include "content/public/browser/worker_service_observer.h"
namespace IPC {
class Message;
@@ -53,7 +53,7 @@ class WorkerDevToolsManager : private WorkerServiceObserver {
WorkerDevToolsManager();
virtual ~WorkerDevToolsManager();
- // WorkerServiceOberver implementation.
+ // WorkerServiceObserver implementation.
virtual void WorkerCreated(
WorkerProcessHost* process,
const WorkerProcessHost::WorkerInstance& instance) OVERRIDE;
diff --git a/content/browser/debugger/worker_devtools_message_filter.cc b/content/browser/debugger/worker_devtools_message_filter.cc
index 6cc0bc0..5a1fba5 100644
--- a/content/browser/debugger/worker_devtools_message_filter.cc
+++ b/content/browser/debugger/worker_devtools_message_filter.cc
@@ -5,7 +5,6 @@
#include "content/browser/debugger/worker_devtools_message_filter.h"
#include "content/browser/debugger/worker_devtools_manager.h"
-#include "content/browser/worker_host/worker_service.h"
#include "content/common/devtools_messages.h"
#include "content/common/worker_messages.h"
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc
index 120f09e..e09aa3e 100644
--- a/content/browser/renderer_host/resource_dispatcher_host.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc
@@ -47,7 +47,7 @@
#include "content/browser/resource_context.h"
#include "content/browser/ssl/ssl_client_auth_handler.h"
#include "content/browser/ssl/ssl_manager.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include "content/common/resource_messages.h"
#include "content/common/view_messages.h"
#include "content/public/browser/browser_thread.h"
@@ -88,6 +88,7 @@ using content::BrowserThread;
using content::GlobalRequestID;
using content::ResourceResponse;
using content::WebContents;
+using content::WorkerServiceImpl;
using webkit_blob::DeletableFileReference;
// ----------------------------------------------------------------------------
@@ -1909,7 +1910,7 @@ bool ResourceDispatcherHost::RenderViewForRequest(
if (info->process_type() == content::PROCESS_TYPE_WORKER) {
// Need to display some related UI for this network request - pick an
// arbitrary parent to do so.
- if (!WorkerService::GetInstance()->GetRendererForWorker(
+ if (!WorkerServiceImpl::GetInstance()->GetRendererForWorker(
info->child_id(), render_process_host_id, render_view_host_id)) {
*render_process_host_id = -1;
*render_view_host_id = -1;
diff --git a/content/browser/renderer_host/resource_request_details.cc b/content/browser/renderer_host/resource_request_details.cc
index 2569c17..414f761 100644
--- a/content/browser/renderer_host/resource_request_details.cc
+++ b/content/browser/renderer_host/resource_request_details.cc
@@ -6,7 +6,9 @@
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
+
+using content::WorkerServiceImpl;
ResourceRequestDetails::ResourceRequestDetails(const net::URLRequest* request,
int cert_id)
@@ -32,7 +34,7 @@ ResourceRequestDetails::ResourceRequestDetails(const net::URLRequest* request,
// the first one (works for dedicated workers and shared workers with
// a single process).
int temp;
- if (!WorkerService::GetInstance()->GetRendererForWorker(
+ if (!WorkerServiceImpl::GetInstance()->GetRendererForWorker(
info->child_id(), &origin_child_id_, &temp)) {
origin_child_id_ = info->child_id();
}
diff --git a/content/browser/worker_host/worker_message_filter.cc b/content/browser/worker_host/worker_message_filter.cc
index e5f8314..3dc750a 100644
--- a/content/browser/worker_host/worker_message_filter.cc
+++ b/content/browser/worker_host/worker_message_filter.cc
@@ -6,12 +6,13 @@
#include "content/browser/resource_context.h"
#include "content/browser/worker_host/message_port_service.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include "content/common/view_messages.h"
#include "content/common/worker_messages.h"
using content::BrowserMessageFilter;
using content::BrowserThread;
+using content::WorkerServiceImpl;
WorkerMessageFilter::WorkerMessageFilter(
int render_process_id,
@@ -33,7 +34,7 @@ void WorkerMessageFilter::OnChannelClosing() {
BrowserMessageFilter::OnChannelClosing();
MessagePortService::GetInstance()->OnWorkerMessageFilterClosing(this);
- WorkerService::GetInstance()->OnWorkerMessageFilterClosing(this);
+ WorkerServiceImpl::GetInstance()->OnWorkerMessageFilterClosing(this);
}
bool WorkerMessageFilter::OnMessageReceived(const IPC::Message& message,
@@ -81,7 +82,7 @@ void WorkerMessageFilter::OnCreateWorker(
int* route_id) {
*route_id = params.route_id != MSG_ROUTING_NONE ?
params.route_id : next_routing_id_.Run();
- WorkerService::GetInstance()->CreateWorker(
+ WorkerServiceImpl::GetInstance()->CreateWorker(
params, *route_id, this, *resource_context_);
}
@@ -92,16 +93,16 @@ void WorkerMessageFilter::OnLookupSharedWorker(
bool* url_error) {
*route_id = next_routing_id_.Run();
- WorkerService::GetInstance()->LookupSharedWorker(
+ WorkerServiceImpl::GetInstance()->LookupSharedWorker(
params, *route_id, this, resource_context_, exists, url_error);
}
void WorkerMessageFilter::OnForwardToWorker(const IPC::Message& message) {
- WorkerService::GetInstance()->ForwardToWorker(message, this);
+ WorkerServiceImpl::GetInstance()->ForwardToWorker(message, this);
}
void WorkerMessageFilter::OnDocumentDetached(unsigned long long document_id) {
- WorkerService::GetInstance()->DocumentDetached(document_id, this);
+ WorkerServiceImpl::GetInstance()->DocumentDetached(document_id, this);
}
void WorkerMessageFilter::OnCreateMessagePort(int *route_id,
diff --git a/content/browser/worker_host/worker_process_host.cc b/content/browser/worker_host/worker_process_host.cc
index 494fb02..c8f1b9d 100644
--- a/content/browser/worker_host/worker_process_host.cc
+++ b/content/browser/worker_host/worker_process_host.cc
@@ -29,7 +29,7 @@
#include "content/browser/resource_context.h"
#include "content/browser/worker_host/message_port_service.h"
#include "content/browser/worker_host/worker_message_filter.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include "content/common/child_process_host_impl.h"
#include "content/common/debug_flags.h"
#include "content/common/view_messages.h"
@@ -51,6 +51,7 @@
using content::BrowserThread;
using content::ChildProcessHost;
using content::UserMetricsAction;
+using content::WorkerServiceImpl;
namespace {
@@ -106,8 +107,8 @@ WorkerProcessHost::~WorkerProcessHost() {
base::Bind(&WorkerCrashCallback, parent_iter->render_process_id(),
parent_iter->render_view_id()));
}
- WorkerService::GetInstance()->NotifyWorkerDestroyed(this,
- i->worker_route_id());
+ WorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed(
+ this, i->worker_route_id());
}
ChildProcessSecurityPolicy::GetInstance()->Remove(id());
@@ -245,8 +246,8 @@ void WorkerProcessHost::CreateMessageFilters(int render_process_id) {
worker_message_filter_ = new WorkerMessageFilter(
render_process_id, resource_context_, resource_dispatcher_host_,
- base::Bind(&WorkerService::next_worker_route_id,
- base::Unretained(WorkerService::GetInstance())));
+ base::Bind(&WorkerServiceImpl::next_worker_route_id,
+ base::Unretained(WorkerServiceImpl::GetInstance())));
child_process_host()->AddFilter(worker_message_filter_);
child_process_host()->AddFilter(new AppCacheDispatcherHost(
resource_context_->appcache_service(), id()));
@@ -329,8 +330,8 @@ bool WorkerProcessHost::OnMessageReceived(const IPC::Message& message) {
return true;
if (message.type() == WorkerHostMsg_WorkerContextDestroyed::ID) {
- WorkerService::GetInstance()->NotifyWorkerDestroyed(this,
- message.routing_id());
+ WorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed(
+ this, message.routing_id());
}
for (Instances::iterator i = instances_.begin(); i != instances_.end(); ++i) {
@@ -432,8 +433,10 @@ void WorkerProcessHost::RelayMessage(
IPC::Message* new_message = new IPC::Message(message);
new_message->set_routing_id(route_id);
filter->Send(new_message);
- if (message.type() == WorkerMsg_StartWorkerContext::ID)
- WorkerService::GetInstance()->NotifyWorkerContextStarted(this, route_id);
+ if (message.type() == WorkerMsg_StartWorkerContext::ID) {
+ WorkerServiceImpl::GetInstance()->NotifyWorkerContextStarted(
+ this, route_id);
+ }
return;
}
}
diff --git a/content/browser/worker_host/worker_process_host.h b/content/browser/worker_host/worker_process_host.h
index e82e3d2..3ec544aa 100644
--- a/content/browser/worker_host/worker_process_host.h
+++ b/content/browser/worker_host/worker_process_host.h
@@ -20,6 +20,7 @@ class ResourceDispatcherHost;
namespace content {
class ResourceContext;
+class WorkerServiceImpl;
} // namespace content
// The WorkerProcessHost is the interface that represents the browser side of
@@ -143,7 +144,7 @@ class WorkerProcessHost : public BrowserChildProcessHost {
}
protected:
- friend class WorkerService;
+ friend class content::WorkerServiceImpl;
Instances& mutable_instances() { return instances_; }
diff --git a/content/browser/worker_host/worker_service.cc b/content/browser/worker_host/worker_service_impl.cc
index 27b0f2b..3d5acb3 100644
--- a/content/browser/worker_host/worker_service.cc
+++ b/content/browser/worker_host/worker_service_impl.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include <string>
@@ -13,33 +13,38 @@
#include "content/browser/resource_context.h"
#include "content/browser/worker_host/worker_message_filter.h"
#include "content/browser/worker_host/worker_process_host.h"
-#include "content/browser/worker_host/worker_service_observer.h"
#include "content/common/view_messages.h"
#include "content/common/worker_messages.h"
+#include "content/public/browser/worker_service_observer.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/process_type.h"
#include "net/base/registry_controlled_domain.h"
-using content::BrowserThread;
+namespace content {
-const int WorkerService::kMaxWorkerProcessesWhenSharing = 10;
-const int WorkerService::kMaxWorkersWhenSeparate = 64;
-const int WorkerService::kMaxWorkersPerTabWhenSeparate = 16;
+const int WorkerServiceImpl::kMaxWorkerProcessesWhenSharing = 10;
+const int WorkerServiceImpl::kMaxWorkersWhenSeparate = 64;
+const int WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate = 16;
WorkerService* WorkerService::GetInstance() {
+ return WorkerServiceImpl::GetInstance();
+}
+
+WorkerServiceImpl* WorkerServiceImpl::GetInstance() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- return Singleton<WorkerService>::get();
+ return Singleton<WorkerServiceImpl>::get();
}
-WorkerService::WorkerService() : next_worker_route_id_(0) {
+WorkerServiceImpl::WorkerServiceImpl() : next_worker_route_id_(0) {
}
-WorkerService::~WorkerService() {
+WorkerServiceImpl::~WorkerServiceImpl() {
// The observers in observers_ can't be used here because they might be
// gone already.
}
-void WorkerService::OnWorkerMessageFilterClosing(WorkerMessageFilter* filter) {
+void WorkerServiceImpl::OnWorkerMessageFilterClosing(
+ WorkerMessageFilter* filter) {
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter);
@@ -76,7 +81,7 @@ void WorkerService::OnWorkerMessageFilterClosing(WorkerMessageFilter* filter) {
TryStartingQueuedWorker();
}
-void WorkerService::CreateWorker(
+void WorkerServiceImpl::CreateWorker(
const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
@@ -100,7 +105,7 @@ void WorkerService::CreateWorker(
CreateWorkerFromInstance(instance);
}
-void WorkerService::LookupSharedWorker(
+void WorkerServiceImpl::LookupSharedWorker(
const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
@@ -142,15 +147,15 @@ void WorkerService::LookupSharedWorker(
}
}
-void WorkerService::CancelCreateDedicatedWorker(
+void WorkerServiceImpl::CancelCreateDedicatedWorker(
int route_id,
WorkerMessageFilter* filter) {
NOTREACHED();
}
-void WorkerService::ForwardToWorker(const IPC::Message& message,
- WorkerMessageFilter* filter) {
+void WorkerServiceImpl::ForwardToWorker(const IPC::Message& message,
+ WorkerMessageFilter* filter) {
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter);
@@ -161,8 +166,8 @@ void WorkerService::ForwardToWorker(const IPC::Message& message,
// TODO(jabdelmalek): tell filter that callee is gone
}
-void WorkerService::DocumentDetached(unsigned long long document_id,
- WorkerMessageFilter* filter) {
+void WorkerServiceImpl::DocumentDetached(unsigned long long document_id,
+ WorkerMessageFilter* filter) {
// Any associated shared workers can be shut down.
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
@@ -195,7 +200,7 @@ void WorkerService::DocumentDetached(unsigned long long document_id,
}
}
-bool WorkerService::CreateWorkerFromInstance(
+bool WorkerServiceImpl::CreateWorkerFromInstance(
WorkerProcessHost::WorkerInstance instance) {
// TODO(michaeln): We need to ensure that a process is working
// on behalf of a single browser context. The process sharing logic below
@@ -302,7 +307,7 @@ bool WorkerService::CreateWorkerFromInstance(
return true;
}
-WorkerProcessHost* WorkerService::GetProcessForDomain(const GURL& url) {
+WorkerProcessHost* WorkerServiceImpl::GetProcessForDomain(const GURL& url) {
int num_processes = 0;
std::string domain =
net::RegistryControlledDomainService::GetDomainAndRegistry(url);
@@ -326,7 +331,7 @@ WorkerProcessHost* WorkerService::GetProcessForDomain(const GURL& url) {
return NULL;
}
-WorkerProcessHost* WorkerService::GetProcessToFillUpCores() {
+WorkerProcessHost* WorkerServiceImpl::GetProcessToFillUpCores() {
int num_processes = 0;
BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
for (; !iter.Done(); ++iter)
@@ -338,7 +343,7 @@ WorkerProcessHost* WorkerService::GetProcessToFillUpCores() {
return NULL;
}
-WorkerProcessHost* WorkerService::GetLeastLoadedWorker() {
+WorkerProcessHost* WorkerServiceImpl::GetLeastLoadedWorker() {
WorkerProcessHost* smallest = NULL;
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
@@ -350,7 +355,7 @@ WorkerProcessHost* WorkerService::GetLeastLoadedWorker() {
return smallest;
}
-bool WorkerService::CanCreateWorkerProcess(
+bool WorkerServiceImpl::CanCreateWorkerProcess(
const WorkerProcessHost::WorkerInstance& instance) {
// Worker can be fired off if *any* parent has room.
const WorkerDocumentSet::DocumentInfoSet& parents =
@@ -375,9 +380,10 @@ bool WorkerService::CanCreateWorkerProcess(
return false;
}
-bool WorkerService::TabCanCreateWorkerProcess(int render_process_id,
- int render_view_id,
- bool* hit_total_worker_limit) {
+bool WorkerServiceImpl::TabCanCreateWorkerProcess(
+ int render_process_id,
+ int render_view_id,
+ bool* hit_total_worker_limit) {
int total_workers = 0;
int workers_per_tab = 0;
*hit_total_worker_limit = false;
@@ -403,7 +409,7 @@ bool WorkerService::TabCanCreateWorkerProcess(int render_process_id,
return true;
}
-void WorkerService::TryStartingQueuedWorker() {
+void WorkerServiceImpl::TryStartingQueuedWorker() {
if (queued_workers_.empty())
return;
@@ -426,9 +432,9 @@ void WorkerService::TryStartingQueuedWorker() {
}
}
-bool WorkerService::GetRendererForWorker(int worker_process_id,
- int* render_process_id,
- int* render_view_id) const {
+bool WorkerServiceImpl::GetRendererForWorker(int worker_process_id,
+ int* render_process_id,
+ int* render_view_id) const {
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
if (iter->id() != worker_process_id)
@@ -450,7 +456,7 @@ bool WorkerService::GetRendererForWorker(int worker_process_id,
return false;
}
-const WorkerProcessHost::WorkerInstance* WorkerService::FindWorkerInstance(
+const WorkerProcessHost::WorkerInstance* WorkerServiceImpl::FindWorkerInstance(
int worker_process_id) {
for (BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER);
!iter.Done(); ++iter) {
@@ -465,31 +471,30 @@ const WorkerProcessHost::WorkerInstance* WorkerService::FindWorkerInstance(
return NULL;
}
-void WorkerService::AddObserver(WorkerServiceObserver* observer) {
+void WorkerServiceImpl::AddObserver(WorkerServiceObserver* observer) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
observers_.AddObserver(observer);
}
-void WorkerService::RemoveObserver(WorkerServiceObserver* observer) {
+void WorkerServiceImpl::RemoveObserver(WorkerServiceObserver* observer) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
observers_.RemoveObserver(observer);
}
-void WorkerService::NotifyWorkerDestroyed(
+void WorkerServiceImpl::NotifyWorkerDestroyed(
WorkerProcessHost* process,
int worker_route_id) {
FOR_EACH_OBSERVER(WorkerServiceObserver, observers_,
WorkerDestroyed(process, worker_route_id));
}
-void WorkerService::NotifyWorkerContextStarted(WorkerProcessHost* process,
- int worker_route_id) {
+void WorkerServiceImpl::NotifyWorkerContextStarted(WorkerProcessHost* process,
+ int worker_route_id) {
FOR_EACH_OBSERVER(WorkerServiceObserver, observers_,
WorkerContextStarted(process, worker_route_id));
}
-WorkerProcessHost::WorkerInstance*
-WorkerService::FindSharedWorkerInstance(
+WorkerProcessHost::WorkerInstance* WorkerServiceImpl::FindSharedWorkerInstance(
const GURL& url,
const string16& name,
const content::ResourceContext* resource_context) {
@@ -507,8 +512,7 @@ WorkerService::FindSharedWorkerInstance(
return NULL;
}
-WorkerProcessHost::WorkerInstance*
-WorkerService::FindPendingInstance(
+WorkerProcessHost::WorkerInstance* WorkerServiceImpl::FindPendingInstance(
const GURL& url,
const string16& name,
const content::ResourceContext* resource_context) {
@@ -525,7 +529,7 @@ WorkerService::FindPendingInstance(
}
-void WorkerService::RemovePendingInstances(
+void WorkerServiceImpl::RemovePendingInstances(
const GURL& url,
const string16& name,
const content::ResourceContext* resource_context) {
@@ -541,8 +545,7 @@ void WorkerService::RemovePendingInstances(
}
}
-WorkerProcessHost::WorkerInstance*
-WorkerService::CreatePendingInstance(
+WorkerProcessHost::WorkerInstance* WorkerServiceImpl::CreatePendingInstance(
const GURL& url,
const string16& name,
const content::ResourceContext* resource_context) {
@@ -557,3 +560,5 @@ WorkerService::CreatePendingInstance(
pending_shared_workers_.push_back(pending);
return &pending_shared_workers_.back();
}
+
+} // namespace content
diff --git a/content/browser/worker_host/worker_service.h b/content/browser/worker_host/worker_service_impl.h
index f520600..2ec243a 100644
--- a/content/browser/worker_host/worker_service.h
+++ b/content/browser/worker_host/worker_service_impl.h
@@ -7,36 +7,40 @@
#pragma once
#include "base/basictypes.h"
+#include "base/compiler_specific.h"
#include "base/memory/singleton.h"
#include "base/observer_list.h"
#include "base/threading/non_thread_safe.h"
#include "content/browser/worker_host/worker_process_host.h"
-#include "content/common/content_export.h"
#include "content/public/browser/notification_registrar.h"
-#include "googleurl/src/gurl.h"
+#include "content/public/browser/worker_service.h"
+class GURL;
struct ViewHostMsg_CreateWorker_Params;
-class WorkerServiceObserver;
namespace content {
class ResourceContext;
-} // namespace content
+class WorkerServiceObserver;
-// A singleton for managing HTML5 web workers.
-class CONTENT_EXPORT WorkerService {
+class CONTENT_EXPORT WorkerServiceImpl
+ : public NON_EXPORTED_BASE(WorkerService) {
public:
- // Returns the WorkerService singleton.
- static WorkerService* GetInstance();
+ // Returns the WorkerServiceImpl singleton.
+ static WorkerServiceImpl* GetInstance();
+
+ // WorkerService implementation:
+ virtual void AddObserver(WorkerServiceObserver* observer) OVERRIDE;
+ virtual void RemoveObserver(WorkerServiceObserver* observer) OVERRIDE;
// These methods correspond to worker related IPCs.
void CreateWorker(const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
- const content::ResourceContext& resource_context);
+ const ResourceContext& resource_context);
void LookupSharedWorker(const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
- const content::ResourceContext* resource_context,
+ const ResourceContext* resource_context,
bool* exists,
bool* url_error);
void CancelCreateDedicatedWorker(int route_id, WorkerMessageFilter* filter);
@@ -60,9 +64,6 @@ class CONTENT_EXPORT WorkerService {
const WorkerProcessHost::WorkerInstance* FindWorkerInstance(
int worker_process_id);
- void AddObserver(WorkerServiceObserver* observer);
- void RemoveObserver(WorkerServiceObserver* observer);
-
void NotifyWorkerDestroyed(
WorkerProcessHost* process,
int worker_route_id);
@@ -78,10 +79,10 @@ class CONTENT_EXPORT WorkerService {
static const int kMaxWorkersPerTabWhenSeparate;
private:
- friend struct DefaultSingletonTraits<WorkerService>;
+ friend struct DefaultSingletonTraits<WorkerServiceImpl>;
- WorkerService();
- ~WorkerService();
+ WorkerServiceImpl();
+ virtual ~WorkerServiceImpl();
// Given a WorkerInstance, create an associated worker process.
bool CreateWorkerFromInstance(WorkerProcessHost::WorkerInstance instance);
@@ -116,22 +117,22 @@ class CONTENT_EXPORT WorkerService {
WorkerProcessHost::WorkerInstance* CreatePendingInstance(
const GURL& url,
const string16& name,
- const content::ResourceContext* resource_context);
+ const ResourceContext* resource_context);
WorkerProcessHost::WorkerInstance* FindPendingInstance(
const GURL& url,
const string16& name,
- const content::ResourceContext* resource_context);
+ const ResourceContext* resource_context);
void RemovePendingInstances(
const GURL& url,
const string16& name,
- const content::ResourceContext* resource_context);
+ const ResourceContext* resource_context);
WorkerProcessHost::WorkerInstance* FindSharedWorkerInstance(
const GURL& url,
const string16& name,
- const content::ResourceContext* resource_context);
+ const ResourceContext* resource_context);
- content::NotificationRegistrar registrar_;
+ NotificationRegistrar registrar_;
int next_worker_route_id_;
WorkerProcessHost::Instances queued_workers_;
@@ -143,7 +144,9 @@ class CONTENT_EXPORT WorkerService {
ObserverList<WorkerServiceObserver> observers_;
- DISALLOW_COPY_AND_ASSIGN(WorkerService);
+ DISALLOW_COPY_AND_ASSIGN(WorkerServiceImpl);
};
+} // namespace content
+
#endif // CONTENT_BROWSER_WORKER_HOST_WORKER_SERVICE_H_
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 08a7419..b1a5ed8 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -85,6 +85,8 @@
'public/browser/web_contents_observer.cc',
'public/browser/web_contents_observer.h',
'public/browser/web_intents_dispatcher.h',
+ 'public/browser/worker_service.h',
+ 'public/browser/worker_service_observer.h',
'browser/accessibility/browser_accessibility.cc',
'browser/accessibility/browser_accessibility.h',
'browser/accessibility/browser_accessibility_cocoa.h',
@@ -640,9 +642,8 @@
'browser/worker_host/worker_message_filter.h',
'browser/worker_host/worker_process_host.cc',
'browser/worker_host/worker_process_host.h',
- 'browser/worker_host/worker_service.cc',
- 'browser/worker_host/worker_service.h',
- 'browser/worker_host/worker_service_observer.h',
+ 'browser/worker_host/worker_service_impl.cc',
+ 'browser/worker_host/worker_service_impl.h',
'browser/zygote_host_linux.cc',
'browser/zygote_host_linux.h',
'browser/zygote_main_linux.cc',
diff --git a/content/public/browser/DEPS b/content/public/browser/DEPS
index 8302958..753ae54 100644
--- a/content/public/browser/DEPS
+++ b/content/public/browser/DEPS
@@ -11,4 +11,5 @@ include_rules = [
"+content/browser/tab_contents/page_navigator.h",
"+content/browser/tab_contents/tab_contents.h",
"+content/browser/webui/web_ui.h",
+ "+content/browser/worker_host/worker_process_host.h",
]
diff --git a/content/public/browser/worker_service.h b/content/public/browser/worker_service.h
new file mode 100644
index 0000000..c672753
--- /dev/null
+++ b/content/public/browser/worker_service.h
@@ -0,0 +1,31 @@
+// 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.
+
+#ifndef CONTENT_PUBLIC_BROWSER_WORKER_SERVICE_H_
+#define CONTENT_PUBLIC_BROWSER_WORKER_SERVICE_H_
+#pragma once
+
+#include "content/common/content_export.h"
+
+namespace content {
+
+class WorkerServiceObserver;
+
+// A singleton for managing HTML5 shared web workers. These are run in a
+// separate process, since multiple renderer processes can be talking to a
+// single shared worker.
+class WorkerService {
+ public:
+ virtual ~WorkerService() {}
+
+ // Returns the WorkerService singleton.
+ CONTENT_EXPORT static WorkerService* GetInstance();
+
+ virtual void AddObserver(WorkerServiceObserver* observer) = 0;
+ virtual void RemoveObserver(WorkerServiceObserver* observer) = 0;
+};
+
+} // namespace content
+
+#endif // CONTENT_PUBLIC_BROWSER_PLUGIN_SERVICE_H_
diff --git a/content/browser/worker_host/worker_service_observer.h b/content/public/browser/worker_service_observer.h
index ae52edd..f4b1255 100644
--- a/content/browser/worker_host/worker_service_observer.h
+++ b/content/public/browser/worker_service_observer.h
@@ -2,14 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CONTENT_BROWSER_WORKER_HOST_WORKER_SERVICE_OBSERVER_H_
-#define CONTENT_BROWSER_WORKER_HOST_WORKER_SERVICE_OBSERVER_H_
+#ifndef CONTENT_PUBLIC_BROWSER_WORKER_SERVICE_OBSERVER_H_
+#define CONTENT_PUBLIC_BROWSER_WORKER_SERVICE_OBSERVER_H_
#pragma once
#include "content/browser/worker_host/worker_process_host.h"
+namespace content {
+
class WorkerServiceObserver {
public:
+ virtual ~WorkerServiceObserver() {}
+
virtual void WorkerCreated(
WorkerProcessHost* process,
const WorkerProcessHost::WorkerInstance& instance) = 0;
@@ -19,9 +23,8 @@ class WorkerServiceObserver {
virtual void WorkerContextStarted(
WorkerProcessHost* process,
int worker_route_id) = 0;
-
- protected:
- virtual ~WorkerServiceObserver() {}
};
-#endif // CONTENT_BROWSER_WORKER_HOST_WORKER_SERVICE_OBSERVER_H_
+} // namespace content
+
+#endif // CONTENT_PUBLIC_BROWSER_WORKER_SERVICE_OBSERVER_H_
diff --git a/content/worker/test/worker_uitest.cc b/content/worker/test/worker_uitest.cc
index 698062c..ed22c52 100644
--- a/content/worker/test/worker_uitest.cc
+++ b/content/worker/test/worker_uitest.cc
@@ -13,10 +13,12 @@
#include "chrome/test/base/layout_test_http_server.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/ui/ui_layout_test.h"
-#include "content/browser/worker_host/worker_service.h"
+#include "content/browser/worker_host/worker_service_impl.h"
#include "content/public/common/url_constants.h"
#include "net/test/test_server.h"
+using content::WorkerServiceImpl;
+
namespace {
const char kTestCompleteCookie[] = "status";
@@ -586,7 +588,7 @@ TEST_F(WorkerTest, FLAKY_MessagePorts) {
#define MAYBE_LimitPerPage FLAKY_LimitPerPage
#endif
TEST_F(WorkerTest, MAYBE_LimitPerPage) {
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
+ int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate;
GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
FilePath(kManyWorkersFile));
url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab + 1));
@@ -601,8 +603,8 @@ TEST_F(WorkerTest, MAYBE_LimitPerPage) {
// Possibly causing ui_tests to hang on Mac: http://crbug.com/88958
// Times out consistently on all platforms.
TEST_F(WorkerTest, DISABLED_LimitTotal) {
- int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
- int total_workers = WorkerService::kMaxWorkersWhenSeparate;
+ int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate;
+ int total_workers = WorkerServiceImpl::kMaxWorkersWhenSeparate;
int tab_count = (total_workers / max_workers_per_tab) + 1;
GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
@@ -647,7 +649,7 @@ TEST_F(WorkerTest, FLAKY_WorkerClose) {
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;
+ int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate;
GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
FilePath(kQuerySharedWorkerShutdownFile));
url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab));
@@ -665,7 +667,7 @@ TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerShutdown) {
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;
+ int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate;
GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
FilePath(kManySharedWorkersFile));
url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1));
@@ -699,7 +701,7 @@ TEST_F(WorkerTest, FLAKY_MultipleTabsQueuedSharedWorker) {
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;
+ int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate;
GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir),
FilePath(kManySharedWorkersFile));
url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1));