Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 20 matching lines...) Expand all Loading... | |
| 31 using webkit_database::DatabaseTracker; | 31 using webkit_database::DatabaseTracker; |
| 32 | 32 |
| 33 // Key names on BrowserContext. | 33 // Key names on BrowserContext. |
| 34 static const char* kAppCacheServicKeyName = "content_appcache_service_tracker"; | 34 static const char* kAppCacheServicKeyName = "content_appcache_service_tracker"; |
| 35 static const char* kDatabaseTrackerKeyName = "content_database_tracker"; | 35 static const char* kDatabaseTrackerKeyName = "content_database_tracker"; |
| 36 static const char* kDOMStorageContextKeyName = "content_dom_storage_context"; | 36 static const char* kDOMStorageContextKeyName = "content_dom_storage_context"; |
| 37 static const char* kDownloadManagerKeyName = "download_manager"; | 37 static const char* kDownloadManagerKeyName = "download_manager"; |
| 38 static const char* kFileSystemContextKeyName = "content_file_system_context"; | 38 static const char* kFileSystemContextKeyName = "content_file_system_context"; |
| 39 static const char* kIndexedDBContextKeyName = "content_indexed_db_context"; | 39 static const char* kIndexedDBContextKeyName = "content_indexed_db_context"; |
| 40 static const char* kQuotaManagerKeyName = "content_quota_manager"; | 40 static const char* kQuotaManagerKeyName = "content_quota_manager"; |
| 41 static const char* kSaveSessionStorageOnDiskKeyName = | |
| 42 "save_session_storage_on_disk"; | |
| 41 | 43 |
| 42 namespace content { | 44 namespace content { |
| 43 | 45 |
| 44 namespace { | 46 namespace { |
| 45 | 47 |
| 46 void CreateQuotaManagerAndClients(BrowserContext* context) { | 48 void CreateQuotaManagerAndClients(BrowserContext* context) { |
| 47 if (context->GetUserData(kQuotaManagerKeyName)) { | 49 if (context->GetUserData(kQuotaManagerKeyName)) { |
| 48 DCHECK(context->GetUserData(kDatabaseTrackerKeyName)); | 50 DCHECK(context->GetUserData(kDatabaseTrackerKeyName)); |
| 49 DCHECK(context->GetUserData(kDOMStorageContextKeyName)); | 51 DCHECK(context->GetUserData(kDOMStorageContextKeyName)); |
| 50 DCHECK(context->GetUserData(kFileSystemContextKeyName)); | 52 DCHECK(context->GetUserData(kFileSystemContextKeyName)); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 73 kFileSystemContextKeyName, | 75 kFileSystemContextKeyName, |
| 74 new UserDataAdapter<FileSystemContext>(filesystem_context)); | 76 new UserDataAdapter<FileSystemContext>(filesystem_context)); |
| 75 | 77 |
| 76 scoped_refptr<DatabaseTracker> db_tracker = new DatabaseTracker( | 78 scoped_refptr<DatabaseTracker> db_tracker = new DatabaseTracker( |
| 77 context->GetPath(), context->IsOffTheRecord(), | 79 context->GetPath(), context->IsOffTheRecord(), |
| 78 context->GetSpecialStoragePolicy(), quota_manager->proxy(), | 80 context->GetSpecialStoragePolicy(), quota_manager->proxy(), |
| 79 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); | 81 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); |
| 80 context->SetUserData(kDatabaseTrackerKeyName, | 82 context->SetUserData(kDatabaseTrackerKeyName, |
| 81 new UserDataAdapter<DatabaseTracker>(db_tracker)); | 83 new UserDataAdapter<DatabaseTracker>(db_tracker)); |
| 82 | 84 |
| 85 bool session_storage_on_disk = | |
| 86 context->GetUserData(kSaveSessionStorageOnDiskKeyName) != 0; | |
| 83 FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath(); | 87 FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath(); |
| 84 scoped_refptr<DOMStorageContextImpl> dom_storage_context = | 88 scoped_refptr<DOMStorageContextImpl> dom_storage_context = |
| 85 new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy()); | 89 new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy(), |
| 90 session_storage_on_disk); | |
| 86 context->SetUserData( | 91 context->SetUserData( |
| 87 kDOMStorageContextKeyName, | 92 kDOMStorageContextKeyName, |
| 88 new UserDataAdapter<DOMStorageContextImpl>(dom_storage_context)); | 93 new UserDataAdapter<DOMStorageContextImpl>(dom_storage_context)); |
| 89 | 94 |
| 90 scoped_refptr<IndexedDBContext> indexed_db_context = new IndexedDBContextImpl( | 95 scoped_refptr<IndexedDBContext> indexed_db_context = new IndexedDBContextImpl( |
| 91 path, context->GetSpecialStoragePolicy(), quota_manager->proxy(), | 96 path, context->GetSpecialStoragePolicy(), quota_manager->proxy(), |
| 92 BrowserThread::GetMessageLoopProxyForThread( | 97 BrowserThread::GetMessageLoopProxyForThread( |
| 93 BrowserThread::WEBKIT_DEPRECATED)); | 98 BrowserThread::WEBKIT_DEPRECATED)); |
| 94 context->SetUserData( | 99 context->SetUserData( |
| 95 kIndexedDBContextKeyName, | 100 kIndexedDBContextKeyName, |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 239 if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { | 244 if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { |
| 240 BrowserThread::PostTask( | 245 BrowserThread::PostTask( |
| 241 BrowserThread::IO, FROM_HERE, | 246 BrowserThread::IO, FROM_HERE, |
| 242 base::Bind(&PurgeMemoryOnIOThread, | 247 base::Bind(&PurgeMemoryOnIOThread, |
| 243 browser_context->GetResourceContext())); | 248 browser_context->GetResourceContext())); |
| 244 } | 249 } |
| 245 | 250 |
| 246 GetDOMStorageContextImpl(browser_context)->PurgeMemory(); | 251 GetDOMStorageContextImpl(browser_context)->PurgeMemory(); |
| 247 } | 252 } |
| 248 | 253 |
| 254 // static | |
| 255 bool BrowserContext::SetSaveSessionStorageOnDisk( | |
| 256 BrowserContext* browser_context, bool save_session_storage_on_disk) { | |
| 257 if (browser_context->GetUserData(kQuotaManagerKeyName)) { | |
| 258 // 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
| |
| 259 return false; | |
| 260 } | |
| 261 browser_context->SetUserData( | |
| 262 kSaveSessionStorageOnDiskKeyName, | |
| 263 save_session_storage_on_disk ? new base::SupportsUserData::Data() : 0); | |
| 264 return true; | |
| 265 } | |
| 266 | |
| 249 BrowserContext::~BrowserContext() { | 267 BrowserContext::~BrowserContext() { |
| 250 // These message loop checks are just to avoid leaks in unittests. | 268 // These message loop checks are just to avoid leaks in unittests. |
| 251 if (GetUserData(kDatabaseTrackerKeyName) && | 269 if (GetUserData(kDatabaseTrackerKeyName) && |
| 252 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { | 270 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { |
| 253 BrowserThread::PostTask( | 271 BrowserThread::PostTask( |
| 254 BrowserThread::FILE, FROM_HERE, | 272 BrowserThread::FILE, FROM_HERE, |
| 255 base::Bind(&webkit_database::DatabaseTracker::Shutdown, | 273 base::Bind(&webkit_database::DatabaseTracker::Shutdown, |
| 256 GetDatabaseTracker(this))); | 274 GetDatabaseTracker(this))); |
| 257 } | 275 } |
| 258 | 276 |
| 259 if (GetUserData(kDOMStorageContextKeyName)) | 277 if (GetUserData(kDOMStorageContextKeyName)) |
| 260 GetDOMStorageContextImpl(this)->Shutdown(); | 278 GetDOMStorageContextImpl(this)->Shutdown(); |
| 261 | 279 |
| 262 if (GetUserData(kDownloadManagerKeyName)) | 280 if (GetUserData(kDownloadManagerKeyName)) |
| 263 GetDownloadManager(this)->Shutdown(); | 281 GetDownloadManager(this)->Shutdown(); |
| 264 } | 282 } |
| 265 | 283 |
| 266 } // namespace content | 284 } // namespace content |
| OLD | NEW |