| 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 0d5f0017571ba4724b405ab567c76800fef90b76..b6a3ed1c76ac5558e49a1953801ff277d56a58a1 100644
|
| --- a/ios/net/cookies/cookie_store_ios.mm
|
| +++ b/ios/net/cookies/cookie_store_ios.mm
|
| @@ -261,6 +261,21 @@ bool IsCookieCreatedBetweenForHost(base::Time time_begin,
|
| IsCookieCreatedBetween(time_begin, time_end, cookie, creation_time);
|
| }
|
|
|
| +// 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 IsCookieCreatedBetweenWithPredicate(
|
| + base::Time time_begin,
|
| + base::Time time_end,
|
| + const net::CookieStore::CookiePredicate& predicate,
|
| + NSHTTPCookie* cookie,
|
| + base::Time creation_time) {
|
| + 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|.
|
| void OnlyCookiesWithName(const net::CookieList& cookies,
|
| const std::string& name,
|
| @@ -718,6 +733,36 @@ void CookieStoreIOS::DeleteAllCreatedBetweenForHostAsync(
|
| }
|
| }
|
|
|
| +void CookieStoreIOS::DeleteAllCreatedBetweenWithPredicateAsync(
|
| + const base::Time& delete_begin,
|
| + const base::Time& delete_end,
|
| + const CookiePredicate& predicate,
|
| + const DeleteCallback& callback) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| + if (metrics_enabled_)
|
| + ResetCookieCountMetrics();
|
| +
|
| + switch (synchronization_state_) {
|
| + case NOT_SYNCHRONIZED:
|
| + cookie_monster_->DeleteAllCreatedBetweenWithPredicateAsync(
|
| + delete_begin, delete_end, predicate, WrapDeleteCallback(callback));
|
| + break;
|
| + case SYNCHRONIZING:
|
| + tasks_pending_synchronization_.push_back(
|
| + base::Bind(&CookieStoreIOS::DeleteAllCreatedBetweenWithPredicateAsync,
|
| + weak_factory_.GetWeakPtr(), delete_begin, delete_end,
|
| + predicate, WrapDeleteCallback(callback)));
|
| + break;
|
| + case SYNCHRONIZED:
|
| + CookieFilterFunction filter =
|
| + base::Bind(IsCookieCreatedBetweenWithPredicate,
|
| + delete_begin, delete_end, predicate);
|
| + DeleteCookiesWithFilter(filter, callback);
|
| + break;
|
| + }
|
| +}
|
| +
|
| void CookieStoreIOS::DeleteSessionCookiesAsync(const DeleteCallback& callback) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
|
|