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 |