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

Side by Side 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: ios fix, and fixed test Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/storage_partition_impl.h" 5 #include "content/browser/storage_partition_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { 44 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
45 BrowserThread::PostTask( 45 BrowserThread::PostTask(
46 BrowserThread::UI, FROM_HERE, 46 BrowserThread::UI, FROM_HERE,
47 base::Bind(&OnClearedCookies, callback, num_deleted)); 47 base::Bind(&OnClearedCookies, callback, num_deleted));
48 return; 48 return;
49 } 49 }
50 50
51 callback.Run(); 51 callback.Run();
52 } 52 }
53 53
54 // Cookie matcher and storage_origin are never both populated.
54 void ClearCookiesOnIOThread( 55 void ClearCookiesOnIOThread(
55 const scoped_refptr<net::URLRequestContextGetter>& rq_context, 56 const scoped_refptr<net::URLRequestContextGetter>& rq_context,
56 const base::Time begin, 57 const base::Time begin, const base::Time end, const GURL& storage_origin,
57 const base::Time end, 58 const StoragePartition::CookieMatcherFunction& cookie_matcher,
58 const GURL& storage_origin,
59 const base::Closure& callback) { 59 const base::Closure& callback) {
60 DCHECK_CURRENTLY_ON(BrowserThread::IO); 60 DCHECK_CURRENTLY_ON(BrowserThread::IO);
61 net::CookieStore* cookie_store = rq_context-> 61 net::CookieStore* cookie_store =
62 GetURLRequestContext()->cookie_store(); 62 rq_context->GetURLRequestContext()->cookie_store();
63 if (storage_origin.is_empty()) { 63 if (!cookie_matcher.is_null()) {
64 cookie_store->DeleteAllCreatedBetweenWithPredicateAsync(
65 begin, end, cookie_matcher, base::Bind(&OnClearedCookies, callback));
66 } else if (!storage_origin.is_empty()) {
67 cookie_store->DeleteAllCreatedBetweenForHostAsync(
68 begin, end, storage_origin, base::Bind(&OnClearedCookies, callback));
69 } else {
64 cookie_store->DeleteAllCreatedBetweenAsync( 70 cookie_store->DeleteAllCreatedBetweenAsync(
65 begin, 71 begin, end, base::Bind(&OnClearedCookies, callback));
66 end,
67 base::Bind(&OnClearedCookies, callback));
68 } else {
69 cookie_store->DeleteAllCreatedBetweenForHostAsync(
70 begin,
71 end,
72 storage_origin, base::Bind(&OnClearedCookies, callback));
73 } 72 }
74 } 73 }
75 74
76 void CheckQuotaManagedDataDeletionStatus(size_t* deletion_task_count, 75 void CheckQuotaManagedDataDeletionStatus(size_t* deletion_task_count,
77 const base::Closure& callback) { 76 const base::Closure& callback) {
78 DCHECK_CURRENTLY_ON(BrowserThread::IO); 77 DCHECK_CURRENTLY_ON(BrowserThread::IO);
79 if (*deletion_task_count == 0) { 78 if (*deletion_task_count == 0) {
80 delete deletion_task_count; 79 delete deletion_task_count;
81 callback.Run(); 80 callback.Run();
82 } 81 }
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 void DecrementTaskCountOnIO(); 239 void DecrementTaskCountOnIO();
241 240
242 void ClearDataOnIOThread( 241 void ClearDataOnIOThread(
243 const scoped_refptr<storage::QuotaManager>& quota_manager, 242 const scoped_refptr<storage::QuotaManager>& quota_manager,
244 const base::Time begin, 243 const base::Time begin,
245 const scoped_refptr<storage::SpecialStoragePolicy>& 244 const scoped_refptr<storage::SpecialStoragePolicy>&
246 special_storage_policy, 245 special_storage_policy,
247 const StoragePartition::OriginMatcherFunction& origin_matcher); 246 const StoragePartition::OriginMatcherFunction& origin_matcher);
248 247
249 void ClearOriginsOnIOThread( 248 void ClearOriginsOnIOThread(
249
250 storage::QuotaManager* quota_manager, 250 storage::QuotaManager* quota_manager,
251 const scoped_refptr<storage::SpecialStoragePolicy>& 251 const scoped_refptr<storage::SpecialStoragePolicy>&
252 special_storage_policy, 252 special_storage_policy,
253 const StoragePartition::OriginMatcherFunction& origin_matcher, 253 const StoragePartition::OriginMatcherFunction& origin_matcher,
254 const base::Closure& callback, 254 const base::Closure& callback,
255 const std::set<GURL>& origins, 255 const std::set<GURL>& origins,
256 storage::StorageType quota_storage_type); 256 storage::StorageType quota_storage_type);
257 257
258 // All of these data are accessed on IO thread. 258 // All of these data are accessed on IO thread.
259 uint32_t remove_mask; 259 uint32_t remove_mask;
(...skipping 21 matching lines...) Expand all
281 quota_storage_remove_mask(quota_storage_remove_mask), 281 quota_storage_remove_mask(quota_storage_remove_mask),
282 callback(callback), 282 callback(callback),
283 task_count(0) {} 283 task_count(0) {}
284 284
285 void IncrementTaskCountOnUI(); 285 void IncrementTaskCountOnUI();
286 void DecrementTaskCountOnUI(); 286 void DecrementTaskCountOnUI();
287 287
288 void ClearDataOnUIThread( 288 void ClearDataOnUIThread(
289 const GURL& storage_origin, 289 const GURL& storage_origin,
290 const OriginMatcherFunction& origin_matcher, 290 const OriginMatcherFunction& origin_matcher,
291 const CookieMatcherFunction& cookie_matcher,
291 const base::FilePath& path, 292 const base::FilePath& path,
292 net::URLRequestContextGetter* rq_context, 293 net::URLRequestContextGetter* rq_context,
293 DOMStorageContextWrapper* dom_storage_context, 294 DOMStorageContextWrapper* dom_storage_context,
294 storage::QuotaManager* quota_manager, 295 storage::QuotaManager* quota_manager,
295 storage::SpecialStoragePolicy* special_storage_policy, 296 storage::SpecialStoragePolicy* special_storage_policy,
296 WebRTCIdentityStore* webrtc_identity_store, 297 WebRTCIdentityStore* webrtc_identity_store,
297 const base::Time begin, 298 const base::Time begin,
298 const base::Time end); 299 const base::Time end);
299 300
300 void ClearQuotaManagedDataOnIOThread( 301 void ClearQuotaManagedDataOnIOThread(
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 const mojo::String& origin, 595 const mojo::String& origin,
595 mojo::InterfaceRequest<LevelDBWrapper> request) { 596 mojo::InterfaceRequest<LevelDBWrapper> request) {
596 dom_storage_context_->OpenLocalStorage(origin, std::move(request)); 597 dom_storage_context_->OpenLocalStorage(origin, std::move(request));
597 } 598 }
598 599
599 void StoragePartitionImpl::ClearDataImpl( 600 void StoragePartitionImpl::ClearDataImpl(
600 uint32_t remove_mask, 601 uint32_t remove_mask,
601 uint32_t quota_storage_remove_mask, 602 uint32_t quota_storage_remove_mask,
602 const GURL& storage_origin, 603 const GURL& storage_origin,
603 const OriginMatcherFunction& origin_matcher, 604 const OriginMatcherFunction& origin_matcher,
605 const CookieMatcherFunction& cookie_matcher,
604 net::URLRequestContextGetter* rq_context, 606 net::URLRequestContextGetter* rq_context,
605 const base::Time begin, 607 const base::Time begin,
606 const base::Time end, 608 const base::Time end,
607 const base::Closure& callback) { 609 const base::Closure& callback) {
608 DCHECK_CURRENTLY_ON(BrowserThread::UI); 610 DCHECK_CURRENTLY_ON(BrowserThread::UI);
609 DataDeletionHelper* helper = new DataDeletionHelper(remove_mask, 611 DataDeletionHelper* helper = new DataDeletionHelper(remove_mask,
610 quota_storage_remove_mask, 612 quota_storage_remove_mask,
611 callback); 613 callback);
612 // |helper| deletes itself when done in 614 // |helper| deletes itself when done in
613 // DataDeletionHelper::DecrementTaskCountOnUI(). 615 // DataDeletionHelper::DecrementTaskCountOnUI().
614 helper->ClearDataOnUIThread(storage_origin, 616 helper->ClearDataOnUIThread(
615 origin_matcher, 617 storage_origin, origin_matcher, cookie_matcher, GetPath(), rq_context,
616 GetPath(), 618 dom_storage_context_.get(), quota_manager_.get(),
617 rq_context, 619 special_storage_policy_.get(), webrtc_identity_store_.get(), begin, end);
618 dom_storage_context_.get(),
619 quota_manager_.get(),
620 special_storage_policy_.get(),
621 webrtc_identity_store_.get(),
622 begin,
623 end);
624 } 620 }
625 621
626 void StoragePartitionImpl:: 622 void StoragePartitionImpl::
627 QuotaManagedDataDeletionHelper::IncrementTaskCountOnIO() { 623 QuotaManagedDataDeletionHelper::IncrementTaskCountOnIO() {
628 DCHECK_CURRENTLY_ON(BrowserThread::IO); 624 DCHECK_CURRENTLY_ON(BrowserThread::IO);
629 ++task_count; 625 ++task_count;
630 } 626 }
631 627
632 void StoragePartitionImpl:: 628 void StoragePartitionImpl::
633 QuotaManagedDataDeletionHelper::DecrementTaskCountOnIO() { 629 QuotaManagedDataDeletionHelper::DecrementTaskCountOnIO() {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 --task_count; 754 --task_count;
759 if (!task_count) { 755 if (!task_count) {
760 callback.Run(); 756 callback.Run();
761 delete this; 757 delete this;
762 } 758 }
763 } 759 }
764 760
765 void StoragePartitionImpl::DataDeletionHelper::ClearDataOnUIThread( 761 void StoragePartitionImpl::DataDeletionHelper::ClearDataOnUIThread(
766 const GURL& storage_origin, 762 const GURL& storage_origin,
767 const OriginMatcherFunction& origin_matcher, 763 const OriginMatcherFunction& origin_matcher,
764 const CookieMatcherFunction& cookie_matcher,
768 const base::FilePath& path, 765 const base::FilePath& path,
769 net::URLRequestContextGetter* rq_context, 766 net::URLRequestContextGetter* rq_context,
770 DOMStorageContextWrapper* dom_storage_context, 767 DOMStorageContextWrapper* dom_storage_context,
771 storage::QuotaManager* quota_manager, 768 storage::QuotaManager* quota_manager,
772 storage::SpecialStoragePolicy* special_storage_policy, 769 storage::SpecialStoragePolicy* special_storage_policy,
773 WebRTCIdentityStore* webrtc_identity_store, 770 WebRTCIdentityStore* webrtc_identity_store,
774 const base::Time begin, 771 const base::Time begin,
775 const base::Time end) { 772 const base::Time end) {
776 DCHECK_NE(remove_mask, 0u); 773 DCHECK_NE(remove_mask, 0u);
777 DCHECK(!callback.is_null()); 774 DCHECK(!callback.is_null());
778 775
779 IncrementTaskCountOnUI(); 776 IncrementTaskCountOnUI();
780 base::Closure decrement_callback = base::Bind( 777 base::Closure decrement_callback = base::Bind(
781 &DataDeletionHelper::DecrementTaskCountOnUI, base::Unretained(this)); 778 &DataDeletionHelper::DecrementTaskCountOnUI, base::Unretained(this));
782 779
783 if (remove_mask & REMOVE_DATA_MASK_COOKIES) { 780 if (remove_mask & REMOVE_DATA_MASK_COOKIES) {
784 // Handle the cookies. 781 // Handle the cookies.
785 IncrementTaskCountOnUI(); 782 IncrementTaskCountOnUI();
786 BrowserThread::PostTask( 783 BrowserThread::PostTask(
787 BrowserThread::IO, FROM_HERE, 784 BrowserThread::IO, FROM_HERE,
788 base::Bind(&ClearCookiesOnIOThread, 785 base::Bind(&ClearCookiesOnIOThread, make_scoped_refptr(rq_context),
789 make_scoped_refptr(rq_context), begin, end, storage_origin, 786 begin, end, storage_origin, cookie_matcher,
790 decrement_callback)); 787 decrement_callback));
791 } 788 }
792 789
793 if (remove_mask & REMOVE_DATA_MASK_INDEXEDDB || 790 if (remove_mask & REMOVE_DATA_MASK_INDEXEDDB ||
794 remove_mask & REMOVE_DATA_MASK_WEBSQL || 791 remove_mask & REMOVE_DATA_MASK_WEBSQL ||
795 remove_mask & REMOVE_DATA_MASK_APPCACHE || 792 remove_mask & REMOVE_DATA_MASK_APPCACHE ||
796 remove_mask & REMOVE_DATA_MASK_FILE_SYSTEMS || 793 remove_mask & REMOVE_DATA_MASK_FILE_SYSTEMS ||
797 remove_mask & REMOVE_DATA_MASK_SERVICE_WORKERS || 794 remove_mask & REMOVE_DATA_MASK_SERVICE_WORKERS ||
798 remove_mask & REMOVE_DATA_MASK_CACHE_STORAGE) { 795 remove_mask & REMOVE_DATA_MASK_CACHE_STORAGE) {
799 IncrementTaskCountOnUI(); 796 IncrementTaskCountOnUI();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 DecrementTaskCountOnUI(); 851 DecrementTaskCountOnUI();
855 } 852 }
856 853
857 void StoragePartitionImpl::ClearDataForOrigin( 854 void StoragePartitionImpl::ClearDataForOrigin(
858 uint32_t remove_mask, 855 uint32_t remove_mask,
859 uint32_t quota_storage_remove_mask, 856 uint32_t quota_storage_remove_mask,
860 const GURL& storage_origin, 857 const GURL& storage_origin,
861 net::URLRequestContextGetter* request_context_getter, 858 net::URLRequestContextGetter* request_context_getter,
862 const base::Closure& callback) { 859 const base::Closure& callback) {
863 DCHECK_CURRENTLY_ON(BrowserThread::UI); 860 DCHECK_CURRENTLY_ON(BrowserThread::UI);
864 ClearDataImpl(remove_mask, 861 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
865 quota_storage_remove_mask, 862 OriginMatcherFunction(), CookieMatcherFunction(),
866 storage_origin, 863 request_context_getter, base::Time(), base::Time::Max(),
867 OriginMatcherFunction(),
868 request_context_getter,
869 base::Time(),
870 base::Time::Max(),
871 callback); 864 callback);
872 } 865 }
873 866
874 void StoragePartitionImpl::ClearData( 867 void StoragePartitionImpl::ClearData(
875 uint32_t remove_mask, 868 uint32_t remove_mask,
876 uint32_t quota_storage_remove_mask, 869 uint32_t quota_storage_remove_mask,
877 const GURL& storage_origin, 870 const GURL& storage_origin,
878 const OriginMatcherFunction& origin_matcher, 871 const OriginMatcherFunction& origin_matcher,
879 const base::Time begin, 872 const base::Time begin,
880 const base::Time end, 873 const base::Time end,
881 const base::Closure& callback) { 874 const base::Closure& callback) {
882 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin, 875 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
883 origin_matcher, GetURLRequestContext(), begin, end, callback); 876 origin_matcher, CookieMatcherFunction(), GetURLRequestContext(),
877 begin, end, callback);
878 }
879
880 void StoragePartitionImpl::ClearData(
881 uint32_t remove_mask,
882 uint32_t quota_storage_remove_mask,
883 const OriginMatcherFunction& origin_matcher,
884 const CookieMatcherFunction& cookie_matcher,
885 const base::Time begin,
886 const base::Time end,
887 const base::Closure& callback) {
888 ClearDataImpl(remove_mask, quota_storage_remove_mask, GURL(), origin_matcher,
889 cookie_matcher, GetURLRequestContext(), begin, end, callback);
884 } 890 }
885 891
886 void StoragePartitionImpl::Flush() { 892 void StoragePartitionImpl::Flush() {
887 DCHECK_CURRENTLY_ON(BrowserThread::UI); 893 DCHECK_CURRENTLY_ON(BrowserThread::UI);
888 if (GetDOMStorageContext()) 894 if (GetDOMStorageContext())
889 GetDOMStorageContext()->Flush(); 895 GetDOMStorageContext()->Flush();
890 } 896 }
891 897
892 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() { 898 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() {
893 return webrtc_identity_store_.get(); 899 return webrtc_identity_store_.get();
(...skipping 22 matching lines...) Expand all
916 net::URLRequestContextGetter* url_request_context) { 922 net::URLRequestContextGetter* url_request_context) {
917 url_request_context_ = url_request_context; 923 url_request_context_ = url_request_context;
918 } 924 }
919 925
920 void StoragePartitionImpl::SetMediaURLRequestContext( 926 void StoragePartitionImpl::SetMediaURLRequestContext(
921 net::URLRequestContextGetter* media_url_request_context) { 927 net::URLRequestContextGetter* media_url_request_context) {
922 media_url_request_context_ = media_url_request_context; 928 media_url_request_context_ = media_url_request_context;
923 } 929 }
924 930
925 } // namespace content 931 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698