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

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

Issue 10785017: Move CanonicalCookie into separate files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing include Created 8 years, 5 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 | Annotate | Revision Log
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 // This file contains test infrastructure for multiple files 5 // This file contains test infrastructure for multiple files
6 // (current cookie_monster_unittest.cc and cookie_monster_perftest.cc) 6 // (current cookie_monster_unittest.cc and cookie_monster_perftest.cc)
7 // that need to test out CookieMonster interactions with the backing store. 7 // that need to test out CookieMonster interactions with the backing store.
8 // It should only be included by test code. 8 // It should only be included by test code.
9 9
10 #ifndef NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_ 10 #ifndef NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_
11 #define NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_ 11 #define NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_
12 12
13 #include <map> 13 #include <map>
14 #include <string> 14 #include <string>
15 #include <utility> 15 #include <utility>
16 #include <vector> 16 #include <vector>
17 #include "net/cookies/canonical_cookie.h"
17 #include "net/cookies/cookie_monster.h" 18 #include "net/cookies/cookie_monster.h"
18 19
19 namespace base { 20 namespace base {
20 class Time; 21 class Time;
21 } 22 }
22 23
23 namespace net { 24 namespace net {
24 25
25 // Wrapper class for posting a loaded callback. Since the Callback class is not 26 // Wrapper class for posting a loaded callback. Since the Callback class is not
26 // reference counted, we cannot post a callback to the message loop directly, 27 // reference counted, we cannot post a callback to the message loop directly,
27 // instead we post a LoadedCallbackTask. 28 // instead we post a LoadedCallbackTask.
28 class LoadedCallbackTask 29 class LoadedCallbackTask
29 : public base::RefCountedThreadSafe<LoadedCallbackTask> { 30 : public base::RefCountedThreadSafe<LoadedCallbackTask> {
30 public: 31 public:
31 typedef CookieMonster::PersistentCookieStore::LoadedCallback LoadedCallback; 32 typedef CookieMonster::PersistentCookieStore::LoadedCallback LoadedCallback;
32 33
33 LoadedCallbackTask(LoadedCallback loaded_callback, 34 LoadedCallbackTask(LoadedCallback loaded_callback,
34 std::vector<CookieMonster::CanonicalCookie*> cookies); 35 std::vector<CanonicalCookie*> cookies);
35 36
36 void Run() { 37 void Run() {
37 loaded_callback_.Run(cookies_); 38 loaded_callback_.Run(cookies_);
38 } 39 }
39 40
40 private: 41 private:
41 friend class base::RefCountedThreadSafe<LoadedCallbackTask>; 42 friend class base::RefCountedThreadSafe<LoadedCallbackTask>;
42 ~LoadedCallbackTask(); 43 ~LoadedCallbackTask();
43 44
44 LoadedCallback loaded_callback_; 45 LoadedCallback loaded_callback_;
45 std::vector<CookieMonster::CanonicalCookie*> cookies_; 46 std::vector<CanonicalCookie*> cookies_;
46 47
47 DISALLOW_COPY_AND_ASSIGN(LoadedCallbackTask); 48 DISALLOW_COPY_AND_ASSIGN(LoadedCallbackTask);
48 }; // Wrapper class LoadedCallbackTask 49 }; // Wrapper class LoadedCallbackTask
49 50
50 // Describes a call to one of the 3 functions of PersistentCookieStore. 51 // Describes a call to one of the 3 functions of PersistentCookieStore.
51 struct CookieStoreCommand { 52 struct CookieStoreCommand {
52 enum Type { 53 enum Type {
53 ADD, 54 ADD,
54 UPDATE_ACCESS_TIME, 55 UPDATE_ACCESS_TIME,
55 REMOVE, 56 REMOVE,
56 }; 57 };
57 58
58 CookieStoreCommand(Type type, 59 CookieStoreCommand(Type type, const CanonicalCookie& cookie)
59 const CookieMonster::CanonicalCookie& cookie)
60 : type(type), 60 : type(type),
61 cookie(cookie) {} 61 cookie(cookie) {}
62 62
63 Type type; 63 Type type;
64 CookieMonster::CanonicalCookie cookie; 64 CanonicalCookie cookie;
65 }; 65 };
66 66
67 // Implementation of PersistentCookieStore that captures the 67 // Implementation of PersistentCookieStore that captures the
68 // received commands and saves them to a list. 68 // received commands and saves them to a list.
69 // The result of calls to Load() can be configured using SetLoadExpectation(). 69 // The result of calls to Load() can be configured using SetLoadExpectation().
70 class MockPersistentCookieStore 70 class MockPersistentCookieStore
71 : public CookieMonster::PersistentCookieStore { 71 : public CookieMonster::PersistentCookieStore {
72 public: 72 public:
73 typedef std::vector<CookieStoreCommand> CommandList; 73 typedef std::vector<CookieStoreCommand> CommandList;
74 74
75 MockPersistentCookieStore(); 75 MockPersistentCookieStore();
76 76
77 void SetLoadExpectation( 77 void SetLoadExpectation(
78 bool return_value, 78 bool return_value,
79 const std::vector<CookieMonster::CanonicalCookie*>& result); 79 const std::vector<CanonicalCookie*>& result);
80 80
81 const CommandList& commands() const { 81 const CommandList& commands() const {
82 return commands_; 82 return commands_;
83 } 83 }
84 84
85 virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; 85 virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE;
86 86
87 virtual void LoadCookiesForKey(const std::string& key, 87 virtual void LoadCookiesForKey(const std::string& key,
88 const LoadedCallback& loaded_callback) OVERRIDE; 88 const LoadedCallback& loaded_callback) OVERRIDE;
89 89
90 virtual void AddCookie(const CookieMonster::CanonicalCookie& cookie) OVERRIDE; 90 virtual void AddCookie(const CanonicalCookie& cookie) OVERRIDE;
91 91
92 virtual void UpdateCookieAccessTime( 92 virtual void UpdateCookieAccessTime(
93 const CookieMonster::CanonicalCookie& cookie) OVERRIDE; 93 const CanonicalCookie& cookie) OVERRIDE;
94 94
95 virtual void DeleteCookie( 95 virtual void DeleteCookie(
96 const CookieMonster::CanonicalCookie& cookie) OVERRIDE; 96 const CanonicalCookie& cookie) OVERRIDE;
97 97
98 virtual void Flush(const base::Closure& callback) OVERRIDE; 98 virtual void Flush(const base::Closure& callback) OVERRIDE;
99 99
100 virtual void SetForceKeepSessionState() OVERRIDE; 100 virtual void SetForceKeepSessionState() OVERRIDE;
101 101
102 protected: 102 protected:
103 virtual ~MockPersistentCookieStore(); 103 virtual ~MockPersistentCookieStore();
104 104
105 private: 105 private:
106 CommandList commands_; 106 CommandList commands_;
107 107
108 // Deferred result to use when Load() is called. 108 // Deferred result to use when Load() is called.
109 bool load_return_value_; 109 bool load_return_value_;
110 std::vector<CookieMonster::CanonicalCookie*> load_result_; 110 std::vector<CanonicalCookie*> load_result_;
111 // Indicates if the store has been fully loaded to avoid returning duplicate 111 // Indicates if the store has been fully loaded to avoid returning duplicate
112 // cookies. 112 // cookies.
113 bool loaded_; 113 bool loaded_;
114 114
115 DISALLOW_COPY_AND_ASSIGN(MockPersistentCookieStore); 115 DISALLOW_COPY_AND_ASSIGN(MockPersistentCookieStore);
116 }; 116 };
117 117
118 // Mock for CookieMonster::Delegate 118 // Mock for CookieMonster::Delegate
119 class MockCookieMonsterDelegate : public CookieMonster::Delegate { 119 class MockCookieMonsterDelegate : public CookieMonster::Delegate {
120 public: 120 public:
121 typedef std::pair<CookieMonster::CanonicalCookie, bool> 121 typedef std::pair<CanonicalCookie, bool>
122 CookieNotification; 122 CookieNotification;
123 123
124 MockCookieMonsterDelegate(); 124 MockCookieMonsterDelegate();
125 125
126 const std::vector<CookieNotification>& changes() const { return changes_; } 126 const std::vector<CookieNotification>& changes() const { return changes_; }
127 127
128 void reset() { changes_.clear(); } 128 void reset() { changes_.clear(); }
129 129
130 virtual void OnCookieChanged( 130 virtual void OnCookieChanged(
131 const CookieMonster::CanonicalCookie& cookie, 131 const CanonicalCookie& cookie,
132 bool removed, 132 bool removed,
133 CookieMonster::Delegate::ChangeCause cause) OVERRIDE; 133 CookieMonster::Delegate::ChangeCause cause) OVERRIDE;
134 134
135 private: 135 private:
136 virtual ~MockCookieMonsterDelegate(); 136 virtual ~MockCookieMonsterDelegate();
137 137
138 std::vector<CookieNotification> changes_; 138 std::vector<CookieNotification> changes_;
139 139
140 DISALLOW_COPY_AND_ASSIGN(MockCookieMonsterDelegate); 140 DISALLOW_COPY_AND_ASSIGN(MockCookieMonsterDelegate);
141 }; 141 };
142 142
143 // Helper to build a single CanonicalCookie. 143 // Helper to build a single CanonicalCookie.
144 CookieMonster::CanonicalCookie BuildCanonicalCookie( 144 CanonicalCookie BuildCanonicalCookie(const std::string& key,
145 const std::string& key, 145 const std::string& cookie_line,
146 const std::string& cookie_line, 146 const base::Time& creation_time);
147 const base::Time& creation_time);
148 147
149 // Helper to build a list of CanonicalCookie*s. 148 // Helper to build a list of CanonicalCookie*s.
150 void AddCookieToList( 149 void AddCookieToList(
151 const std::string& key, 150 const std::string& key,
152 const std::string& cookie_line, 151 const std::string& cookie_line,
153 const base::Time& creation_time, 152 const base::Time& creation_time,
154 std::vector<CookieMonster::CanonicalCookie*>* out_list); 153 std::vector<CanonicalCookie*>* out_list);
155 154
156 // Just act like a backing database. Keep cookie information from 155 // Just act like a backing database. Keep cookie information from
157 // Add/Update/Delete and regurgitate it when Load is called. 156 // Add/Update/Delete and regurgitate it when Load is called.
158 class MockSimplePersistentCookieStore 157 class MockSimplePersistentCookieStore
159 : public CookieMonster::PersistentCookieStore { 158 : public CookieMonster::PersistentCookieStore {
160 public: 159 public:
161 MockSimplePersistentCookieStore(); 160 MockSimplePersistentCookieStore();
162 161
163 virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; 162 virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE;
164 163
165 virtual void LoadCookiesForKey(const std::string& key, 164 virtual void LoadCookiesForKey(const std::string& key,
166 const LoadedCallback& loaded_callback) OVERRIDE; 165 const LoadedCallback& loaded_callback) OVERRIDE;
167 166
168 virtual void AddCookie( 167 virtual void AddCookie(const CanonicalCookie& cookie) OVERRIDE;
169 const CookieMonster::CanonicalCookie& cookie) OVERRIDE;
170 168
171 virtual void UpdateCookieAccessTime( 169 virtual void UpdateCookieAccessTime(const CanonicalCookie& cookie) OVERRIDE;
172 const CookieMonster::CanonicalCookie& cookie) OVERRIDE;
173 170
174 virtual void DeleteCookie( 171 virtual void DeleteCookie(const CanonicalCookie& cookie) OVERRIDE;
175 const CookieMonster::CanonicalCookie& cookie) OVERRIDE;
176 172
177 virtual void Flush(const base::Closure& callback) OVERRIDE; 173 virtual void Flush(const base::Closure& callback) OVERRIDE;
178 174
179 virtual void SetForceKeepSessionState() OVERRIDE; 175 virtual void SetForceKeepSessionState() OVERRIDE;
180 176
181 protected: 177 protected:
182 virtual ~MockSimplePersistentCookieStore(); 178 virtual ~MockSimplePersistentCookieStore();
183 179
184 private: 180 private:
185 typedef std::map<int64, CookieMonster::CanonicalCookie> 181 typedef std::map<int64, CanonicalCookie> CanonicalCookieMap;
186 CanonicalCookieMap;
187 182
188 CanonicalCookieMap cookies_; 183 CanonicalCookieMap cookies_;
189 184
190 // Indicates if the store has been fully loaded to avoid return duplicate 185 // Indicates if the store has been fully loaded to avoid return duplicate
191 // cookies in subsequent load requests 186 // cookies in subsequent load requests
192 bool loaded_; 187 bool loaded_;
193 }; 188 };
194 189
195 // Helper function for creating a CookieMonster backed by a 190 // Helper function for creating a CookieMonster backed by a
196 // MockSimplePersistentCookieStore for garbage collection testing. 191 // MockSimplePersistentCookieStore for garbage collection testing.
197 // 192 //
198 // Fill the store through import with |num_cookies| cookies, |num_old_cookies| 193 // Fill the store through import with |num_cookies| cookies, |num_old_cookies|
199 // with access time Now()-days_old, the rest with access time Now(). 194 // with access time Now()-days_old, the rest with access time Now().
200 // Do two SetCookies(). Return whether each of the two SetCookies() took 195 // Do two SetCookies(). Return whether each of the two SetCookies() took
201 // longer than |gc_perf_micros| to complete, and how many cookie were 196 // longer than |gc_perf_micros| to complete, and how many cookie were
202 // left in the store afterwards. 197 // left in the store afterwards.
203 CookieMonster* CreateMonsterFromStoreForGC( 198 CookieMonster* CreateMonsterFromStoreForGC(
204 int num_cookies, 199 int num_cookies,
205 int num_old_cookies, 200 int num_old_cookies,
206 int days_old); 201 int days_old);
207 202
208 } // namespace net 203 } // namespace net
209 204
210 #endif // NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_ 205 #endif // NET_COOKIES_COOKIE_MONSTER_STORE_TEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698