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

Unified Diff: content/browser/service_worker/service_worker_context_wrapper.cc

Issue 261063009: ServiceWorker: Create sequenced task runner for database (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698