diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-21 03:57:42 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-21 03:57:42 +0000 |
commit | 314c3e2d86a4595db7b1ab02b2acd4decf21d65f (patch) | |
tree | 593431d4dad2fa3c944d8e8f97da3f6fc56140f6 /content/browser/browser_context.cc | |
parent | c537090136d23d0064488c27de3bb2ba0f1ac120 (diff) | |
download | chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.zip chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.tar.gz chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.tar.bz2 |
Remove getters for HTML5 related objects from the ResourceContext interface. Half of them weren't used by chrome, so they can be hidden from chrome. The rest were accessed by chrome, but we don't need every embedder to store this data on their ResourceContext implementation. Instead have content associate the data itself to simplify the work for embedders.
BUG=98716
Review URL: https://chromiumcodereview.appspot.com/9425026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122790 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/browser_context.cc')
-rw-r--r-- | content/browser/browser_context.cc | 61 |
1 files changed, 18 insertions, 43 deletions
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc index 1461b14..d56e797 100644 --- a/content/browser/browser_context.cc +++ b/content/browser/browser_context.cc @@ -5,21 +5,23 @@ #include "content/public/browser/browser_context.h" #include "content/browser/appcache/chrome_appcache_service.h" -#include "content/browser/chrome_blob_storage_context.h" #include "content/browser/file_system/browser_file_system_helper.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" #include "webkit/database/database_tracker.h" #include "webkit/quota/quota_manager.h" +using appcache::AppCacheService; +using base::UserDataAdapter; using content::BrowserThread; using fileapi::FileSystemContext; using quota::QuotaManager; using webkit_database::DatabaseTracker; +// Key names on BrowserContext. static const char* kAppCacheServicKeyName = "content_appcache_service_tracker"; -static const char* kBlobStorageContextKeyName = "content_blob_storage_context"; static const char* kDatabaseTrackerKeyName = "content_database_tracker"; static const char* kFileSystemContextKeyName = "content_file_system_context"; static const char* kQuotaManagerKeyName = "content_quota_manager"; @@ -27,25 +29,6 @@ static const char* kWebKitContextKeyName = "content_webkit_context"; namespace content { -// Adapter class that releases a refcounted object when the -// SupportsUserData::Data object is deleted. -template <typename T> -class UserDataAdapter : public base::SupportsUserData::Data { - public: - static T* Get(BrowserContext* context, const char* key) { - UserDataAdapter* data = - static_cast<UserDataAdapter*>(context->GetUserData(key)); - return static_cast<T*>(data->object_.get()); - } - - UserDataAdapter(T* object) : object_(object) {} - - private: - scoped_refptr<T> object_; - - DISALLOW_COPY_AND_ASSIGN(UserDataAdapter); -}; - void CreateQuotaManagerAndClients(BrowserContext* context) { if (context->GetUserData(kQuotaManagerKeyName)) { DCHECK(context->GetUserData(kDatabaseTrackerKeyName)); @@ -96,16 +79,18 @@ void CreateQuotaManagerAndClients(BrowserContext* context) { kAppCacheServicKeyName, new UserDataAdapter<ChromeAppCacheService>(appcache_service)); + InitializeResourceContext(context); + // Check first to avoid memory leak in unittests. if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ChromeAppCacheService::InitializeOnIOThread, - appcache_service, - context->IsOffTheRecord() ? FilePath() : - context->GetPath().Append(content::kAppCacheDirname), - context->GetResourceContext(), - make_scoped_refptr(context->GetSpecialStoragePolicy()))); + BrowserThread::IO, FROM_HERE, + base::Bind(&ChromeAppCacheService::InitializeOnIOThread, + appcache_service, + context->IsOffTheRecord() ? FilePath() : + context->GetPath().Append(content::kAppCacheDirname), + context->GetResourceContext(), + make_scoped_refptr(context->GetSpecialStoragePolicy()))); } } @@ -125,7 +110,7 @@ DatabaseTracker* BrowserContext::GetDatabaseTracker(BrowserContext* context) { context, kDatabaseTrackerKeyName); } -ChromeAppCacheService* BrowserContext::GetAppCacheService( +AppCacheService* BrowserContext::GetAppCacheService( BrowserContext* browser_context) { CreateQuotaManagerAndClients(browser_context); return UserDataAdapter<ChromeAppCacheService>::Get( @@ -139,20 +124,10 @@ FileSystemContext* BrowserContext::GetFileSystemContext( browser_context, kFileSystemContextKeyName); } -ChromeBlobStorageContext* BrowserContext::GetBlobStorageContext( - BrowserContext* context) { - if (!context->GetUserData(kBlobStorageContextKeyName)) { - scoped_refptr<ChromeBlobStorageContext> blob = - new ChromeBlobStorageContext(); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ChromeBlobStorageContext::InitializeOnIOThread, blob)); - context->SetUserData(kBlobStorageContextKeyName, - new UserDataAdapter<ChromeBlobStorageContext>(blob)); - } - - return UserDataAdapter<ChromeBlobStorageContext>::Get( - context, kBlobStorageContextKeyName); +void BrowserContext::EnsureResourceContextInitialized(BrowserContext* context) { + if (context->GetResourceContext()->GetUserData(kWebKitContextKeyName)) + return; + InitializeResourceContext(context); } BrowserContext::~BrowserContext() { |