diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-23 15:09:52 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-23 15:09:52 +0000 |
commit | 875862339838ec489d0de577be8b64ce3ba72bd9 (patch) | |
tree | ff4b51b9902bcd052f3e5a38090e7bab9c7d5968 /content/browser/worker_host | |
parent | 05b6ab4604df59e834091e413e802c10332ce93d (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | content/browser/worker_host/worker_process_host.cc | 23 | ||||
-rw-r--r-- | content/browser/worker_host/worker_process_host.h | 17 | ||||
-rw-r--r-- | content/browser/worker_host/worker_service.cc | 59 | ||||
-rw-r--r-- | content/browser/worker_host/worker_service.h | 18 |
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_; |