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

Unified Diff: content/browser/browser_context.cc

Issue 9467016: Get rid of WebKitContext. Only two out of six HTML5 related objects were in it and it was just a gl… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix bug Created 8 years, 10 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
« no previous file with comments | « chrome/test/base/testing_profile.cc ('k') | content/browser/in_process_webkit/dom_storage_area.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/browser_context.cc
===================================================================
--- content/browser/browser_context.cc (revision 123509)
+++ content/browser/browser_context.cc (working copy)
@@ -8,7 +8,6 @@
#include "content/browser/file_system/browser_file_system_helper.h"
#include "content/browser/in_process_webkit/dom_storage_context_impl.h"
#include "content/browser/in_process_webkit/indexed_db_context_impl.h"
-#include "content/browser/in_process_webkit/webkit_context.h"
#include "content/browser/resource_context_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_constants.h"
@@ -28,17 +27,19 @@
// Key names on BrowserContext.
static const char* kAppCacheServicKeyName = "content_appcache_service_tracker";
static const char* kDatabaseTrackerKeyName = "content_database_tracker";
+static const char* kDOMStorageContextKeyName = "content_dom_storage_context";
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* kWebKitContextKeyName = "content_webkit_context";
namespace content {
void CreateQuotaManagerAndClients(BrowserContext* context) {
if (context->GetUserData(kQuotaManagerKeyName)) {
DCHECK(context->GetUserData(kDatabaseTrackerKeyName));
+ DCHECK(context->GetUserData(kDOMStorageContextKeyName));
DCHECK(context->GetUserData(kFileSystemContextKeyName));
- DCHECK(context->GetUserData(kWebKitContextKeyName));
+ DCHECK(context->GetUserData(kIndexedDBContextKeyName));
return;
}
@@ -70,13 +71,20 @@
context->SetUserData(kDatabaseTrackerKeyName,
new UserDataAdapter<DatabaseTracker>(db_tracker));
- scoped_refptr<WebKitContext> webkit_context = new WebKitContext(
- context->IsOffTheRecord(), context->GetPath(),
- context->GetSpecialStoragePolicy(), quota_manager->proxy(),
+ FilePath path = context->IsOffTheRecord() ? FilePath() : context->GetPath();
+ scoped_refptr<DOMStorageContext> dom_storage_context =
+ new DOMStorageContextImpl(path, context->GetSpecialStoragePolicy());
+ context->SetUserData(
+ kDOMStorageContextKeyName,
+ new UserDataAdapter<DOMStorageContext>(dom_storage_context));
+
+ scoped_refptr<IndexedDBContext> indexed_db_context = new IndexedDBContextImpl(
+ path, context->GetSpecialStoragePolicy(), quota_manager->proxy(),
BrowserThread::GetMessageLoopProxyForThread(
BrowserThread::WEBKIT_DEPRECATED));
- context->SetUserData(kWebKitContextKeyName,
- new UserDataAdapter<WebKitContext>(webkit_context));
+ context->SetUserData(
+ kIndexedDBContextKeyName,
+ new UserDataAdapter<IndexedDBContext>(indexed_db_context));
scoped_refptr<ChromeAppCacheService> appcache_service =
new ChromeAppCacheService(quota_manager->proxy());
@@ -127,11 +135,19 @@
return UserDataAdapter<QuotaManager>::Get(context, kQuotaManagerKeyName);
}
-WebKitContext* BrowserContext::GetWebKitContext(BrowserContext* context) {
+DOMStorageContext* BrowserContext::GetDOMStorageContext(
+ BrowserContext* context) {
CreateQuotaManagerAndClients(context);
- return UserDataAdapter<WebKitContext>::Get(context, kWebKitContextKeyName);
+ return UserDataAdapter<DOMStorageContext>::Get(
+ context, kDOMStorageContextKeyName);
}
+IndexedDBContext* BrowserContext::GetIndexedDBContext(BrowserContext* context) {
+ CreateQuotaManagerAndClients(context);
+ return UserDataAdapter<IndexedDBContext>::Get(
+ context, kIndexedDBContextKeyName);
+}
+
DatabaseTracker* BrowserContext::GetDatabaseTracker(BrowserContext* context) {
CreateQuotaManagerAndClients(context);
return UserDataAdapter<DatabaseTracker>::Get(
@@ -168,9 +184,9 @@
if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT_DEPRECATED)) {
DOMStorageContextImpl* dom_context = static_cast<DOMStorageContextImpl*>(
- DOMStorageContextImpl::GetForBrowserContext(browser_context));
+ GetDOMStorageContext(browser_context));
IndexedDBContextImpl* indexed_db = static_cast<IndexedDBContextImpl*>(
- IndexedDBContext::GetForBrowserContext(browser_context));
+ GetIndexedDBContext(browser_context));
BrowserThread::PostTask(
BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
base::Bind(&SaveSessionStateOnWebkitThread,
@@ -181,11 +197,11 @@
void BrowserContext::ClearLocalOnDestruction(BrowserContext* browser_context) {
DOMStorageContextImpl* dom_context = static_cast<DOMStorageContextImpl*>(
- DOMStorageContextImpl::GetForBrowserContext(browser_context));
+ GetDOMStorageContext(browser_context));
dom_context->set_clear_local_state_on_exit(true);
IndexedDBContextImpl* indexed_db = static_cast<IndexedDBContextImpl*>(
- IndexedDBContext::GetForBrowserContext(browser_context));
+ GetIndexedDBContext(browser_context));
indexed_db->set_clear_local_state_on_exit(true);
GetDatabaseTracker(browser_context)->SetClearLocalStateOnExit(true);
@@ -208,7 +224,7 @@
if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT_DEPRECATED)) {
DOMStorageContextImpl* dom_context = static_cast<DOMStorageContextImpl*>(
- DOMStorageContextImpl::GetForBrowserContext(browser_context));
+ GetDOMStorageContext(browser_context));
BrowserThread::PostTask(
BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
base::Bind(&PurgeMemoryOnWebkitThread,
@@ -217,6 +233,7 @@
}
BrowserContext::~BrowserContext() {
+ // These message loop checks are just to avoid leaks in unittests.
if (GetUserData(kDatabaseTrackerKeyName) &&
BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) {
BrowserThread::PostTask(
@@ -224,6 +241,15 @@
base::Bind(&webkit_database::DatabaseTracker::Shutdown,
GetDatabaseTracker(this)));
}
+
+ if (GetUserData(kDOMStorageContextKeyName) &&
+ BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT_DEPRECATED)) {
+ DOMStorageContext* dom_storage_context =
+ (static_cast<UserDataAdapter<DOMStorageContext>*>(
+ GetUserData(kDOMStorageContextKeyName)))->release();
+ BrowserThread::ReleaseSoon(
+ BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, dom_storage_context);
+ }
}
} // namespace content
« no previous file with comments | « chrome/test/base/testing_profile.cc ('k') | content/browser/in_process_webkit/dom_storage_area.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698