| Index: content/browser/dom_storage/dom_storage_context_wrapper.cc
|
| diff --git a/content/browser/dom_storage/dom_storage_context_wrapper.cc b/content/browser/dom_storage/dom_storage_context_wrapper.cc
|
| index be4ffb4c0b619f129745bb2b14a1d742ccb5f950..6d49cc3c1541ba0429e827cc0580647fd314aeb0 100644
|
| --- a/content/browser/dom_storage/dom_storage_context_wrapper.cc
|
| +++ b/content/browser/dom_storage/dom_storage_context_wrapper.cc
|
| @@ -128,14 +128,14 @@ DOMStorageContextWrapper::DOMStorageContextWrapper(
|
| base::FilePath storage_dir;
|
| if (!profile_path.empty())
|
| storage_dir = local_partition_path.AppendASCII(kLocalStorageDirectory);
|
| - // TODO(michaeln): Enable writing to disk when db is versioned,
|
| - // for now using an empty subdirectory to use an in-memory db.
|
| - // subdirectory_(subdirectory),
|
| - mojo_state_.reset(new LocalStorageContextMojo(
|
| + // TODO(mek): Use a SequencedTaskRunner once mojo supports that.
|
| + mojo_task_runner_ =
|
| + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
|
| + mojo_state_ = new LocalStorageContextMojo(
|
| connector, context_->task_runner(),
|
| data_path.empty() ? data_path
|
| : data_path.AppendASCII(kLocalStorageDirectory),
|
| - storage_dir));
|
| + storage_dir, special_storage_policy);
|
| }
|
|
|
| if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) {
|
| @@ -152,8 +152,14 @@ void DOMStorageContextWrapper::GetLocalStorageUsage(
|
| const GetLocalStorageUsageCallback& callback) {
|
| DCHECK(context_.get());
|
| if (mojo_state_) {
|
| - mojo_state_->GetStorageUsage(base::BindOnce(
|
| - &DOMStorageContextWrapper::GotMojoLocalStorageUsage, this, callback));
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(
|
| + &LocalStorageContextMojo::GetStorageUsage, mojo_state_,
|
| + base::BindOnce(
|
| + &DOMStorageContextWrapper::GotMojoLocalStorageUsage, this,
|
| + callback,
|
| + base::RetainedRef(base::ThreadTaskRunnerHandle::Get()))));
|
| return;
|
| }
|
| context_->task_runner()->PostShutdownBlockingTask(
|
| @@ -182,7 +188,10 @@ void DOMStorageContextWrapper::DeleteLocalStorageForPhysicalOrigin(
|
| base::Bind(&DOMStorageContextImpl::DeleteLocalStorageForPhysicalOrigin,
|
| context_, origin));
|
| if (mojo_state_)
|
| - mojo_state_->DeleteStorageForPhysicalOrigin(url::Origin(origin));
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(&LocalStorageContextMojo::DeleteStorageForPhysicalOrigin,
|
| + mojo_state_, url::Origin(origin)));
|
| }
|
|
|
| void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) {
|
| @@ -192,7 +201,9 @@ void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) {
|
| DOMStorageTaskRunner::PRIMARY_SEQUENCE,
|
| base::Bind(&DOMStorageContextImpl::DeleteLocalStorage, context_, origin));
|
| if (mojo_state_)
|
| - mojo_state_->DeleteStorage(url::Origin(origin));
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE, base::BindOnce(&LocalStorageContextMojo::DeleteStorage,
|
| + mojo_state_, url::Origin(origin)));
|
| }
|
|
|
| void DOMStorageContextWrapper::DeleteSessionStorage(
|
| @@ -232,11 +243,20 @@ void DOMStorageContextWrapper::SetForceKeepSessionState() {
|
| FROM_HERE,
|
| DOMStorageTaskRunner::PRIMARY_SEQUENCE,
|
| base::Bind(&DOMStorageContextImpl::SetForceKeepSessionState, context_));
|
| + if (mojo_state_)
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(&LocalStorageContextMojo::SetForceKeepSessionState,
|
| + mojo_state_));
|
| }
|
|
|
| void DOMStorageContextWrapper::Shutdown() {
|
| DCHECK(context_.get());
|
| - mojo_state_.reset();
|
| + if (mojo_state_) {
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(&LocalStorageContextMojo::Shutdown, mojo_state_));
|
| + }
|
| memory_pressure_listener_.reset();
|
| context_->task_runner()->PostShutdownBlockingTask(
|
| FROM_HERE,
|
| @@ -250,11 +270,14 @@ void DOMStorageContextWrapper::Shutdown() {
|
|
|
| void DOMStorageContextWrapper::Flush() {
|
| DCHECK(context_.get());
|
| +
|
| context_->task_runner()->PostShutdownBlockingTask(
|
| FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
|
| base::Bind(&DOMStorageContextImpl::Flush, context_));
|
| if (mojo_state_)
|
| - mojo_state_->Flush();
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(&LocalStorageContextMojo::Flush, mojo_state_));
|
| }
|
|
|
| void DOMStorageContextWrapper::OpenLocalStorage(
|
| @@ -262,7 +285,9 @@ void DOMStorageContextWrapper::OpenLocalStorage(
|
| mojom::LevelDBWrapperRequest request) {
|
| if (!mojo_state_)
|
| return;
|
| - mojo_state_->OpenLocalStorage(origin, std::move(request));
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE, base::BindOnce(&LocalStorageContextMojo::OpenLocalStorage,
|
| + mojo_state_, origin, std::move(request)));
|
| }
|
|
|
| void DOMStorageContextWrapper::OnMemoryPressure(
|
| @@ -286,16 +311,19 @@ void DOMStorageContextWrapper::PurgeMemory(DOMStorageContextImpl::PurgeOption
|
| FROM_HERE,
|
| base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option));
|
| if (mojo_state_ && purge_option == DOMStorageContextImpl::PURGE_AGGRESSIVE)
|
| - mojo_state_->PurgeMemory();
|
| + mojo_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(&LocalStorageContextMojo::PurgeMemory, mojo_state_));
|
| }
|
|
|
| void DOMStorageContextWrapper::GotMojoLocalStorageUsage(
|
| GetLocalStorageUsageCallback callback,
|
| + base::SingleThreadTaskRunner* reply_task_runner,
|
| std::vector<LocalStorageUsageInfo> usage) {
|
| context_->task_runner()->PostShutdownBlockingTask(
|
| FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
|
| base::Bind(&GetLocalStorageUsageHelper, base::Passed(&usage),
|
| - base::RetainedRef(base::ThreadTaskRunnerHandle::Get()),
|
| + base::RetainedRef(reply_task_runner),
|
| base::RetainedRef(context_), callback));
|
| }
|
|
|
|
|