Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Side by Side Diff: content/browser/service_worker/service_worker_context_core.cc

Issue 992353003: Decouple Cache Storage messaging from Service Worker/Embedded Worker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_context_core.h" 5 #include "content/browser/service_worker/service_worker_context_core.h"
6 6
7 #include "base/barrier_closure.h" 7 #include "base/barrier_closure.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "content/browser/service_worker/embedded_worker_registry.h" 13 #include "content/browser/service_worker/embedded_worker_registry.h"
14 #include "content/browser/service_worker/service_worker_cache_storage_manager.h"
15 #include "content/browser/service_worker/service_worker_context_observer.h" 14 #include "content/browser/service_worker/service_worker_context_observer.h"
16 #include "content/browser/service_worker/service_worker_context_wrapper.h" 15 #include "content/browser/service_worker/service_worker_context_wrapper.h"
17 #include "content/browser/service_worker/service_worker_database_task_manager.h" 16 #include "content/browser/service_worker/service_worker_database_task_manager.h"
18 #include "content/browser/service_worker/service_worker_info.h" 17 #include "content/browser/service_worker/service_worker_info.h"
19 #include "content/browser/service_worker/service_worker_job_coordinator.h" 18 #include "content/browser/service_worker/service_worker_job_coordinator.h"
20 #include "content/browser/service_worker/service_worker_process_manager.h" 19 #include "content/browser/service_worker/service_worker_process_manager.h"
21 #include "content/browser/service_worker/service_worker_provider_host.h" 20 #include "content/browser/service_worker/service_worker_provider_host.h"
22 #include "content/browser/service_worker/service_worker_register_job.h" 21 #include "content/browser/service_worker/service_worker_register_job.h"
23 #include "content/browser/service_worker/service_worker_registration.h" 22 #include "content/browser/service_worker/service_worker_registration.h"
24 #include "content/browser/service_worker/service_worker_storage.h" 23 #include "content/browser/service_worker/service_worker_storage.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 while (!provider_host_iterator_->IsAtEnd()) { 118 while (!provider_host_iterator_->IsAtEnd()) {
120 if (predicate_.is_null() || predicate_.Run(GetProviderHost())) 119 if (predicate_.is_null() || predicate_.Run(GetProviderHost()))
121 return true; 120 return true;
122 provider_host_iterator_->Advance(); 121 provider_host_iterator_->Advance();
123 } 122 }
124 return false; 123 return false;
125 } 124 }
126 125
127 ServiceWorkerContextCore::ServiceWorkerContextCore( 126 ServiceWorkerContextCore::ServiceWorkerContextCore(
128 const base::FilePath& path, 127 const base::FilePath& path,
129 const scoped_refptr<base::SequencedTaskRunner>& cache_task_runner,
130 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, 128 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager,
131 const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread, 129 const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread,
132 storage::QuotaManagerProxy* quota_manager_proxy, 130 storage::QuotaManagerProxy* quota_manager_proxy,
133 storage::SpecialStoragePolicy* special_storage_policy, 131 storage::SpecialStoragePolicy* special_storage_policy,
134 ObserverListThreadSafe<ServiceWorkerContextObserver>* observer_list, 132 ObserverListThreadSafe<ServiceWorkerContextObserver>* observer_list,
135 ServiceWorkerContextWrapper* wrapper) 133 ServiceWorkerContextWrapper* wrapper)
136 : wrapper_(wrapper), 134 : wrapper_(wrapper),
137 providers_(new ProcessToProviderMap), 135 providers_(new ProcessToProviderMap),
138 provider_by_uuid_(new ProviderByClientUUIDMap), 136 provider_by_uuid_(new ProviderByClientUUIDMap),
139 cache_manager_(ServiceWorkerCacheStorageManager::Create(
140 path,
141 cache_task_runner.get(),
142 make_scoped_refptr(quota_manager_proxy))),
143 next_handle_id_(0), 137 next_handle_id_(0),
144 next_registration_handle_id_(0), 138 next_registration_handle_id_(0),
145 observer_list_(observer_list), 139 observer_list_(observer_list),
146 weak_factory_(this) { 140 weak_factory_(this) {
147 // These get a WeakPtr from weak_factory_, so must be set after weak_factory_ 141 // These get a WeakPtr from weak_factory_, so must be set after weak_factory_
148 // is initialized. 142 // is initialized.
149 storage_ = ServiceWorkerStorage::Create(path, 143 storage_ = ServiceWorkerStorage::Create(path,
150 AsWeakPtr(), 144 AsWeakPtr(),
151 database_task_manager.Pass(), 145 database_task_manager.Pass(),
152 disk_cache_thread, 146 disk_cache_thread,
153 quota_manager_proxy, 147 quota_manager_proxy,
154 special_storage_policy); 148 special_storage_policy);
155 embedded_worker_registry_ = EmbeddedWorkerRegistry::Create(AsWeakPtr()); 149 embedded_worker_registry_ = EmbeddedWorkerRegistry::Create(AsWeakPtr());
156 job_coordinator_.reset(new ServiceWorkerJobCoordinator(AsWeakPtr())); 150 job_coordinator_.reset(new ServiceWorkerJobCoordinator(AsWeakPtr()));
157 } 151 }
158 152
159 ServiceWorkerContextCore::ServiceWorkerContextCore( 153 ServiceWorkerContextCore::ServiceWorkerContextCore(
160 ServiceWorkerContextCore* old_context, 154 ServiceWorkerContextCore* old_context,
161 ServiceWorkerContextWrapper* wrapper) 155 ServiceWorkerContextWrapper* wrapper)
162 : wrapper_(wrapper), 156 : wrapper_(wrapper),
163 providers_(old_context->providers_.release()), 157 providers_(old_context->providers_.release()),
164 provider_by_uuid_(old_context->provider_by_uuid_.release()), 158 provider_by_uuid_(old_context->provider_by_uuid_.release()),
165 cache_manager_(ServiceWorkerCacheStorageManager::Create(
166 old_context->cache_manager())),
167 next_handle_id_(old_context->next_handle_id_), 159 next_handle_id_(old_context->next_handle_id_),
168 next_registration_handle_id_(old_context->next_registration_handle_id_), 160 next_registration_handle_id_(old_context->next_registration_handle_id_),
169 observer_list_(old_context->observer_list_), 161 observer_list_(old_context->observer_list_),
170 weak_factory_(this) { 162 weak_factory_(this) {
171 // These get a WeakPtr from weak_factory_, so must be set after weak_factory_ 163 // These get a WeakPtr from weak_factory_, so must be set after weak_factory_
172 // is initialized. 164 // is initialized.
173 storage_ = ServiceWorkerStorage::Create(AsWeakPtr(), old_context->storage()); 165 storage_ = ServiceWorkerStorage::Create(AsWeakPtr(), old_context->storage());
174 embedded_worker_registry_ = EmbeddedWorkerRegistry::Create( 166 embedded_worker_registry_ = EmbeddedWorkerRegistry::Create(
175 AsWeakPtr(), 167 AsWeakPtr(),
176 old_context->embedded_worker_registry()); 168 old_context->embedded_worker_registry());
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 FROM_HERE, 444 FROM_HERE,
453 base::Bind(&ServiceWorkerContextWrapper::DeleteAndStartOver, wrapper_)); 445 base::Bind(&ServiceWorkerContextWrapper::DeleteAndStartOver, wrapper_));
454 } 446 }
455 447
456 void ServiceWorkerContextCore::DeleteAndStartOver( 448 void ServiceWorkerContextCore::DeleteAndStartOver(
457 const StatusCallback& callback) { 449 const StatusCallback& callback) {
458 job_coordinator_->AbortAll(); 450 job_coordinator_->AbortAll();
459 storage_->DeleteAndStartOver(callback); 451 storage_->DeleteAndStartOver(callback);
460 } 452 }
461 453
462 void ServiceWorkerContextCore::SetBlobParametersForCache(
463 net::URLRequestContext* request_context,
464 base::WeakPtr<storage::BlobStorageContext> blob_storage_context) {
465 DCHECK_CURRENTLY_ON(BrowserThread::IO);
466
467 cache_manager_->SetBlobParametersForCache(request_context,
468 blob_storage_context);
469 }
470
471 scoped_ptr<ServiceWorkerProviderHost> 454 scoped_ptr<ServiceWorkerProviderHost>
472 ServiceWorkerContextCore::TransferProviderHostOut( 455 ServiceWorkerContextCore::TransferProviderHostOut(
473 int process_id, int provider_id) { 456 int process_id, int provider_id) {
474 ProviderMap* map = GetProviderMapForProcess(process_id); 457 ProviderMap* map = GetProviderMapForProcess(process_id);
475 ServiceWorkerProviderHost* transferee = map->Lookup(provider_id); 458 ServiceWorkerProviderHost* transferee = map->Lookup(provider_id);
476 ServiceWorkerProviderHost* replacement = 459 ServiceWorkerProviderHost* replacement =
477 new ServiceWorkerProviderHost(process_id, 460 new ServiceWorkerProviderHost(process_id,
478 transferee->frame_id(), 461 transferee->frame_id(),
479 provider_id, 462 provider_id,
480 transferee->provider_type(), 463 transferee->provider_type(),
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 version->embedded_worker()->thread_id(), 532 version->embedded_worker()->thread_id(),
550 ServiceWorkerContextObserver::ConsoleMessage( 533 ServiceWorkerContextObserver::ConsoleMessage(
551 source_identifier, message_level, message, line_number, source_url)); 534 source_identifier, message_level, message, line_number, source_url));
552 } 535 }
553 536
554 ServiceWorkerProcessManager* ServiceWorkerContextCore::process_manager() { 537 ServiceWorkerProcessManager* ServiceWorkerContextCore::process_manager() {
555 return wrapper_->process_manager(); 538 return wrapper_->process_manager();
556 } 539 }
557 540
558 } // namespace content 541 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698