Index: net/cookies/cookie_store.h |
diff --git a/net/cookies/cookie_store.h b/net/cookies/cookie_store.h |
index f56fedd90392877b24e554276579a12733617700..2b036b9402467214320e9713e2721a380d38db4e 100644 |
--- a/net/cookies/cookie_store.h |
+++ b/net/cookies/cookie_store.h |
@@ -33,14 +33,39 @@ class CookieMonster; |
// Destroying the CookieStore will cancel pending async callbacks. |
class NET_EXPORT CookieStore { |
public: |
+ // The publicly relevant reasons a cookie might be changed. |
+ enum class ChangeCause { |
+ // The cookie was inserted. |
+ INSERTED, |
+ // The cookie was changed directly by a consumer's action. |
+ EXPLICIT, |
+ // The cookie was deleted, but no more details are known. |
+ UNKNOWN_DELETION, |
+ // The cookie was automatically removed due to an insert operation that |
+ // overwrote it. |
+ OVERWRITE, |
+ // The cookie was automatically removed as it expired. |
+ EXPIRED, |
+ // The cookie was automatically evicted during garbage collection. |
+ EVICTED, |
+ // The cookie was overwritten with an already-expired expiration date. |
+ EXPIRED_OVERWRITE |
+ }; |
+ |
+ // Returns whether |cause| is one that could be a reason for deleting a |
+ // cookie. This function assumes that ChangeCause::EXPLICIT is a reason for |
+ // deletion. |
+ static bool ChangeCauseIsDeletion(ChangeCause cause); |
+ |
// Callback definitions. |
typedef base::Callback<void(const CookieList& cookies)> GetCookieListCallback; |
typedef base::Callback<void(const std::string& cookie)> GetCookiesCallback; |
typedef base::Callback<void(bool success)> SetCookiesCallback; |
typedef base::Callback<void(int num_deleted)> DeleteCallback; |
- typedef base::Callback<void(const CanonicalCookie& cookie, bool removed)> |
+ typedef base::Callback<void(const CanonicalCookie& cookie, ChangeCause cause)> |
CookieChangedCallback; |
- typedef base::CallbackList<void(const CanonicalCookie& cookie, bool removed)> |
+ typedef base::CallbackList<void(const CanonicalCookie& cookie, |
+ ChangeCause cause)> |
CookieChangedCallbackList; |
typedef CookieChangedCallbackList::Subscription CookieChangedSubscription; |
typedef base::Callback<bool(const CanonicalCookie& cookie)> CookiePredicate; |
@@ -198,6 +223,8 @@ class NET_EXPORT CookieStore { |
// (url, name) pair are removed. If this method ever needs to support an |
// unbounded amount of such pairs, this contract needs to change and |
// implementors need to be improved to not behave this way. |
+ // |
+ // The callback must not synchronously modify another cookie. |
virtual std::unique_ptr<CookieChangedSubscription> AddCallbackForCookie( |
const GURL& url, |
const std::string& name, |