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) && |