Index: content/browser/browser_context.cc |
=================================================================== |
--- content/browser/browser_context.cc (revision 122772) |
+++ content/browser/browser_context.cc (working copy) |
@@ -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 @@ |
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,17 +79,16 @@ |
kAppCacheServicKeyName, |
new UserDataAdapter<ChromeAppCacheService>(appcache_service)); |
- // Check first to avoid memory leak in unittests. |
Jói
2012/02/20 23:13:49
I'm sure you're sure, but would still suggest runn
jam
2012/02/21 01:20:13
oops, thanks for catching this! This change got lo
|
- 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()))); |
- } |
+ InitializeResourceContext(context); |
+ |
+ 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()))); |
} |
QuotaManager* BrowserContext::GetQuotaManager(BrowserContext* context) { |
@@ -125,7 +107,7 @@ |
context, kDatabaseTrackerKeyName); |
} |
-ChromeAppCacheService* BrowserContext::GetAppCacheService( |
+AppCacheService* BrowserContext::GetAppCacheService( |
BrowserContext* browser_context) { |
CreateQuotaManagerAndClients(browser_context); |
return UserDataAdapter<ChromeAppCacheService>::Get( |
@@ -139,25 +121,14 @@ |
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() { |
- if (GetUserData(kDatabaseTrackerKeyName) && |
- BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { |
+ if (GetUserData(kDatabaseTrackerKeyName)) { |
BrowserThread::PostTask( |
BrowserThread::FILE, FROM_HERE, |
base::Bind(&webkit_database::DatabaseTracker::Shutdown, |