Index: ios/net/cookies/cookie_store_ios.mm |
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm |
index 78fb510ffa93c837cfc09e8d5f356b20df50ee2c..bf5e85d50427617ba28481fd5fa84a08a6f35c45 100644 |
--- a/ios/net/cookies/cookie_store_ios.mm |
+++ b/ios/net/cookies/cookie_store_ios.mm |
@@ -250,15 +250,18 @@ bool IsCookieCreatedBetween(base::Time time_begin, |
// Tests whether the |creation_time| of |cookie| is in the time range defined |
// by |time_begin| and |time_end| and the cookie host match |host|. A null |
// |time_end| means end-of-time. |
-bool IsCookieCreatedBetweenForHost(base::Time time_begin, |
- base::Time time_end, |
- NSString* host, |
- NSHTTPCookie* cookie, |
- base::Time creation_time) { |
- NSString* domain = [cookie domain]; |
- return [domain characterAtIndex:0] != '.' && |
- [domain caseInsensitiveCompare:host] == NSOrderedSame && |
- IsCookieCreatedBetween(time_begin, time_end, cookie, creation_time); |
+bool IsCookieCreatedBetweenWithPredicate( |
+ base::Time time_begin, |
+ base::Time time_end, |
+ const net::CookieStore::CookiePredicate& predicate, |
+ NSHTTPCookie* cookie, |
+ base::Time creation_time) { |
+ if (predicate.is_null()) |
+ return false; |
+ CanonicalCookie canonical_cookie = |
+ CanonicalCookieFromSystemCookie(cookie, creation_time); |
+ return IsCookieCreatedBetween(time_begin, time_end, cookie, creation_time) && |
+ predicate.Run(canonical_cookie); |
} |
// Adds cookies in |cookies| with name |name| to |filtered|. |
@@ -688,10 +691,10 @@ void CookieStoreIOS::DeleteAllCreatedBetweenAsync( |
} |
} |
-void CookieStoreIOS::DeleteAllCreatedBetweenForHostAsync( |
- const base::Time delete_begin, |
- const base::Time delete_end, |
- const GURL& url, |
+void CookieStoreIOS::DeleteAllCreatedBetweenWithPredicateAsync( |
+ const base::Time& delete_begin, |
+ const base::Time& delete_end, |
+ const CookiePredicate& predicate, |
const DeleteCallback& callback) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
@@ -700,19 +703,19 @@ void CookieStoreIOS::DeleteAllCreatedBetweenForHostAsync( |
switch (synchronization_state_) { |
case NOT_SYNCHRONIZED: |
- cookie_monster_->DeleteAllCreatedBetweenForHostAsync( |
- delete_begin, delete_end, url, WrapDeleteCallback(callback)); |
+ cookie_monster_->DeleteAllCreatedBetweenWithPredicateAsync( |
+ delete_begin, delete_end, predicate, WrapDeleteCallback(callback)); |
break; |
case SYNCHRONIZING: |
tasks_pending_synchronization_.push_back( |
- base::Bind(&CookieStoreIOS::DeleteAllCreatedBetweenForHostAsync, |
- weak_factory_.GetWeakPtr(), delete_begin, delete_end, url, |
- WrapDeleteCallback(callback))); |
+ base::Bind(&CookieStoreIOS::DeleteAllCreatedBetweenWithPredicateAsync, |
+ weak_factory_.GetWeakPtr(), delete_begin, delete_end, |
+ predicate, WrapDeleteCallback(callback))); |
break; |
case SYNCHRONIZED: |
- NSString* host = base::SysUTF8ToNSString(url.host()); |
- CookieFilterFunction filter = base::Bind(IsCookieCreatedBetweenForHost, |
- delete_begin, delete_end, host); |
+ CookieFilterFunction filter = |
+ base::Bind(IsCookieCreatedBetweenWithPredicate, delete_begin, |
+ delete_end, predicate); |
DeleteCookiesWithFilter(filter, callback); |
break; |
} |