Chromium Code Reviews| Index: content/browser/storage_partition_impl.cc |
| diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc |
| index e102445330aa80d3d0e18e50d1cca68e3514e013..ab78608c4b31fdeb0083e9c60b2ae32cdeec5ad1 100644 |
| --- a/content/browser/storage_partition_impl.cc |
| +++ b/content/browser/storage_partition_impl.cc |
| @@ -9,6 +9,7 @@ |
| #include <set> |
| #include <vector> |
| +#include "base/bind.h" |
| #include "base/location.h" |
| #include "base/sequenced_task_runner.h" |
| #include "base/single_thread_task_runner.h" |
| @@ -29,6 +30,7 @@ |
| #include "content/public/browser/session_storage_usage_info.h" |
| #include "net/base/completion_callback.h" |
| #include "net/base/net_errors.h" |
| +#include "net/cookies/canonical_cookie.h" |
| #include "net/cookies/cookie_monster.h" |
| #include "net/url_request/url_request_context.h" |
| #include "net/url_request/url_request_context_getter.h" |
| @@ -39,6 +41,11 @@ namespace content { |
| namespace { |
| +bool DoesCookieMatchHost(const std::string& host, |
| + const net::CanonicalCookie& cookie) { |
| + return cookie.IsHostCookie() && cookie.IsDomainMatch(host); |
| +} |
| + |
| void OnClearedCookies(const base::Closure& callback, int num_deleted) { |
| // The final callback needs to happen from UI thread. |
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| @@ -66,10 +73,10 @@ void ClearCookiesOnIOThread( |
| end, |
| base::Bind(&OnClearedCookies, callback)); |
| } else { |
| - cookie_store->DeleteAllCreatedBetweenForHostAsync( |
| - begin, |
| - end, |
| - storage_origin, base::Bind(&OnClearedCookies, callback)); |
| + cookie_store->DeleteAllCreatedBetweenWithPredicateAsync( |
|
Mike West
2016/04/02 05:12:40
Nit: Can you add a "TODO(mkwst): It's not clear wh
dmurph
2016/04/04 18:28:32
Done.
|
| + begin, end, |
| + StoragePartitionImpl::CreatePredicateForHostCookies(storage_origin), |
| + base::Bind(&OnClearedCookies, callback)); |
| } |
| } |
| @@ -222,6 +229,12 @@ int StoragePartitionImpl::GenerateQuotaClientMask(uint32_t remove_mask) { |
| return quota_client_mask; |
| } |
| +// static |
| +net::CookieStore::CookiePredicate |
| +StoragePartitionImpl::CreatePredicateForHostCookies(const GURL& url) { |
| + return base::Bind(&DoesCookieMatchHost, url.host()); |
| +} |
| + |
| // Helper for deleting quota managed data from a partition. |
| // |
| // Most of the operations in this class are done on IO thread. |