| Index: trunk/src/content/browser/storage_partition_impl.cc
|
| ===================================================================
|
| --- trunk/src/content/browser/storage_partition_impl.cc (revision 219785)
|
| +++ trunk/src/content/browser/storage_partition_impl.cc (working copy)
|
| @@ -9,7 +9,6 @@
|
| #include "content/browser/browser_main_loop.h"
|
| #include "content/browser/fileapi/browser_file_system_helper.h"
|
| #include "content/browser/gpu/shader_disk_cache.h"
|
| -#include "content/browser/net/cookie_store_map.h"
|
| #include "content/common/dom_storage/dom_storage_types.h"
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -17,7 +16,6 @@
|
| #include "content/public/browser/indexed_db_context.h"
|
| #include "content/public/browser/local_storage_usage_info.h"
|
| #include "content/public/browser/session_storage_usage_info.h"
|
| -#include "content/public/common/url_constants.h"
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/cookies/cookie_monster.h"
|
| @@ -45,6 +43,40 @@
|
| return quota_client_mask;
|
| }
|
|
|
| +void OnClearedCookies(const base::Closure& callback, int num_deleted) {
|
| + // The final callback needs to happen from UI thread.
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&OnClearedCookies, callback, num_deleted));
|
| + return;
|
| + }
|
| +
|
| + callback.Run();
|
| +}
|
| +
|
| +void ClearCookiesOnIOThread(
|
| + const scoped_refptr<net::URLRequestContextGetter>& rq_context,
|
| + const base::Time begin,
|
| + const base::Time end,
|
| + const GURL& remove_origin,
|
| + const base::Closure& callback) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + net::CookieStore* cookie_store = rq_context->
|
| + GetURLRequestContext()->cookie_store();
|
| + if (remove_origin.is_empty()) {
|
| + cookie_store->GetCookieMonster()->DeleteAllCreatedBetweenAsync(
|
| + begin,
|
| + end,
|
| + base::Bind(&OnClearedCookies, callback));
|
| + } else {
|
| + cookie_store->GetCookieMonster()->DeleteAllCreatedBetweenForHostAsync(
|
| + begin,
|
| + end,
|
| + remove_origin, base::Bind(&OnClearedCookies, callback));
|
| + }
|
| +}
|
| +
|
| void OnQuotaManagedOriginDeleted(const GURL& origin,
|
| quota::StorageType type,
|
| size_t* origins_to_delete_count,
|
| @@ -216,7 +248,7 @@
|
| uint32 quota_storage_remove_mask,
|
| const GURL& remove_origin,
|
| const base::FilePath& path,
|
| - CookieStoreMap* cookie_store_map,
|
| + net::URLRequestContextGetter* rq_context,
|
| DOMStorageContextWrapper* dom_storage_context,
|
| quota::QuotaManager* quota_manager,
|
| WebRTCIdentityStore* webrtc_identity_store,
|
| @@ -252,7 +284,6 @@
|
| webkit_database::DatabaseTracker* database_tracker,
|
| DOMStorageContextWrapper* dom_storage_context,
|
| IndexedDBContextImpl* indexed_db_context,
|
| - scoped_ptr<CookieStoreMap> cookie_store_map,
|
| WebRTCIdentityStore* webrtc_identity_store)
|
| : partition_path_(partition_path),
|
| quota_manager_(quota_manager),
|
| @@ -261,9 +292,7 @@
|
| database_tracker_(database_tracker),
|
| dom_storage_context_(dom_storage_context),
|
| indexed_db_context_(indexed_db_context),
|
| - cookie_store_map_(cookie_store_map.Pass()),
|
| - webrtc_identity_store_(webrtc_identity_store) {
|
| -}
|
| + webrtc_identity_store_(webrtc_identity_store) {}
|
|
|
| StoragePartitionImpl::~StoragePartitionImpl() {
|
| // These message loop checks are just to avoid leaks in unittests.
|
| @@ -287,8 +316,7 @@
|
| StoragePartitionImpl* StoragePartitionImpl::Create(
|
| BrowserContext* context,
|
| bool in_memory,
|
| - const base::FilePath& partition_path,
|
| - scoped_ptr<CookieStoreMap> cookie_store_map) {
|
| + const base::FilePath& partition_path) {
|
| // Ensure that these methods are called on the UI thread, except for
|
| // unittests where a UI thread might not have been created.
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
| @@ -352,7 +380,6 @@
|
| database_tracker.get(),
|
| dom_storage_context.get(),
|
| indexed_db_context.get(),
|
| - cookie_store_map.Pass(),
|
| webrtc_identity_store.get());
|
| }
|
|
|
| @@ -393,15 +420,11 @@
|
| return indexed_db_context_.get();
|
| }
|
|
|
| -net::CookieStore* StoragePartitionImpl::GetCookieStoreForScheme(
|
| - const std::string& scheme) {
|
| - return GetCookieStoreMap().GetForScheme(scheme);
|
| -}
|
| -
|
| void StoragePartitionImpl::ClearDataImpl(
|
| uint32 remove_mask,
|
| uint32 quota_storage_remove_mask,
|
| const GURL& remove_origin,
|
| + net::URLRequestContextGetter* rq_context,
|
| const base::Time begin,
|
| const base::Time end,
|
| const base::Closure& callback) {
|
| @@ -411,7 +434,7 @@
|
| // DataDeletionHelper::DecrementTaskCountOnUI().
|
| helper->ClearDataOnUIThread(
|
| remove_mask, quota_storage_remove_mask, remove_origin,
|
| - GetPath(), cookie_store_map_.get(), dom_storage_context_, quota_manager_,
|
| + GetPath(), rq_context, dom_storage_context_, quota_manager_,
|
| webrtc_identity_store_, begin, end);
|
| }
|
|
|
| @@ -524,7 +547,7 @@
|
| uint32 quota_storage_remove_mask,
|
| const GURL& remove_origin,
|
| const base::FilePath& path,
|
| - CookieStoreMap* cookie_store_map,
|
| + net::URLRequestContextGetter* rq_context,
|
| DOMStorageContextWrapper* dom_storage_context,
|
| quota::QuotaManager* quota_manager,
|
| WebRTCIdentityStore* webrtc_identity_store,
|
| @@ -540,8 +563,11 @@
|
| if (remove_mask & REMOVE_DATA_MASK_COOKIES) {
|
| // Handle the cookies.
|
| IncrementTaskCountOnUI();
|
| - cookie_store_map->DeleteCookies(remove_origin, begin, end,
|
| - decrement_callback);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&ClearCookiesOnIOThread,
|
| + make_scoped_refptr(rq_context), begin, end, remove_origin,
|
| + decrement_callback));
|
| }
|
|
|
| if (remove_mask & REMOVE_DATA_MASK_INDEXEDDB ||
|
| @@ -600,17 +626,20 @@
|
| void StoragePartitionImpl::ClearDataForOrigin(
|
| uint32 remove_mask,
|
| uint32 quota_storage_remove_mask,
|
| - const GURL& storage_origin) {
|
| + const GURL& storage_origin,
|
| + net::URLRequestContextGetter* request_context_getter) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
|
| - base::Time(), base::Time::Max(), base::Bind(&base::DoNothing));
|
| + request_context_getter, base::Time(), base::Time::Max(),
|
| + base::Bind(&base::DoNothing));
|
| }
|
|
|
| void StoragePartitionImpl::ClearDataForUnboundedRange(
|
| uint32 remove_mask,
|
| uint32 quota_storage_remove_mask) {
|
| ClearDataImpl(remove_mask, quota_storage_remove_mask, GURL(),
|
| - base::Time(), base::Time::Max(), base::Bind(&base::DoNothing));
|
| + GetURLRequestContext(), base::Time(), base::Time::Max(),
|
| + base::Bind(&base::DoNothing));
|
| }
|
|
|
| void StoragePartitionImpl::ClearDataForRange(uint32 remove_mask,
|
| @@ -618,18 +647,14 @@
|
| const base::Time& begin,
|
| const base::Time& end,
|
| const base::Closure& callback) {
|
| - ClearDataImpl(remove_mask, quota_storage_remove_mask, GURL(), begin, end,
|
| - callback);
|
| + ClearDataImpl(remove_mask, quota_storage_remove_mask, GURL(),
|
| + GetURLRequestContext(), begin, end, callback);
|
| }
|
|
|
| WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() {
|
| return webrtc_identity_store_.get();
|
| }
|
|
|
| -const CookieStoreMap& StoragePartitionImpl::GetCookieStoreMap() {
|
| - return *cookie_store_map_;
|
| -}
|
| -
|
| void StoragePartitionImpl::SetURLRequestContext(
|
| net::URLRequestContextGetter* url_request_context) {
|
| url_request_context_ = url_request_context;
|
|
|