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

Side by Side Diff: net/cookies/cookie_monster.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 // Portions of this code based on Mozilla: 5 // Portions of this code based on Mozilla:
6 // (netwerk/cookie/src/nsCookieService.cpp) 6 // (netwerk/cookie/src/nsCookieService.cpp)
7 /* ***** BEGIN LICENSE BLOCK ***** 7 /* ***** BEGIN LICENSE BLOCK *****
8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
9 * 9 *
10 * The contents of this file are subject to the Mozilla Public License Version 10 * The contents of this file are subject to the Mozilla Public License Version
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 GURL url_; 644 GURL url_;
645 645
646 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenForHostTask); 646 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenForHostTask);
647 }; 647 };
648 648
649 int CookieMonster::DeleteAllCreatedBetweenForHostTask::RunDeleteTask() { 649 int CookieMonster::DeleteAllCreatedBetweenForHostTask::RunDeleteTask() {
650 return this->cookie_monster()->DeleteAllCreatedBetweenForHost( 650 return this->cookie_monster()->DeleteAllCreatedBetweenForHost(
651 delete_begin_, delete_end_, url_); 651 delete_begin_, delete_end_, url_);
652 } 652 }
653 653
654 // Task class for DeleteAllCreatedBetweenForHost call.
655 class CookieMonster::DeleteAllCreatedBetweenWithPredicateTask
656 : public DeleteTask<int> {
657 public:
658 DeleteAllCreatedBetweenWithPredicateTask(
659 CookieMonster* cookie_monster,
660 Time delete_begin,
661 Time delete_end,
662 base::Callback<bool(const CanonicalCookie&)> predicate,
663 const DeleteCallback& callback)
664 : DeleteTask<int>(cookie_monster, callback),
665 delete_begin_(delete_begin),
666 delete_end_(delete_end),
667 predicate_(predicate) {}
668
669 // DeleteTask:
670 int RunDeleteTask() override;
671
672 protected:
673 ~DeleteAllCreatedBetweenWithPredicateTask() override {}
674
675 private:
676 Time delete_begin_;
677 Time delete_end_;
678 base::Callback<bool(const CanonicalCookie&)> predicate_;
679
680 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenWithPredicateTask);
681 };
682
683 int CookieMonster::DeleteAllCreatedBetweenWithPredicateTask::RunDeleteTask() {
684 return this->cookie_monster()->DeleteAllCreatedBetweenWithPredicate(
685 delete_begin_, delete_end_, predicate_);
686 }
687
654 // Task class for DeleteCanonicalCookie call. 688 // Task class for DeleteCanonicalCookie call.
655 class CookieMonster::DeleteCanonicalCookieTask : public DeleteTask<int> { 689 class CookieMonster::DeleteCanonicalCookieTask : public DeleteTask<int> {
656 public: 690 public:
657 DeleteCanonicalCookieTask(CookieMonster* cookie_monster, 691 DeleteCanonicalCookieTask(CookieMonster* cookie_monster,
658 const CanonicalCookie& cookie, 692 const CanonicalCookie& cookie,
659 const DeleteCallback& callback) 693 const DeleteCallback& callback)
660 : DeleteTask<int>(cookie_monster, callback), cookie_(cookie) {} 694 : DeleteTask<int>(cookie_monster, callback), cookie_(cookie) {}
661 695
662 // DeleteTask: 696 // DeleteTask:
663 int RunDeleteTask() override; 697 int RunDeleteTask() override;
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 const Time delete_end, 988 const Time delete_end,
955 const GURL& url, 989 const GURL& url,
956 const DeleteCallback& callback) { 990 const DeleteCallback& callback) {
957 scoped_refptr<DeleteAllCreatedBetweenForHostTask> task = 991 scoped_refptr<DeleteAllCreatedBetweenForHostTask> task =
958 new DeleteAllCreatedBetweenForHostTask(this, delete_begin, delete_end, 992 new DeleteAllCreatedBetweenForHostTask(this, delete_begin, delete_end,
959 url, callback); 993 url, callback);
960 994
961 DoCookieTaskForURL(task, url); 995 DoCookieTaskForURL(task, url);
962 } 996 }
963 997
998 void CookieMonster::DeleteAllCreatedBetweenWithPredicateAsync(
999 const Time& delete_begin,
1000 const Time& delete_end,
1001 const base::Callback<bool(const CanonicalCookie&)>& predicate,
1002 const DeleteCallback& callback) {
1003 if (predicate.is_null()) {
1004 DeleteAllCreatedBetweenAsync(delete_begin, delete_end, callback);
1005 return;
1006 }
1007 scoped_refptr<DeleteAllCreatedBetweenWithPredicateTask> task =
1008 new DeleteAllCreatedBetweenWithPredicateTask(
1009 this, delete_begin, delete_end, predicate, callback);
1010 DoCookieTask(task);
1011 }
1012
964 void CookieMonster::DeleteSessionCookiesAsync( 1013 void CookieMonster::DeleteSessionCookiesAsync(
965 const CookieStore::DeleteCallback& callback) { 1014 const CookieStore::DeleteCallback& callback) {
966 scoped_refptr<DeleteSessionCookiesTask> task = 1015 scoped_refptr<DeleteSessionCookiesTask> task =
967 new DeleteSessionCookiesTask(this, callback); 1016 new DeleteSessionCookiesTask(this, callback);
968 1017
969 DoCookieTask(task); 1018 DoCookieTask(task);
970 } 1019 }
971 1020
972 void CookieMonster::SetCookieableSchemes( 1021 void CookieMonster::SetCookieableSchemes(
973 const std::vector<std::string>& schemes) { 1022 const std::vector<std::string>& schemes) {
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 // Time::Max() is confusing. 1223 // Time::Max() is confusing.
1175 (delete_end.is_null() || cc->CreationDate() < delete_end)) { 1224 (delete_end.is_null() || cc->CreationDate() < delete_end)) {
1176 num_deleted++; 1225 num_deleted++;
1177 1226
1178 InternalDeleteCookie(curit, true, DELETE_COOKIE_EXPLICIT); 1227 InternalDeleteCookie(curit, true, DELETE_COOKIE_EXPLICIT);
1179 } 1228 }
1180 } 1229 }
1181 return num_deleted; 1230 return num_deleted;
1182 } 1231 }
1183 1232
1233 int CookieMonster::DeleteAllCreatedBetweenWithPredicate(
1234 const base::Time& delete_begin,
1235 const base::Time& delete_end,
1236 const base::Callback<bool(const CanonicalCookie&)>& predicate) {
1237 int num_deleted = 0;
1238 for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) {
1239 CookieMap::iterator curit = it;
1240 CanonicalCookie* cc = curit->second;
1241 ++it;
1242
1243 if (cc->CreationDate() >= delete_begin &&
1244 (delete_end.is_null() || cc->CreationDate() < delete_end) &&
1245 predicate.Run(*cc)) {
1246 InternalDeleteCookie(curit, true, /*sync_to_store*/
1247 DELETE_COOKIE_EXPLICIT);
1248 ++num_deleted;
1249 }
1250 }
1251
1252 return num_deleted;
1253 }
1184 1254
1185 bool CookieMonster::SetCookieWithOptions(const GURL& url, 1255 bool CookieMonster::SetCookieWithOptions(const GURL& url,
1186 const std::string& cookie_line, 1256 const std::string& cookie_line,
1187 const CookieOptions& options) { 1257 const CookieOptions& options) {
1188 DCHECK(thread_checker_.CalledOnValidThread()); 1258 DCHECK(thread_checker_.CalledOnValidThread());
1189 1259
1190 if (!HasCookieableScheme(url)) { 1260 if (!HasCookieableScheme(url)) {
1191 return false; 1261 return false;
1192 } 1262 }
1193 1263
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after
2346 it != hook_map_.end(); ++it) { 2416 it != hook_map_.end(); ++it) {
2347 std::pair<GURL, std::string> key = it->first; 2417 std::pair<GURL, std::string> key = it->first;
2348 if (cookie.IncludeForRequestURL(key.first, opts) && 2418 if (cookie.IncludeForRequestURL(key.first, opts) &&
2349 cookie.Name() == key.second) { 2419 cookie.Name() == key.second) {
2350 it->second->Notify(cookie, removed); 2420 it->second->Notify(cookie, removed);
2351 } 2421 }
2352 } 2422 }
2353 } 2423 }
2354 2424
2355 } // namespace net 2425 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698