| Index: content/browser/service_worker/service_worker_cache_storage_manager.cc
|
| diff --git a/content/browser/service_worker/service_worker_cache_storage_manager.cc b/content/browser/service_worker/service_worker_cache_storage_manager.cc
|
| index b8ae678dcc38b1bd8c31806720da017d3c7325b1..0e75354035afe5945f9ed63c08823192e2cd5f3f 100644
|
| --- a/content/browser/service_worker/service_worker_cache_storage_manager.cc
|
| +++ b/content/browser/service_worker/service_worker_cache_storage_manager.cc
|
| @@ -50,8 +50,14 @@ ServiceWorkerCacheStorageManager::Create(
|
| scoped_ptr<ServiceWorkerCacheStorageManager>
|
| ServiceWorkerCacheStorageManager::Create(
|
| ServiceWorkerCacheStorageManager* old_manager) {
|
| - return make_scoped_ptr(new ServiceWorkerCacheStorageManager(
|
| - old_manager->root_path(), old_manager->cache_task_runner()));
|
| + scoped_ptr<ServiceWorkerCacheStorageManager> manager(
|
| + new ServiceWorkerCacheStorageManager(old_manager->root_path(),
|
| + old_manager->cache_task_runner()));
|
| + // These values may be NULL, in which case this will be called again later by
|
| + // the dispatcher host per usual.
|
| + manager->SetBlobParametersForCache(old_manager->url_request_context(),
|
| + old_manager->blob_storage_context());
|
| + return manager.Pass();
|
| }
|
|
|
| ServiceWorkerCacheStorageManager::~ServiceWorkerCacheStorageManager() {
|
| @@ -119,16 +125,30 @@ void ServiceWorkerCacheStorageManager::EnumerateCaches(
|
| cache_storage->EnumerateCaches(callback);
|
| }
|
|
|
| +void ServiceWorkerCacheStorageManager::SetBlobParametersForCache(
|
| + net::URLRequestContext* request_context,
|
| + base::WeakPtr<webkit_blob::BlobStorageContext> blob_storage_context) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(cache_storage_map_.empty());
|
| + DCHECK(!request_context_ || request_context_ == request_context);
|
| + DCHECK(!blob_context_ || blob_context_.get() == blob_storage_context.get());
|
| + request_context_ = request_context;
|
| + blob_context_ = blob_storage_context;
|
| +}
|
| +
|
| ServiceWorkerCacheStorageManager::ServiceWorkerCacheStorageManager(
|
| const base::FilePath& path,
|
| base::SequencedTaskRunner* cache_task_runner)
|
| - : root_path_(path), cache_task_runner_(cache_task_runner) {
|
| + : root_path_(path),
|
| + cache_task_runner_(cache_task_runner),
|
| + request_context_(NULL) {
|
| }
|
|
|
| ServiceWorkerCacheStorage*
|
| ServiceWorkerCacheStorageManager::FindOrCreateServiceWorkerCacheManager(
|
| const GURL& origin) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(request_context_);
|
|
|
| ServiceWorkerCacheStorageMap::const_iterator it =
|
| cache_storage_map_.find(origin);
|
| @@ -137,7 +157,9 @@ ServiceWorkerCacheStorageManager::FindOrCreateServiceWorkerCacheManager(
|
| ServiceWorkerCacheStorage* cache_storage =
|
| new ServiceWorkerCacheStorage(ConstructOriginPath(root_path_, origin),
|
| memory_only,
|
| - cache_task_runner_);
|
| + cache_task_runner_,
|
| + request_context_,
|
| + blob_context_);
|
| // The map owns fetch_stores.
|
| cache_storage_map_.insert(std::make_pair(origin, cache_storage));
|
| return cache_storage;
|
|
|