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

Unified Diff: content/browser/storage_partition_impl.cc

Issue 1741123002: Add removal filter support for Cookies, Storage, and Content Settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Android Created 4 years, 8 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 | « content/browser/storage_partition_impl.h ('k') | content/browser/storage_partition_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/storage_partition_impl.cc
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
index f78f9a456f7a2c8437004a3e7fbc316b45b2ae89..dd35f88511a5ca3ea337dd3cd0a00f240b868d2e 100644
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -57,21 +57,24 @@ void OnClearedCookies(const base::Closure& callback, int num_deleted) {
callback.Run();
}
+// Cookie matcher and storage_origin are never both populated.
void ClearCookiesOnIOThread(
const scoped_refptr<net::URLRequestContextGetter>& rq_context,
const base::Time begin,
const base::Time end,
const GURL& storage_origin,
+ const StoragePartition::CookieMatcherFunction& cookie_matcher,
const base::Closure& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- net::CookieStore* cookie_store = rq_context->
- GetURLRequestContext()->cookie_store();
- if (storage_origin.is_empty()) {
- cookie_store->DeleteAllCreatedBetweenAsync(
- begin,
- end,
- base::Bind(&OnClearedCookies, callback));
- } else {
+ DCHECK(cookie_matcher.is_null() || storage_origin.is_empty());
+ net::CookieStore* cookie_store =
+ rq_context->GetURLRequestContext()->cookie_store();
+ if (!cookie_matcher.is_null()) {
+ cookie_store->DeleteAllCreatedBetweenWithPredicateAsync(
+ begin, end, cookie_matcher, base::Bind(&OnClearedCookies, callback));
+ return;
+ }
+ if (!storage_origin.is_empty()) {
// TODO(mkwst): It's not clear whether removing host cookies is the correct
// behavior. We might want to remove all domain-matching cookies instead.
// Also, this code path may be dead anyways.
@@ -79,7 +82,10 @@ void ClearCookiesOnIOThread(
begin, end,
StoragePartitionImpl::CreatePredicateForHostCookies(storage_origin),
base::Bind(&OnClearedCookies, callback));
+ return;
}
+ cookie_store->DeleteAllCreatedBetweenAsync(
+ begin, end, base::Bind(&OnClearedCookies, callback));
}
void CheckQuotaManagedDataDeletionStatus(size_t* deletion_task_count,
@@ -303,6 +309,7 @@ struct StoragePartitionImpl::DataDeletionHelper {
void ClearDataOnUIThread(
const GURL& storage_origin,
const OriginMatcherFunction& origin_matcher,
+ const CookieMatcherFunction& cookie_matcher,
const base::FilePath& path,
net::URLRequestContextGetter* rq_context,
DOMStorageContextWrapper* dom_storage_context,
@@ -614,6 +621,7 @@ void StoragePartitionImpl::ClearDataImpl(
uint32_t quota_storage_remove_mask,
const GURL& storage_origin,
const OriginMatcherFunction& origin_matcher,
+ const CookieMatcherFunction& cookie_matcher,
net::URLRequestContextGetter* rq_context,
const base::Time begin,
const base::Time end,
@@ -624,16 +632,10 @@ void StoragePartitionImpl::ClearDataImpl(
callback);
// |helper| deletes itself when done in
// DataDeletionHelper::DecrementTaskCountOnUI().
- helper->ClearDataOnUIThread(storage_origin,
- origin_matcher,
- GetPath(),
- rq_context,
- dom_storage_context_.get(),
- quota_manager_.get(),
- special_storage_policy_.get(),
- webrtc_identity_store_.get(),
- begin,
- end);
+ helper->ClearDataOnUIThread(
+ storage_origin, origin_matcher, cookie_matcher, GetPath(), rq_context,
+ dom_storage_context_.get(), quota_manager_.get(),
+ special_storage_policy_.get(), webrtc_identity_store_.get(), begin, end);
}
void StoragePartitionImpl::
@@ -766,6 +768,7 @@ void StoragePartitionImpl::DataDeletionHelper::DecrementTaskCountOnUI() {
void StoragePartitionImpl::DataDeletionHelper::ClearDataOnUIThread(
const GURL& storage_origin,
const OriginMatcherFunction& origin_matcher,
+ const CookieMatcherFunction& cookie_matcher,
const base::FilePath& path,
net::URLRequestContextGetter* rq_context,
DOMStorageContextWrapper* dom_storage_context,
@@ -786,8 +789,8 @@ void StoragePartitionImpl::DataDeletionHelper::ClearDataOnUIThread(
IncrementTaskCountOnUI();
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- base::Bind(&ClearCookiesOnIOThread,
- make_scoped_refptr(rq_context), begin, end, storage_origin,
+ base::Bind(&ClearCookiesOnIOThread, make_scoped_refptr(rq_context),
+ begin, end, storage_origin, cookie_matcher,
decrement_callback));
}
@@ -862,13 +865,9 @@ void StoragePartitionImpl::ClearDataForOrigin(
net::URLRequestContextGetter* request_context_getter,
const base::Closure& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- ClearDataImpl(remove_mask,
- quota_storage_remove_mask,
- storage_origin,
- OriginMatcherFunction(),
- request_context_getter,
- base::Time(),
- base::Time::Max(),
+ ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
+ OriginMatcherFunction(), CookieMatcherFunction(),
+ request_context_getter, base::Time(), base::Time::Max(),
callback);
}
@@ -881,7 +880,20 @@ void StoragePartitionImpl::ClearData(
const base::Time end,
const base::Closure& callback) {
ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
- origin_matcher, GetURLRequestContext(), begin, end, callback);
+ origin_matcher, CookieMatcherFunction(), GetURLRequestContext(),
+ begin, end, callback);
+}
+
+void StoragePartitionImpl::ClearData(
+ uint32_t remove_mask,
+ uint32_t quota_storage_remove_mask,
+ const OriginMatcherFunction& origin_matcher,
+ const CookieMatcherFunction& cookie_matcher,
+ const base::Time begin,
+ const base::Time end,
+ const base::Closure& callback) {
+ ClearDataImpl(remove_mask, quota_storage_remove_mask, GURL(), origin_matcher,
+ cookie_matcher, GetURLRequestContext(), begin, end, callback);
}
void StoragePartitionImpl::Flush() {
« no previous file with comments | « content/browser/storage_partition_impl.h ('k') | content/browser/storage_partition_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698