Index: content/browser/service_worker/service_worker_context_wrapper.cc |
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc |
index fbb00d4fc0fd42a3bd650f6ce2cb7cc28cbcfdd0..a25c00c647cd139db23e0cf12f4e43595da06f10 100644 |
--- a/content/browser/service_worker/service_worker_context_wrapper.cc |
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc |
@@ -31,6 +31,7 @@ |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/service_worker_context_observer.h" |
#include "net/base/url_util.h" |
+#include "storage/browser/blob/blob_storage_context.h" |
#include "storage/browser/quota/quota_manager_proxy.h" |
#include "storage/browser/quota/special_storage_policy.h" |
@@ -148,7 +149,9 @@ ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() { |
void ServiceWorkerContextWrapper::Init( |
const base::FilePath& user_data_directory, |
storage::QuotaManagerProxy* quota_manager_proxy, |
- storage::SpecialStoragePolicy* special_storage_policy) { |
+ storage::SpecialStoragePolicy* special_storage_policy, |
+ ChromeBlobStorageContext* blob_context, |
+ URLLoaderFactoryGetter* loader_factory_getter) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
is_incognito_ = user_data_directory.empty(); |
@@ -158,7 +161,8 @@ void ServiceWorkerContextWrapper::Init( |
scoped_refptr<base::SingleThreadTaskRunner> disk_cache_thread = |
BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE); |
InitInternal(user_data_directory, std::move(database_task_manager), |
- disk_cache_thread, quota_manager_proxy, special_storage_policy); |
+ disk_cache_thread, quota_manager_proxy, special_storage_policy, |
+ blob_context, loader_factory_getter); |
} |
void ServiceWorkerContextWrapper::Shutdown() { |
@@ -789,14 +793,18 @@ void ServiceWorkerContextWrapper::InitInternal( |
std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, |
const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread, |
storage::QuotaManagerProxy* quota_manager_proxy, |
- storage::SpecialStoragePolicy* special_storage_policy) { |
+ storage::SpecialStoragePolicy* special_storage_policy, |
+ ChromeBlobStorageContext* blob_context, |
+ URLLoaderFactoryGetter* loader_factory_getter) { |
if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
base::Bind(&ServiceWorkerContextWrapper::InitInternal, this, |
user_data_directory, base::Passed(&database_task_manager), |
disk_cache_thread, base::RetainedRef(quota_manager_proxy), |
- base::RetainedRef(special_storage_policy))); |
+ base::RetainedRef(special_storage_policy), |
+ base::RetainedRef(blob_context), |
+ base::RetainedRef(loader_factory_getter))); |
return; |
} |
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. |
@@ -807,10 +815,15 @@ void ServiceWorkerContextWrapper::InitInternal( |
if (quota_manager_proxy) { |
quota_manager_proxy->RegisterClient(new ServiceWorkerQuotaClient(this)); |
} |
+ |
+ base::WeakPtr<storage::BlobStorageContext> blob_storage_context = |
+ blob_context && blob_context->context() |
+ ? blob_context->context()->AsWeakPtr() |
+ : nullptr; |
context_core_.reset(new ServiceWorkerContextCore( |
user_data_directory, std::move(database_task_manager), disk_cache_thread, |
- quota_manager_proxy, special_storage_policy, core_observer_list_.get(), |
- this)); |
+ quota_manager_proxy, special_storage_policy, blob_storage_context, |
+ loader_factory_getter, core_observer_list_.get(), this)); |
} |
void ServiceWorkerContextWrapper::ShutdownOnIO() { |