summaryrefslogtreecommitdiffstats
path: root/content/browser/worker_host
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-23 15:09:52 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-23 15:09:52 +0000
commit875862339838ec489d0de577be8b64ce3ba72bd9 (patch)
treeff4b51b9902bcd052f3e5a38090e7bab9c7d5968 /content/browser/worker_host
parent05b6ab4604df59e834091e413e802c10332ce93d (diff)
downloadchromium_src-875862339838ec489d0de577be8b64ce3ba72bd9.zip
chromium_src-875862339838ec489d0de577be8b64ce3ba72bd9.tar.gz
chromium_src-875862339838ec489d0de577be8b64ce3ba72bd9.tar.bz2
Switch to using content::ResourceContext* instead of incognito.
We're trying to get rid of the concept of "incognito" in content/. It was used here simply to differentiate between profiles, so we use the per-profile ResourceContext object instead. BUG=77086 TEST=existing Review URL: http://codereview.chromium.org/6882081 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82795 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/worker_host')
-rw-r--r--content/browser/worker_host/worker_message_filter.cc4
-rw-r--r--content/browser/worker_host/worker_process_host.cc23
-rw-r--r--content/browser/worker_host/worker_process_host.h17
-rw-r--r--content/browser/worker_host/worker_service.cc59
-rw-r--r--content/browser/worker_host/worker_service.h18
5 files changed, 63 insertions, 58 deletions
diff --git a/content/browser/worker_host/worker_message_filter.cc b/content/browser/worker_host/worker_message_filter.cc
index 0ed58a6..dc18ee5 100644
--- a/content/browser/worker_host/worker_message_filter.cc
+++ b/content/browser/worker_host/worker_message_filter.cc
@@ -92,10 +92,8 @@ void WorkerMessageFilter::OnLookupSharedWorker(
bool* url_error) {
*route_id = next_routing_id_->Run();
- bool incognito = static_cast<ChromeURLRequestContext*>(
- resource_context_->request_context())->is_incognito();
WorkerService::GetInstance()->LookupSharedWorker(
- params, *route_id, this, incognito, exists, url_error);
+ params, *route_id, this, resource_context_, exists, url_error);
}
void WorkerMessageFilter::OnCancelCreateDedicatedWorker(int route_id) {
diff --git a/content/browser/worker_host/worker_process_host.cc b/content/browser/worker_host/worker_process_host.cc
index 1a9670b..a061ece0 100644
--- a/content/browser/worker_host/worker_process_host.cc
+++ b/content/browser/worker_host/worker_process_host.cc
@@ -509,16 +509,14 @@ void WorkerProcessHost::DocumentDetached(WorkerMessageFilter* filter,
WorkerProcessHost::WorkerInstance::WorkerInstance(
const GURL& url,
bool shared,
- bool incognito,
const string16& name,
int worker_route_id,
int parent_process_id,
int parent_appcache_host_id,
int64 main_resource_appcache_id,
- const content::ResourceContext& resource_context)
+ const content::ResourceContext* resource_context)
: url_(url),
shared_(shared),
- incognito_(incognito),
closed_(false),
name_(name),
worker_route_id_(worker_route_id),
@@ -526,18 +524,17 @@ WorkerProcessHost::WorkerInstance::WorkerInstance(
parent_appcache_host_id_(parent_appcache_host_id),
main_resource_appcache_id_(main_resource_appcache_id),
worker_document_set_(new WorkerDocumentSet()),
- resource_context_(&resource_context) {
+ resource_context_(resource_context) {
DCHECK(resource_context_);
}
WorkerProcessHost::WorkerInstance::WorkerInstance(
const GURL& url,
bool shared,
- bool incognito,
- const string16& name)
+ const string16& name,
+ const content::ResourceContext* resource_context)
: url_(url),
shared_(shared),
- incognito_(incognito),
closed_(false),
name_(name),
worker_route_id_(MSG_ROUTING_NONE),
@@ -545,7 +542,8 @@ WorkerProcessHost::WorkerInstance::WorkerInstance(
parent_appcache_host_id_(0),
main_resource_appcache_id_(0),
worker_document_set_(new WorkerDocumentSet()),
- resource_context_(NULL) {
+ resource_context_(resource_context) {
+ DCHECK(resource_context_);
}
WorkerProcessHost::WorkerInstance::~WorkerInstance() {
@@ -557,14 +555,15 @@ WorkerProcessHost::WorkerInstance::~WorkerInstance() {
// -or-
// b) the names are both empty, and the urls are equal
bool WorkerProcessHost::WorkerInstance::Matches(
- const GURL& match_url, const string16& match_name,
- bool incognito) const {
+ const GURL& match_url,
+ const string16& match_name,
+ const content::ResourceContext* resource_context) const {
// Only match open shared workers.
if (!shared_ || closed_)
return false;
- // Incognito workers don't match non-incognito workers.
- if (incognito_ != incognito)
+ // Have to match the same ResourceContext.
+ if (resource_context_ != resource_context)
return false;
if (url_.GetOrigin() != match_url.GetOrigin())
diff --git a/content/browser/worker_host/worker_process_host.h b/content/browser/worker_host/worker_process_host.h
index 6f21b9a..0f49ee6 100644
--- a/content/browser/worker_host/worker_process_host.h
+++ b/content/browser/worker_host/worker_process_host.h
@@ -37,18 +37,17 @@ class WorkerProcessHost : public BrowserChildProcessHost {
public:
WorkerInstance(const GURL& url,
bool shared,
- bool incognito,
const string16& name,
int worker_route_id,
int parent_process_id,
int parent_appcache_host_id,
int64 main_resource_appcache_id,
- const content::ResourceContext& resource_context);
+ const content::ResourceContext* resource_context);
// Used for pending instances. Rest of the parameters are ignored.
WorkerInstance(const GURL& url,
bool shared,
- bool incognito,
- const string16& name);
+ const string16& name,
+ const content::ResourceContext* resource_context);
~WorkerInstance();
// Unique identifier for a worker client.
@@ -71,7 +70,9 @@ class WorkerProcessHost : public BrowserChildProcessHost {
// (per the comparison algorithm in the WebWorkers spec). This API only
// applies to shared workers.
bool Matches(
- const GURL& url, const string16& name, bool incognito) const;
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context) const;
// Shares the passed instance's WorkerDocumentSet with this instance. This
// instance's current WorkerDocumentSet is dereferenced (and freed if this
@@ -82,7 +83,6 @@ class WorkerProcessHost : public BrowserChildProcessHost {
// Accessors
bool shared() const { return shared_; }
- bool incognito() const { return incognito_; }
bool closed() const { return closed_; }
void set_closed(bool closed) { closed_ = closed; }
const GURL& url() const { return url_; }
@@ -96,15 +96,14 @@ class WorkerProcessHost : public BrowserChildProcessHost {
WorkerDocumentSet* worker_document_set() const {
return worker_document_set_;
}
- const content::ResourceContext& resource_context() const {
- return *resource_context_;
+ const content::ResourceContext* resource_context() const {
+ return resource_context_;
}
private:
// Set of all filters (clients) associated with this worker.
GURL url_;
bool shared_;
- bool incognito_;
bool closed_;
string16 name_;
int worker_route_id_;
diff --git a/content/browser/worker_host/worker_service.cc b/content/browser/worker_host/worker_service.cc
index 4e663e1..ce3ebac 100644
--- a/content/browser/worker_host/worker_service.cc
+++ b/content/browser/worker_host/worker_service.cc
@@ -75,10 +75,6 @@ void WorkerService::CreateWorker(
int route_id,
WorkerMessageFilter* filter,
const content::ResourceContext& resource_context) {
- // TODO(willchan): Eliminate the need for this downcast.
- bool is_incognito = static_cast<ChromeURLRequestContext*>(
- resource_context.request_context())->is_incognito();
-
// Generate a unique route id for the browser-worker communication that's
// unique among all worker processes. That way when the worker process sends
// a wrapped IPC message through us, we know which WorkerProcessHost to give
@@ -86,13 +82,12 @@ void WorkerService::CreateWorker(
WorkerProcessHost::WorkerInstance instance(
params.url,
params.is_shared,
- is_incognito,
params.name,
next_worker_route_id(),
params.is_shared ? 0 : filter->render_process_id(),
params.is_shared ? 0 : params.parent_appcache_host_id,
params.is_shared ? params.script_resource_appcache_id : 0,
- resource_context);
+ &resource_context);
instance.AddFilter(filter, route_id);
instance.worker_document_set()->Add(
filter, params.document_id, filter->render_process_id(),
@@ -105,12 +100,12 @@ void WorkerService::LookupSharedWorker(
const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
- bool incognito,
+ const content::ResourceContext* resource_context,
bool* exists,
bool* url_mismatch) {
*exists = true;
WorkerProcessHost::WorkerInstance* instance = FindSharedWorkerInstance(
- params.url, params.name, incognito);
+ params.url, params.name, resource_context);
if (!instance) {
// If no worker instance currently exists, we need to create a pending
@@ -118,7 +113,7 @@ void WorkerService::LookupSharedWorker(
// mismatched URL get the appropriate url_mismatch error at lookup time.
// Having named shared workers was a Really Bad Idea due to details like
// this.
- instance = CreatePendingInstance(params.url, params.name, incognito);
+ instance = CreatePendingInstance(params.url, params.name, resource_context);
*exists = false;
}
@@ -250,7 +245,7 @@ bool WorkerService::CreateWorkerFromInstance(
// See if a worker with this name already exists.
WorkerProcessHost::WorkerInstance* existing_instance =
FindSharedWorkerInstance(
- instance.url(), instance.name(), instance.incognito());
+ instance.url(), instance.name(), instance.resource_context());
WorkerProcessHost::WorkerInstance::FilterInfo filter_info =
instance.GetFilter();
// If this worker is already running, no need to create a new copy. Just
@@ -267,7 +262,7 @@ bool WorkerService::CreateWorkerFromInstance(
// Look to see if there's a pending instance.
WorkerProcessHost::WorkerInstance* pending = FindPendingInstance(
- instance.url(), instance.name(), instance.incognito());
+ instance.url(), instance.name(), instance.resource_context());
// If there's no instance *and* no pending instance (or there is a pending
// instance but it does not contain our filter info), then it means the
// worker started up and exited already. Log a warning because this should
@@ -289,14 +284,14 @@ bool WorkerService::CreateWorkerFromInstance(
instance.AddFilter(i->first, i->second);
}
RemovePendingInstances(
- instance.url(), instance.name(), instance.incognito());
+ instance.url(), instance.name(), instance.resource_context());
// Remove any queued instances of this worker and copy over the filter to
// this instance.
for (WorkerProcessHost::Instances::iterator iter = queued_workers_.begin();
iter != queued_workers_.end();) {
if (iter->Matches(instance.url(), instance.name(),
- instance.incognito())) {
+ instance.resource_context())) {
DCHECK(iter->NumFilters() == 1);
WorkerProcessHost::WorkerInstance::FilterInfo filter_info =
iter->GetFilter();
@@ -311,7 +306,7 @@ bool WorkerService::CreateWorkerFromInstance(
if (!worker) {
WorkerMessageFilter* first_filter = instance.filters().begin()->first;
worker = new WorkerProcessHost(
- &instance.resource_context(),
+ instance.resource_context(),
first_filter->resource_dispatcher_host());
// TODO(atwilson): This won't work if the message is from a worker process.
// We don't support that yet though (this message is only sent from
@@ -495,8 +490,10 @@ const WorkerProcessHost::WorkerInstance* WorkerService::FindWorkerInstance(
}
WorkerProcessHost::WorkerInstance*
-WorkerService::FindSharedWorkerInstance(const GURL& url, const string16& name,
- bool incognito) {
+WorkerService::FindSharedWorkerInstance(
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context) {
for (BrowserChildProcessHost::Iterator iter(ChildProcessInfo::WORKER_PROCESS);
!iter.Done(); ++iter) {
WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter);
@@ -504,7 +501,7 @@ WorkerService::FindSharedWorkerInstance(const GURL& url, const string16& name,
worker->mutable_instances().begin();
instance_iter != worker->mutable_instances().end();
++instance_iter) {
- if (instance_iter->Matches(url, name, incognito))
+ if (instance_iter->Matches(url, name, resource_context))
return &(*instance_iter);
}
}
@@ -512,14 +509,16 @@ WorkerService::FindSharedWorkerInstance(const GURL& url, const string16& name,
}
WorkerProcessHost::WorkerInstance*
-WorkerService::FindPendingInstance(const GURL& url, const string16& name,
- bool incognito) {
+WorkerService::FindPendingInstance(
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context) {
// Walk the pending instances looking for a matching pending worker.
for (WorkerProcessHost::Instances::iterator iter =
pending_shared_workers_.begin();
iter != pending_shared_workers_.end();
++iter) {
- if (iter->Matches(url, name, incognito)) {
+ if (iter->Matches(url, name, resource_context)) {
return &(*iter);
}
}
@@ -527,14 +526,15 @@ WorkerService::FindPendingInstance(const GURL& url, const string16& name,
}
-void WorkerService::RemovePendingInstances(const GURL& url,
- const string16& name,
- bool incognito) {
+void WorkerService::RemovePendingInstances(
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context) {
// Walk the pending instances looking for a matching pending worker.
for (WorkerProcessHost::Instances::iterator iter =
pending_shared_workers_.begin();
iter != pending_shared_workers_.end(); ) {
- if (iter->Matches(url, name, incognito)) {
+ if (iter->Matches(url, name, resource_context)) {
iter = pending_shared_workers_.erase(iter);
} else {
++iter;
@@ -543,17 +543,18 @@ void WorkerService::RemovePendingInstances(const GURL& url,
}
WorkerProcessHost::WorkerInstance*
-WorkerService::CreatePendingInstance(const GURL& url,
- const string16& name,
- bool incognito) {
+WorkerService::CreatePendingInstance(
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context) {
// Look for an existing pending shared worker.
WorkerProcessHost::WorkerInstance* instance =
- FindPendingInstance(url, name, incognito);
+ FindPendingInstance(url, name, resource_context);
if (instance)
return instance;
// No existing pending worker - create a new one.
- WorkerProcessHost::WorkerInstance pending(url, true, incognito, name);
+ WorkerProcessHost::WorkerInstance pending(url, true, name, resource_context);
pending_shared_workers_.push_back(pending);
return &pending_shared_workers_.back();
}
diff --git a/content/browser/worker_host/worker_service.h b/content/browser/worker_host/worker_service.h
index ff64d43..b6c3abc 100644
--- a/content/browser/worker_host/worker_service.h
+++ b/content/browser/worker_host/worker_service.h
@@ -34,7 +34,7 @@ class WorkerService {
void LookupSharedWorker(const ViewHostMsg_CreateWorker_Params& params,
int route_id,
WorkerMessageFilter* filter,
- bool incognito,
+ const content::ResourceContext* resource_context,
bool* exists,
bool* url_error);
void CancelCreateDedicatedWorker(int route_id, WorkerMessageFilter* filter);
@@ -102,14 +102,22 @@ class WorkerService {
// APIs for manipulating our set of pending shared worker instances.
WorkerProcessHost::WorkerInstance* CreatePendingInstance(
- const GURL& url, const string16& name, bool incognito);
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context);
WorkerProcessHost::WorkerInstance* FindPendingInstance(
- const GURL& url, const string16& name, bool incognito);
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context);
void RemovePendingInstances(
- const GURL& url, const string16& name, bool incognito);
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context);
WorkerProcessHost::WorkerInstance* FindSharedWorkerInstance(
- const GURL& url, const string16& name, bool incognito);
+ const GURL& url,
+ const string16& name,
+ const content::ResourceContext* resource_context);
NotificationRegistrar registrar_;
int next_worker_route_id_;