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

Side by Side Diff: content/browser/browser_context.cc

Issue 9963107: Persist sessionStorage on disk. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: code review 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/public/browser/browser_context.h" 5 #include "content/public/browser/browser_context.h"
6 6
7 #include "content/browser/appcache/chrome_appcache_service.h" 7 #include "content/browser/appcache/chrome_appcache_service.h"
8 #include "content/browser/dom_storage/dom_storage_context_impl.h" 8 #include "content/browser/dom_storage/dom_storage_context_impl.h"
9 #include "content/browser/download/download_file_manager.h" 9 #include "content/browser/download/download_file_manager.h"
10 #include "content/browser/download/download_manager_impl.h" 10 #include "content/browser/download/download_manager_impl.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 scoped_refptr<DatabaseTracker> db_tracker = new DatabaseTracker( 76 scoped_refptr<DatabaseTracker> db_tracker = new DatabaseTracker(
77 context->GetPath(), context->IsOffTheRecord(), 77 context->GetPath(), context->IsOffTheRecord(),
78 context->GetSpecialStoragePolicy(), quota_manager->proxy(), 78 context->GetSpecialStoragePolicy(), quota_manager->proxy(),
79 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); 79 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
80 context->SetUserData(kDatabaseTrackerKeyName, 80 context->SetUserData(kDatabaseTrackerKeyName,
81 new UserDataAdapter<DatabaseTracker>(db_tracker)); 81 new UserDataAdapter<DatabaseTracker>(db_tracker));
82 82
83 FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath(); 83 FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath();
84 scoped_refptr<DOMStorageContextImpl> dom_storage_context = 84 scoped_refptr<DOMStorageContextImpl> dom_storage_context =
85 new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy()); 85 new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy(),
86 context->save_session_storage_on_disk());
michaeln 2012/07/10 19:04:13 All of the other methods in the content::BrowsingC
marja 2012/07/11 12:41:31 Added virtual ShouldSaveSessionStorageOnDisk which
86 context->SetUserData( 87 context->SetUserData(
87 kDOMStorageContextKeyName, 88 kDOMStorageContextKeyName,
88 new UserDataAdapter<DOMStorageContextImpl>(dom_storage_context)); 89 new UserDataAdapter<DOMStorageContextImpl>(dom_storage_context));
89 90
90 scoped_refptr<IndexedDBContext> indexed_db_context = new IndexedDBContextImpl( 91 scoped_refptr<IndexedDBContext> indexed_db_context = new IndexedDBContextImpl(
91 path, context->GetSpecialStoragePolicy(), quota_manager->proxy(), 92 path, context->GetSpecialStoragePolicy(), quota_manager->proxy(),
92 BrowserThread::GetMessageLoopProxyForThread( 93 BrowserThread::GetMessageLoopProxyForThread(
93 BrowserThread::WEBKIT_DEPRECATED)); 94 BrowserThread::WEBKIT_DEPRECATED));
94 context->SetUserData( 95 context->SetUserData(
95 kIndexedDBContextKeyName, 96 kIndexedDBContextKeyName,
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { 240 if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) {
240 BrowserThread::PostTask( 241 BrowserThread::PostTask(
241 BrowserThread::IO, FROM_HERE, 242 BrowserThread::IO, FROM_HERE,
242 base::Bind(&PurgeMemoryOnIOThread, 243 base::Bind(&PurgeMemoryOnIOThread,
243 browser_context->GetResourceContext())); 244 browser_context->GetResourceContext()));
244 } 245 }
245 246
246 GetDOMStorageContextImpl(browser_context)->PurgeMemory(); 247 GetDOMStorageContextImpl(browser_context)->PurgeMemory();
247 } 248 }
248 249
250 BrowserContext::BrowserContext()
251 : save_session_storage_on_disk_(false) {
252 }
253
249 BrowserContext::~BrowserContext() { 254 BrowserContext::~BrowserContext() {
250 // These message loop checks are just to avoid leaks in unittests. 255 // These message loop checks are just to avoid leaks in unittests.
251 if (GetUserData(kDatabaseTrackerKeyName) && 256 if (GetUserData(kDatabaseTrackerKeyName) &&
252 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { 257 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) {
253 BrowserThread::PostTask( 258 BrowserThread::PostTask(
254 BrowserThread::FILE, FROM_HERE, 259 BrowserThread::FILE, FROM_HERE,
255 base::Bind(&webkit_database::DatabaseTracker::Shutdown, 260 base::Bind(&webkit_database::DatabaseTracker::Shutdown,
256 GetDatabaseTracker(this))); 261 GetDatabaseTracker(this)));
257 } 262 }
258 263
259 if (GetUserData(kDOMStorageContextKeyName)) 264 if (GetUserData(kDOMStorageContextKeyName))
260 GetDOMStorageContextImpl(this)->Shutdown(); 265 GetDOMStorageContextImpl(this)->Shutdown();
261 266
262 if (GetUserData(kDownloadManagerKeyName)) 267 if (GetUserData(kDownloadManagerKeyName))
263 GetDownloadManager(this)->Shutdown(); 268 GetDownloadManager(this)->Shutdown();
264 } 269 }
265 270
271 void BrowserContext::SetSaveSessionStorageOnDisk(
272 bool save_session_storage_on_disk) {
273 DCHECK(!GetUserData(kQuotaManagerKeyName));
274 save_session_storage_on_disk_ = save_session_storage_on_disk;
275 }
276
266 } // namespace content 277 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698