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

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

Issue 1616443003: Add FlushStore to CookieStore interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cookie_monster3
Patch Set: fix old comment Created 4 years, 11 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
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_store_test_helpers.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/callback_list.h" 14 #include "base/callback_list.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "base/time/time.h" 16 #include "base/time/time.h"
17 #include "net/base/net_export.h" 17 #include "net/base/net_export.h"
18 #include "net/cookies/canonical_cookie.h" 18 #include "net/cookies/canonical_cookie.h"
19 #include "net/cookies/cookie_options.h" 19 #include "net/cookies/cookie_options.h"
20 20
21 class GURL; 21 class GURL;
22 22
23 namespace net { 23 namespace net {
24 24
25 class CookieMonster; 25 class CookieMonster;
26 26
27 // An interface for storing and retrieving cookies. Implementations need to 27 // An interface for storing and retrieving cookies. Implementations need to
28 // be thread safe as its methods can be accessed from IO as well as UI threads. 28 // be thread safe as its methods can be accessed from IO as well as UI threads.
29 //
30 // All async functions may either invoke the callback asynchronously on the same
31 // thread, or they may be invoked immediately (prior to return of the
32 // asynchronous function).
29 class NET_EXPORT CookieStore : public base::RefCountedThreadSafe<CookieStore> { 33 class NET_EXPORT CookieStore : public base::RefCountedThreadSafe<CookieStore> {
30 public: 34 public:
31 // Callback definitions. 35 // Callback definitions.
32 typedef base::Callback<void(const CookieList& cookies)> GetCookieListCallback; 36 typedef base::Callback<void(const CookieList& cookies)> GetCookieListCallback;
33 typedef base::Callback<void(const std::string& cookie)> GetCookiesCallback; 37 typedef base::Callback<void(const std::string& cookie)> GetCookiesCallback;
34 typedef base::Callback<void(bool success)> SetCookiesCallback; 38 typedef base::Callback<void(bool success)> SetCookiesCallback;
35 typedef base::Callback<void(int num_deleted)> DeleteCallback; 39 typedef base::Callback<void(int num_deleted)> DeleteCallback;
36 typedef base::Callback<void(const CanonicalCookie& cookie, bool removed)> 40 typedef base::Callback<void(const CanonicalCookie& cookie, bool removed)>
37 CookieChangedCallback; 41 CookieChangedCallback;
38 typedef base::CallbackList<void(const CanonicalCookie& cookie, bool removed)> 42 typedef base::CallbackList<void(const CanonicalCookie& cookie, bool removed)>
39 CookieChangedCallbackList; 43 CookieChangedCallbackList;
40 typedef CookieChangedCallbackList::Subscription CookieChangedSubscription; 44 typedef CookieChangedCallbackList::Subscription CookieChangedSubscription;
41 45
42 // Sets a single cookie. Expects a cookie line, like "a=1; domain=b.com". 46 // Sets the cookies specified by |cookie_list| returned from |url|
47 // with options |options| in effect. Expects a cookie line, like
48 // "a=1; domain=b.com".
43 // 49 //
44 // Fails either if the cookie is invalid or if this is a non-HTTPONLY cookie 50 // Fails either if the cookie is invalid or if this is a non-HTTPONLY cookie
45 // and it would overwrite an existing HTTPONLY cookie. 51 // and it would overwrite an existing HTTPONLY cookie.
46 // Returns true if the cookie is successfully set. 52 // Returns true if the cookie is successfully set.
47 virtual void SetCookieWithOptionsAsync( 53 virtual void SetCookieWithOptionsAsync(
48 const GURL& url, 54 const GURL& url,
49 const std::string& cookie_line, 55 const std::string& cookie_line,
50 const CookieOptions& options, 56 const CookieOptions& options,
51 const SetCookiesCallback& callback) = 0; 57 const SetCookiesCallback& callback) = 0;
52 58
53 // TODO(???): what if the total size of all the cookies >4k, can we have a 59 // TODO(???): what if the total size of all the cookies >4k, can we have a
54 // header that big or do we need multiple Cookie: headers? 60 // header that big or do we need multiple Cookie: headers?
55 // Note: Some sites, such as Facebook, occasionally use Cookie headers >4k. 61 // Note: Some sites, such as Facebook, occasionally use Cookie headers >4k.
56 // 62 //
57 // Simple interface, gets a cookie string "a=b; c=d" for the given URL. 63 // Simple interface, gets a cookie string "a=b; c=d" for the given URL.
58 // Use options to access httponly cookies. 64 // Gets all cookies that apply to |url| given |options|. Use options to
65 // access httponly cookies.
66 //
67 // The returned cookies are ordered by longest path, then earliest
68 // creation date.
59 virtual void GetCookiesWithOptionsAsync( 69 virtual void GetCookiesWithOptionsAsync(
60 const GURL& url, 70 const GURL& url,
61 const CookieOptions& options, 71 const CookieOptions& options,
62 const GetCookiesCallback& callback) = 0; 72 const GetCookiesCallback& callback) = 0;
63 73
64 // Returns all matching cookies without marking them as accessed, 74 // Invokes GetAllCookiesForURLWithOptions with options set to include HTTP
65 // including HTTP only cookies. 75 // only cookies.
66 virtual void GetAllCookiesForURLAsync( 76 virtual void GetAllCookiesForURLAsync(
67 const GURL& url, 77 const GURL& url,
68 const GetCookieListCallback& callback) = 0; 78 const GetCookieListCallback& callback) = 0;
69 79
70 // Deletes the passed in cookie for the specified URL. 80 // Deletes all cookies that might apply to |url| that have |cookie_name|.
71 virtual void DeleteCookieAsync(const GURL& url, 81 virtual void DeleteCookieAsync(const GURL& url,
72 const std::string& cookie_name, 82 const std::string& cookie_name,
73 const base::Closure& callback) = 0; 83 const base::Closure& callback) = 0;
74 84
75 // Deletes all of the cookies that have a creation_date greater than or equal 85 // Deletes all of the cookies that have a creation_date greater than or equal
76 // to |delete_begin| and less than |delete_end| 86 // to |delete_begin| and less than |delete_end|
77 // Returns the number of cookies that have been deleted. 87 // Returns the number of cookies that have been deleted.
78 virtual void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin, 88 virtual void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin,
79 const base::Time& delete_end, 89 const base::Time& delete_end,
80 const DeleteCallback& callback) = 0; 90 const DeleteCallback& callback) = 0;
81 91
82 // Deletes all of the cookies that match the host of the given URL 92 // Deletes all of the cookies that match the host of the given URL
83 // regardless of path and that have a creation_date greater than or 93 // regardless of path and that have a creation_date greater than or
84 // equal to |delete_begin| and less then |delete_end|. This includes 94 // equal to |delete_begin| and less then |delete_end|. This includes
85 // all http_only and secure cookies, but does not include any domain 95 // all http_only and secure cookies, but does not include any domain
86 // cookies that may apply to this host. 96 // cookies that may apply to this host.
87 // Returns the number of cookies deleted. 97 // Returns the number of cookies deleted.
88 virtual void DeleteAllCreatedBetweenForHostAsync( 98 virtual void DeleteAllCreatedBetweenForHostAsync(
89 const base::Time delete_begin, 99 const base::Time delete_begin,
90 const base::Time delete_end, 100 const base::Time delete_end,
91 const GURL& url, 101 const GURL& url,
92 const DeleteCallback& callback) = 0; 102 const DeleteCallback& callback) = 0;
93 103
94 virtual void DeleteSessionCookiesAsync(const DeleteCallback&) = 0; 104 virtual void DeleteSessionCookiesAsync(const DeleteCallback&) = 0;
95 105
106 // Flush the backing store (if any) to disk and post the given callback when
107 // done.
108 // WARNING: THE CALLBACK WILL RUN ON A RANDOM THREAD. IT MUST BE THREAD SAFE.
109 // It may be posted to the current thread, or it may run on the thread that
110 // actually does the flushing. Your Task should generally post a notification
111 // to the thread you actually want to be notified on.
112 // TODO(mmenke): Once this class is no longer thread-safe, this will always
113 // be invoked on the CookieStore's thread, and this comment can be removed.
114 // https://crbug.com/46185
115 virtual void FlushStore(const base::Closure& callback) = 0;
116
96 // Returns the underlying CookieMonster. 117 // Returns the underlying CookieMonster.
97 virtual CookieMonster* GetCookieMonster() = 0; 118 virtual CookieMonster* GetCookieMonster() = 0;
98 119
99 // Add a callback to be notified when the set of cookies named |name| that 120 // Add a callback to be notified when the set of cookies named |name| that
100 // would be sent for a request to |url| changes. The returned handle is 121 // would be sent for a request to |url| changes. The returned handle is
101 // guaranteed not to hold a hard reference to the CookieStore object. 122 // guaranteed not to hold a hard reference to the CookieStore object.
102 // 123 //
103 // |callback| will be called when a cookie is added or removed. |callback| is 124 // |callback| will be called when a cookie is added or removed. |callback| is
104 // passed the respective |cookie| which was added to or removed from the 125 // passed the respective |cookie| which was added to or removed from the
105 // cookies and a boolean indicating if the cookies was removed or not. 126 // cookies and a boolean indicating if the cookies was removed or not.
(...skipping 13 matching lines...) Expand all
119 140
120 protected: 141 protected:
121 friend class base::RefCountedThreadSafe<CookieStore>; 142 friend class base::RefCountedThreadSafe<CookieStore>;
122 CookieStore(); 143 CookieStore();
123 virtual ~CookieStore(); 144 virtual ~CookieStore();
124 }; 145 };
125 146
126 } // namespace net 147 } // namespace net
127 148
128 #endif // NET_COOKIES_COOKIE_STORE_H_ 149 #endif // NET_COOKIES_COOKIE_STORE_H_
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_store_test_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698