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 e6a9004d8ab2397c8f4fcd28a96d16b1ba50ba12..fd808be2c168e743a3a5a4a2e13b353de4c4c79c 100644 |
--- a/content/browser/service_worker/service_worker_context_wrapper.cc |
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc |
@@ -5,6 +5,7 @@ |
#include "content/browser/service_worker/service_worker_context_wrapper.h" |
#include "base/files/file_path.h" |
+#include "base/threading/sequenced_worker_pool.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
#include "content/browser/service_worker/service_worker_context_observer.h" |
#include "content/browser/service_worker/service_worker_process_manager.h" |
@@ -26,22 +27,12 @@ ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() { |
void ServiceWorkerContextWrapper::Init( |
const base::FilePath& user_data_directory, |
quota::QuotaManagerProxy* quota_manager_proxy) { |
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
- BrowserThread::PostTask( |
- BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&ServiceWorkerContextWrapper::Init, |
- this, |
- user_data_directory, |
- make_scoped_refptr(quota_manager_proxy))); |
- return; |
- } |
- DCHECK(!context_core_); |
- context_core_.reset(new ServiceWorkerContextCore( |
- user_data_directory, |
- quota_manager_proxy, |
- observer_list_, |
- make_scoped_ptr(new ServiceWorkerProcessManager(this)))); |
+ scoped_refptr<base::SequencedTaskRunner> database_task_runner = |
+ BrowserThread::GetBlockingPool()-> |
+ GetSequencedTaskRunnerWithShutdownBehavior( |
+ BrowserThread::GetBlockingPool()->GetSequenceToken(), |
+ base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
+ InitInternal(user_data_directory, database_task_runner, quota_manager_proxy); |
} |
void ServiceWorkerContextWrapper::Shutdown() { |
@@ -137,4 +128,35 @@ void ServiceWorkerContextWrapper::RemoveObserver( |
observer_list_->RemoveObserver(observer); |
} |
+void ServiceWorkerContextWrapper::InitForTesting( |
+ const base::FilePath& user_data_directory, |
+ base::SequencedTaskRunner* database_task_runner, |
+ quota::QuotaManagerProxy* quota_manager_proxy) { |
+ InitInternal(user_data_directory, database_task_runner, quota_manager_proxy); |
+} |
+ |
+void ServiceWorkerContextWrapper::InitInternal( |
+ const base::FilePath& user_data_directory, |
+ base::SequencedTaskRunner* database_task_runner, |
+ quota::QuotaManagerProxy* quota_manager_proxy) { |
+ if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind(&ServiceWorkerContextWrapper::InitInternal, |
+ this, |
+ user_data_directory, |
+ make_scoped_refptr(database_task_runner), |
+ make_scoped_refptr(quota_manager_proxy))); |
+ return; |
+ } |
+ DCHECK(!context_core_); |
+ context_core_.reset(new ServiceWorkerContextCore( |
+ user_data_directory, |
+ database_task_runner, |
+ quota_manager_proxy, |
+ observer_list_, |
+ make_scoped_ptr(new ServiceWorkerProcessManager(this)))); |
+} |
+ |
} // namespace content |