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

Unified Diff: content/browser/browser_context.cc

Issue 9963107: Persist sessionStorage on disk. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 8 years, 5 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/browser_context.cc
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index 522ccd108edc29658a73f380f2713a33e3b10a37..155995d97162ec3e042ad0e014f91cca5fbd45db 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -38,6 +38,8 @@ static const char* kDownloadManagerKeyName = "download_manager";
static const char* kFileSystemContextKeyName = "content_file_system_context";
static const char* kIndexedDBContextKeyName = "content_indexed_db_context";
static const char* kQuotaManagerKeyName = "content_quota_manager";
+static const char* kSaveSessionStorageOnDiskKeyName =
+ "save_session_storage_on_disk";
namespace content {
@@ -80,9 +82,12 @@ void CreateQuotaManagerAndClients(BrowserContext* context) {
context->SetUserData(kDatabaseTrackerKeyName,
new UserDataAdapter<DatabaseTracker>(db_tracker));
+ bool session_storage_on_disk =
+ context->GetUserData(kSaveSessionStorageOnDiskKeyName) != 0;
FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath();
scoped_refptr<DOMStorageContextImpl> dom_storage_context =
- new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy());
+ new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy(),
+ session_storage_on_disk);
context->SetUserData(
kDOMStorageContextKeyName,
new UserDataAdapter<DOMStorageContextImpl>(dom_storage_context));
@@ -246,6 +251,19 @@ void BrowserContext::PurgeMemory(BrowserContext* browser_context) {
GetDOMStorageContextImpl(browser_context)->PurgeMemory();
}
+// static
+bool BrowserContext::SetSaveSessionStorageOnDisk(
+ BrowserContext* browser_context, bool save_session_storage_on_disk) {
+ if (browser_context->GetUserData(kQuotaManagerKeyName)) {
+ // Too late.
michaeln 2012/07/10 01:16:58 Is this case ever to be expected, if not should we
marja 2012/07/10 13:40:52 Done. DCHECK added. I wasn't sure if it's ok to ad
+ return false;
+ }
+ browser_context->SetUserData(
+ kSaveSessionStorageOnDiskKeyName,
+ save_session_storage_on_disk ? new base::SupportsUserData::Data() : 0);
+ return true;
+}
+
BrowserContext::~BrowserContext() {
// These message loop checks are just to avoid leaks in unittests.
if (GetUserData(kDatabaseTrackerKeyName) &&

Powered by Google App Engine
This is Rietveld 408576698