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

Unified Diff: content/browser/dom_storage/dom_storage_context_wrapper.cc

Issue 2611743002: Integrate mojo localstorage implementation with DOMStorageContext API. (Closed)
Patch Set: add flush Created 3 years, 12 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/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 60083d7ee6c272aeb2f8cdeb05ee621c3451301a..926b4c0feb646961094a9d79062c1f0bf5675766 100644
--- a/content/browser/dom_storage/dom_storage_context_wrapper.cc
+++ b/content/browser/dom_storage/dom_storage_context_wrapper.cc
@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
+#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/location.h"
#include "base/memory/memory_coordinator_client_registry.h"
@@ -30,6 +31,7 @@
#include "content/public/browser/session_storage_usage_info.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
+#include "content/public/common/content_switches.h"
namespace content {
namespace {
@@ -44,11 +46,12 @@ void InvokeLocalStorageUsageCallbackHelper(
}
void GetLocalStorageUsageHelper(
+ std::vector<LocalStorageUsageInfo> mojo_usage,
base::SingleThreadTaskRunner* reply_task_runner,
DOMStorageContextImpl* context,
const DOMStorageContext::GetLocalStorageUsageCallback& callback) {
std::vector<LocalStorageUsageInfo>* infos =
- new std::vector<LocalStorageUsageInfo>;
+ new std::vector<LocalStorageUsageInfo>(std::move(mojo_usage));
context->GetLocalStorageUsage(infos, true);
reply_task_runner->PostTask(
FROM_HERE, base::Bind(&InvokeLocalStorageUsageCallbackHelper, callback,
@@ -80,14 +83,17 @@ DOMStorageContextWrapper::DOMStorageContextWrapper(
const base::FilePath& profile_path,
const base::FilePath& local_partition_path,
storage::SpecialStoragePolicy* special_storage_policy) {
- 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(
- connector, base::FilePath() /* storage_dir */));
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kMojoLocalStorage)) {
+ 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(
+ connector, base::FilePath() /* storage_dir */));
+ }
base::FilePath data_path;
if (!profile_path.empty())
@@ -141,9 +147,15 @@ DOMStorageContextWrapper::~DOMStorageContextWrapper() {}
void DOMStorageContextWrapper::GetLocalStorageUsage(
const GetLocalStorageUsageCallback& callback) {
DCHECK(context_.get());
+ if (mojo_state_) {
+ mojo_state_->GetStorageUsage(base::BindOnce(
+ &DOMStorageContextWrapper::GotMojoLocalStorageUsage, this, callback));
+ return;
+ }
context_->task_runner()->PostShutdownBlockingTask(
FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
base::Bind(&GetLocalStorageUsageHelper,
+ std::vector<LocalStorageUsageInfo>(),
base::RetainedRef(base::ThreadTaskRunnerHandle::Get()),
base::RetainedRef(context_), callback));
}
@@ -165,6 +177,8 @@ void DOMStorageContextWrapper::DeleteLocalStorageForPhysicalOrigin(
FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
base::Bind(&DOMStorageContextImpl::DeleteLocalStorageForPhysicalOrigin,
context_, origin));
+ if (mojo_state_)
+ mojo_state_->DeleteStorageForPhysicalOrigin(url::Origin(origin));
}
void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) {
@@ -173,6 +187,8 @@ void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) {
FROM_HERE,
DOMStorageTaskRunner::PRIMARY_SEQUENCE,
base::Bind(&DOMStorageContextImpl::DeleteLocalStorage, context_, origin));
+ if (mojo_state_)
+ mojo_state_->DeleteStorage(url::Origin(origin));
}
void DOMStorageContextWrapper::DeleteSessionStorage(
@@ -233,11 +249,15 @@ void DOMStorageContextWrapper::Flush() {
context_->task_runner()->PostShutdownBlockingTask(
FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
base::Bind(&DOMStorageContextImpl::Flush, context_));
+ if (mojo_state_)
+ mojo_state_->Flush();
}
void DOMStorageContextWrapper::OpenLocalStorage(
const url::Origin& origin,
mojom::LevelDBWrapperRequest request) {
+ if (!mojo_state_)
+ return;
mojo_state_->OpenLocalStorage(origin, std::move(request));
}
@@ -281,4 +301,14 @@ void DOMStorageContextWrapper::PurgeMemory(DOMStorageContextImpl::PurgeOption
base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option));
}
+void DOMStorageContextWrapper::GotMojoLocalStorageUsage(
+ GetLocalStorageUsageCallback callback,
+ std::vector<LocalStorageUsageInfo> usage) {
+ context_->task_runner()->PostShutdownBlockingTask(
michaeln 2017/01/04 21:14:44 Not sure you want to handle this in the current CL
Marijn Kruisselbrink 2017/01/04 21:17:36 Yeah, that's true. And that results in two "locals
+ FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
+ base::Bind(&GetLocalStorageUsageHelper, base::Passed(&usage),
+ base::RetainedRef(base::ThreadTaskRunnerHandle::Get()),
+ base::RetainedRef(context_), callback));
+}
+
} // namespace content
« no previous file with comments | « content/browser/dom_storage/dom_storage_context_wrapper.h ('k') | content/browser/dom_storage/local_storage_context_mojo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698