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

Side by Side Diff: net/cookies/cookie_store.h

Issue 2937963003: Shift cookie system callbacks to OnceCallback to impedance match mojo. (Closed)
Patch Set: Finish Merge Created 3 years, 6 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 // Brought to you by number 42. 5 // Brought to you by number 42.
6 6
7 #ifndef NET_COOKIES_COOKIE_STORE_H_ 7 #ifndef NET_COOKIES_COOKIE_STORE_H_
8 #define NET_COOKIES_COOKIE_STORE_H_ 8 #define NET_COOKIES_COOKIE_STORE_H_
9 9
10 #include <memory> 10 #include <memory>
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 // The cookie was overwritten with an already-expired expiration date. 57 // The cookie was overwritten with an already-expired expiration date.
58 EXPIRED_OVERWRITE 58 EXPIRED_OVERWRITE
59 }; 59 };
60 60
61 // Returns whether |cause| is one that could be a reason for deleting a 61 // Returns whether |cause| is one that could be a reason for deleting a
62 // cookie. This function assumes that ChangeCause::EXPLICIT is a reason for 62 // cookie. This function assumes that ChangeCause::EXPLICIT is a reason for
63 // deletion. 63 // deletion.
64 static bool ChangeCauseIsDeletion(ChangeCause cause); 64 static bool ChangeCauseIsDeletion(ChangeCause cause);
65 65
66 // Callback definitions. 66 // Callback definitions.
67 typedef base::Callback<void(const CookieList& cookies)> GetCookieListCallback; 67 typedef base::OnceCallback<void(const CookieList& cookies)>
68 typedef base::Callback<void(const std::string& cookie)> GetCookiesCallback; 68 GetCookieListCallback;
69 typedef base::Callback<void(bool success)> SetCookiesCallback; 69 typedef base::OnceCallback<void(const std::string& cookie)>
70 typedef base::Callback<void(int num_deleted)> DeleteCallback; 70 GetCookiesCallback;
71 typedef base::OnceCallback<void(bool success)> SetCookiesCallback;
72 typedef base::OnceCallback<void(int num_deleted)> DeleteCallback;
73
71 typedef base::Callback<void(const CanonicalCookie& cookie, ChangeCause cause)> 74 typedef base::Callback<void(const CanonicalCookie& cookie, ChangeCause cause)>
72 CookieChangedCallback; 75 CookieChangedCallback;
73 typedef base::CallbackList<void(const CanonicalCookie& cookie, 76 typedef base::CallbackList<void(const CanonicalCookie& cookie,
74 ChangeCause cause)> 77 ChangeCause cause)>
75 CookieChangedCallbackList; 78 CookieChangedCallbackList;
76 typedef CookieChangedCallbackList::Subscription CookieChangedSubscription; 79 typedef CookieChangedCallbackList::Subscription CookieChangedSubscription;
77 typedef base::Callback<bool(const CanonicalCookie& cookie)> CookiePredicate; 80 typedef base::Callback<bool(const CanonicalCookie& cookie)> CookiePredicate;
78 81
79 virtual ~CookieStore(); 82 virtual ~CookieStore();
80 83
81 // Returns the cookie line (e.g. "cookie1=value1; cookie2=value2") represented 84 // Returns the cookie line (e.g. "cookie1=value1; cookie2=value2") represented
82 // by |cookies|. The string is built in the same order as the given list. 85 // by |cookies|. The string is built in the same order as the given list.
83 // 86 //
84 // TODO(mkwst): We really should standardize on either 87 // TODO(mkwst): We really should standardize on either
85 // 'std::vector<CanonicalCookie>' or 'std::vector<CanonicalCookie*>'. 88 // 'std::vector<CanonicalCookie>' or 'std::vector<CanonicalCookie*>'.
86 static std::string BuildCookieLine( 89 static std::string BuildCookieLine(
87 const std::vector<CanonicalCookie>& cookies); 90 const std::vector<CanonicalCookie>& cookies);
88 static std::string BuildCookieLine( 91 static std::string BuildCookieLine(
89 const std::vector<CanonicalCookie*>& cookies); 92 const std::vector<CanonicalCookie*>& cookies);
90 93
91 // Sets the cookies specified by |cookie_list| returned from |url| 94 // Sets the cookies specified by |cookie_list| returned from |url|
92 // with options |options| in effect. Expects a cookie line, like 95 // with options |options| in effect. Expects a cookie line, like
93 // "a=1; domain=b.com". 96 // "a=1; domain=b.com".
94 // 97 //
95 // Fails either if the cookie is invalid or if this is a non-HTTPONLY cookie 98 // Fails either if the cookie is invalid or if this is a non-HTTPONLY cookie
96 // and it would overwrite an existing HTTPONLY cookie. 99 // and it would overwrite an existing HTTPONLY cookie.
97 // Returns true if the cookie is successfully set. 100 // Returns true if the cookie is successfully set.
98 virtual void SetCookieWithOptionsAsync( 101 virtual void SetCookieWithOptionsAsync(const GURL& url,
99 const GURL& url, 102 const std::string& cookie_line,
100 const std::string& cookie_line, 103 const CookieOptions& options,
101 const CookieOptions& options, 104 SetCookiesCallback callback) = 0;
102 const SetCookiesCallback& callback) = 0;
103 105
104 // Sets a cookie given explicit user-provided cookie attributes. The cookie 106 // Sets a cookie given explicit user-provided cookie attributes. The cookie
105 // name, value, domain, etc. are each provided as separate strings. This 107 // name, value, domain, etc. are each provided as separate strings. This
106 // function expects each attribute to be well-formed. It will check for 108 // function expects each attribute to be well-formed. It will check for
107 // disallowed characters (e.g. the ';' character is disallowed within the 109 // disallowed characters (e.g. the ';' character is disallowed within the
108 // cookie value attribute) and will return false without setting the cookie 110 // cookie value attribute) and will return false without setting the cookie
109 // if such characters are found. 111 // if such characters are found.
110 // 112 //
111 // If |creation_time| is null, it will be set to the time the cookie is set. 113 // If |creation_time| is null, it will be set to the time the cookie is set.
112 // If |last_access_time| is null, it be set to |creation_time|. 114 // If |last_access_time| is null, it be set to |creation_time|.
113 // 115 //
114 // If unable to set a cookie, will invoke |callback| with false. 116 // If unable to set a cookie, will invoke |callback| with false.
115 virtual void SetCookieWithDetailsAsync( 117 virtual void SetCookieWithDetailsAsync(const GURL& url,
116 const GURL& url, 118 const std::string& name,
117 const std::string& name, 119 const std::string& value,
118 const std::string& value, 120 const std::string& domain,
119 const std::string& domain, 121 const std::string& path,
120 const std::string& path, 122 base::Time creation_time,
121 base::Time creation_time, 123 base::Time expiration_time,
122 base::Time expiration_time, 124 base::Time last_access_time,
123 base::Time last_access_time, 125 bool secure,
124 bool secure, 126 bool http_only,
125 bool http_only, 127 CookieSameSite same_site,
126 CookieSameSite same_site, 128 CookiePriority priority,
127 CookiePriority priority, 129 SetCookiesCallback callback) = 0;
128 const SetCookiesCallback& callback) = 0;
129 130
130 // TODO(rdsmith): Remove SetCookieWithDetailsAsync in favor of this. 131 // TODO(rdsmith): Remove SetCookieWithDetailsAsync in favor of this.
131 // Set the cookie on the cookie store. |cookie.IsCanonical()| must 132 // Set the cookie on the cookie store. |cookie.IsCanonical()| must
132 // be true. |secure_source| indicates if the source of the setting 133 // be true. |secure_source| indicates if the source of the setting
133 // may be considered secure (if from a URL, the scheme is 134 // may be considered secure (if from a URL, the scheme is
134 // cryptographic), and |modify_http_only| indicates if the source of 135 // cryptographic), and |modify_http_only| indicates if the source of
135 // the setting may modify http_only cookies. The current time will 136 // the setting may modify http_only cookies. The current time will
136 // be used in place of a null creation time. 137 // be used in place of a null creation time.
137 virtual void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie, 138 virtual void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie,
138 bool secure_source, 139 bool secure_source,
139 bool modify_http_only, 140 bool modify_http_only,
140 const SetCookiesCallback& callback) = 0; 141 SetCookiesCallback callback) = 0;
141 142
142 // TODO(???): what if the total size of all the cookies >4k, can we have a 143 // TODO(???): what if the total size of all the cookies >4k, can we have a
143 // header that big or do we need multiple Cookie: headers? 144 // header that big or do we need multiple Cookie: headers?
144 // Note: Some sites, such as Facebook, occasionally use Cookie headers >4k. 145 // Note: Some sites, such as Facebook, occasionally use Cookie headers >4k.
145 // 146 //
146 // Simple interface, gets a cookie string "a=b; c=d" for the given URL. 147 // Simple interface, gets a cookie string "a=b; c=d" for the given URL.
147 // Gets all cookies that apply to |url| given |options|. Use options to 148 // Gets all cookies that apply to |url| given |options|. Use options to
148 // access httponly cookies. 149 // access httponly cookies.
149 // 150 //
150 // The returned cookies are ordered by longest path, then earliest 151 // The returned cookies are ordered by longest path, then earliest
151 // creation date. 152 // creation date.
152 // 153 //
153 // TODO(mkwst): This method is deprecated; callsites should be updated to 154 // TODO(mkwst): This method is deprecated; callsites should be updated to
154 // use 'GetCookieListWithOptionsAsync'. 155 // use 'GetCookieListWithOptionsAsync'.
155 virtual void GetCookiesWithOptionsAsync( 156 virtual void GetCookiesWithOptionsAsync(const GURL& url,
156 const GURL& url, 157 const CookieOptions& options,
157 const CookieOptions& options, 158 GetCookiesCallback callback) = 0;
158 const GetCookiesCallback& callback) = 0;
159 159
160 // Obtains a CookieList for the given |url| and |options|. The returned 160 // Obtains a CookieList for the given |url| and |options|. The returned
161 // cookies are passed into |callback|, ordered by longest path, then earliest 161 // cookies are passed into |callback|, ordered by longest path, then earliest
162 // creation date. 162 // creation date.
163 virtual void GetCookieListWithOptionsAsync( 163 virtual void GetCookieListWithOptionsAsync(
164 const GURL& url, 164 const GURL& url,
165 const CookieOptions& options, 165 const CookieOptions& options,
166 const GetCookieListCallback& callback) = 0; 166 GetCookieListCallback callback) = 0;
167 167
168 // Returns all cookies associated with |url|, including http-only, and 168 // Returns all cookies associated with |url|, including http-only, and
169 // same-site cookies. The returned cookies are ordered by longest path, then 169 // same-site cookies. The returned cookies are ordered by longest path, then
170 // by earliest creation date, and are not marked as having been accessed. 170 // by earliest creation date, and are not marked as having been accessed.
171 // 171 //
172 // TODO(mkwst): This method is deprecated, and should be removed, either by 172 // TODO(mkwst): This method is deprecated, and should be removed, either by
173 // updating callsites to use 'GetCookieListWithOptionsAsync' with an explicit 173 // updating callsites to use 'GetCookieListWithOptionsAsync' with an explicit
174 // CookieOptions, or by changing CookieOptions' defaults. 174 // CookieOptions, or by changing CookieOptions' defaults.
175 void GetAllCookiesForURLAsync(const GURL& url, 175 void GetAllCookiesForURLAsync(const GURL& url,
176 const GetCookieListCallback& callback); 176 GetCookieListCallback callback);
177 177
178 // Returns all the cookies, for use in management UI, etc. This does not mark 178 // Returns all the cookies, for use in management UI, etc. This does not mark
179 // the cookies as having been accessed. The returned cookies are ordered by 179 // the cookies as having been accessed. The returned cookies are ordered by
180 // longest path, then by earliest creation date. 180 // longest path, then by earliest creation date.
181 virtual void GetAllCookiesAsync(const GetCookieListCallback& callback) = 0; 181 virtual void GetAllCookiesAsync(GetCookieListCallback callback) = 0;
182 182
183 // Deletes all cookies that might apply to |url| that have |cookie_name|. 183 // Deletes all cookies that might apply to |url| that have |cookie_name|.
184 virtual void DeleteCookieAsync(const GURL& url, 184 virtual void DeleteCookieAsync(const GURL& url,
185 const std::string& cookie_name, 185 const std::string& cookie_name,
186 const base::Closure& callback) = 0; 186 base::OnceClosure callback) = 0;
187 187
188 // Deletes one specific cookie. |cookie| must have been returned by a previous 188 // Deletes one specific cookie. |cookie| must have been returned by a previous
189 // query on this CookieStore. Invokes |callback| with 1 if a cookie was 189 // query on this CookieStore. Invokes |callback| with 1 if a cookie was
190 // deleted, 0 otherwise. 190 // deleted, 0 otherwise.
191 virtual void DeleteCanonicalCookieAsync(const CanonicalCookie& cookie, 191 virtual void DeleteCanonicalCookieAsync(const CanonicalCookie& cookie,
192 const DeleteCallback& callback) = 0; 192 DeleteCallback callback) = 0;
193 193
194 // Deletes all of the cookies that have a creation_date greater than or equal 194 // Deletes all of the cookies that have a creation_date greater than or equal
195 // to |delete_begin| and less than |delete_end| 195 // to |delete_begin| and less than |delete_end|
196 // Calls |callback| with the number of cookies deleted. 196 // Calls |callback| with the number of cookies deleted.
197 virtual void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin, 197 virtual void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin,
198 const base::Time& delete_end, 198 const base::Time& delete_end,
199 const DeleteCallback& callback) = 0; 199 DeleteCallback callback) = 0;
200 200
201 // Deletes all of the cookies that match the given predicate and that have a 201 // Deletes all of the cookies that match the given predicate and that have a
202 // creation_date greater than or equal to |delete_begin| and smaller than 202 // creation_date greater than or equal to |delete_begin| and smaller than
203 // |delete_end|. This includes all http_only and secure cookies. Avoid 203 // |delete_end|. This includes all http_only and secure cookies. Avoid
204 // deleting cookies that could leave websites with a partial set of visible 204 // deleting cookies that could leave websites with a partial set of visible
205 // cookies. 205 // cookies.
206 // Calls |callback| with the number of cookies deleted. 206 // Calls |callback| with the number of cookies deleted.
207 virtual void DeleteAllCreatedBetweenWithPredicateAsync( 207 virtual void DeleteAllCreatedBetweenWithPredicateAsync(
208 const base::Time& delete_begin, 208 const base::Time& delete_begin,
209 const base::Time& delete_end, 209 const base::Time& delete_end,
210 const CookiePredicate& predicate, 210 const CookiePredicate& predicate,
211 const DeleteCallback& callback) = 0; 211 DeleteCallback callback) = 0;
212 212
213 virtual void DeleteSessionCookiesAsync(const DeleteCallback&) = 0; 213 virtual void DeleteSessionCookiesAsync(DeleteCallback) = 0;
214 214
215 // Deletes all cookies in the store. 215 // Deletes all cookies in the store.
216 void DeleteAllAsync(const DeleteCallback& callback); 216 void DeleteAllAsync(DeleteCallback callback);
217 217
218 // Flush the backing store (if any) to disk and post the given callback when 218 // Flush the backing store (if any) to disk and post the given callback when
219 // done. 219 // done.
220 virtual void FlushStore(const base::Closure& callback) = 0; 220 virtual void FlushStore(base::OnceClosure callback) = 0;
221 221
222 // Protects session cookies from deletion on shutdown, if the underlying 222 // Protects session cookies from deletion on shutdown, if the underlying
223 // CookieStore implemention is currently configured to store them to disk. 223 // CookieStore implemention is currently configured to store them to disk.
224 // Otherwise, does nothing. 224 // Otherwise, does nothing.
225 virtual void SetForceKeepSessionState(); 225 virtual void SetForceKeepSessionState();
226 226
227 // Add a callback to be notified when the set of cookies named |name| that 227 // Add a callback to be notified when the set of cookies named |name| that
228 // would be sent for a request to |url| changes. The returned handle is 228 // would be sent for a request to |url| changes. The returned handle is
229 // guaranteed not to hold a hard reference to the CookieStore object. 229 // guaranteed not to hold a hard reference to the CookieStore object.
230 // 230 //
(...skipping 24 matching lines...) Expand all
255 int GetChannelIDServiceID(); 255 int GetChannelIDServiceID();
256 256
257 protected: 257 protected:
258 CookieStore(); 258 CookieStore();
259 int channel_id_service_id_; 259 int channel_id_service_id_;
260 }; 260 };
261 261
262 } // namespace net 262 } // namespace net
263 263
264 #endif // NET_COOKIES_COOKIE_STORE_H_ 264 #endif // NET_COOKIES_COOKIE_STORE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698