OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "chrome/browser/cookies_tree_model.h" | 5 #include "chrome/browser/cookies_tree_model.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "chrome/browser/host_content_settings_map.h" |
10 #include "chrome/browser/mock_browsing_data_appcache_helper.h" | 11 #include "chrome/browser/mock_browsing_data_appcache_helper.h" |
11 #include "chrome/browser/mock_browsing_data_database_helper.h" | 12 #include "chrome/browser/mock_browsing_data_database_helper.h" |
12 #include "chrome/browser/mock_browsing_data_local_storage_helper.h" | 13 #include "chrome/browser/mock_browsing_data_local_storage_helper.h" |
13 #include "chrome/common/net/url_request_context_getter.h" | 14 #include "chrome/common/net/url_request_context_getter.h" |
14 #include "chrome/test/testing_profile.h" | 15 #include "chrome/test/testing_profile.h" |
15 #include "net/url_request/url_request_context.h" | 16 #include "net/url_request/url_request_context.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
17 | 18 |
18 | 19 |
19 namespace { | 20 namespace { |
20 | 21 |
| 22 class StubSettingsObserver : public NotificationObserver { |
| 23 public: |
| 24 StubSettingsObserver() : counter(0) { |
| 25 registrar_.Add(this, NotificationType::CONTENT_SETTINGS_CHANGED, |
| 26 NotificationService::AllSources()); |
| 27 } |
| 28 |
| 29 virtual void Observe(NotificationType type, |
| 30 const NotificationSource& source, |
| 31 const NotificationDetails& details) { |
| 32 ++counter; |
| 33 Details<HostContentSettingsMap::ContentSettingsDetails> |
| 34 settings_details(details); |
| 35 last_pattern = settings_details.ptr()->pattern(); |
| 36 } |
| 37 |
| 38 HostContentSettingsMap::Pattern last_pattern; |
| 39 int counter; |
| 40 |
| 41 private: |
| 42 NotificationRegistrar registrar_; |
| 43 }; |
| 44 |
21 class CookiesTreeModelTest : public testing::Test { | 45 class CookiesTreeModelTest : public testing::Test { |
22 public: | 46 public: |
23 CookiesTreeModelTest() : io_thread_(ChromeThread::IO, &message_loop_) { | 47 CookiesTreeModelTest() : ui_thread_(ChromeThread::UI, &message_loop_), |
| 48 io_thread_(ChromeThread::IO, &message_loop_) { |
24 } | 49 } |
25 | 50 |
26 virtual ~CookiesTreeModelTest() { | 51 virtual ~CookiesTreeModelTest() { |
27 } | 52 } |
28 | 53 |
29 virtual void SetUp() { | 54 virtual void SetUp() { |
30 profile_.reset(new TestingProfile()); | 55 profile_.reset(new TestingProfile()); |
31 profile_->CreateRequestContext(); | 56 profile_->CreateRequestContext(); |
32 mock_browsing_data_database_helper_ = | 57 mock_browsing_data_database_helper_ = |
33 new MockBrowsingDataDatabaseHelper(profile_.get()); | 58 new MockBrowsingDataDatabaseHelper(profile_.get()); |
(...skipping 14 matching lines...) Expand all Loading... |
48 mock_browsing_data_appcache_helper_); | 73 mock_browsing_data_appcache_helper_); |
49 mock_browsing_data_database_helper_->AddDatabaseSamples(); | 74 mock_browsing_data_database_helper_->AddDatabaseSamples(); |
50 mock_browsing_data_database_helper_->Notify(); | 75 mock_browsing_data_database_helper_->Notify(); |
51 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); | 76 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); |
52 mock_browsing_data_local_storage_helper_->Notify(); | 77 mock_browsing_data_local_storage_helper_->Notify(); |
53 { | 78 { |
54 SCOPED_TRACE("Initial State 3 cookies, 2 databases, 2 local storages"); | 79 SCOPED_TRACE("Initial State 3 cookies, 2 databases, 2 local storages"); |
55 // 22 because there's the root, then foo1 -> cookies -> a, | 80 // 22 because there's the root, then foo1 -> cookies -> a, |
56 // foo2 -> cookies -> b, foo3 -> cookies -> c, | 81 // foo2 -> cookies -> b, foo3 -> cookies -> c, |
57 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, | 82 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, |
58 // host1 -> localstorage -> origin1, host2 -> localstorage -> origin2. | 83 // host1 -> localstorage -> http://host1:1/, |
| 84 // host2 -> localstorage -> http://host2:2/. |
59 EXPECT_EQ(22, cookies_model->GetRoot()->GetTotalNodeCount()); | 85 EXPECT_EQ(22, cookies_model->GetRoot()->GetTotalNodeCount()); |
60 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model)); | 86 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model)); |
61 EXPECT_EQ("origin1,origin2", GetDisplayedLocalStorages(cookies_model)); | 87 EXPECT_EQ("http://host1:1/,http://host2:2/", |
| 88 GetDisplayedLocalStorages(cookies_model)); |
62 } | 89 } |
63 return cookies_model; | 90 return cookies_model; |
64 } | 91 } |
65 | 92 |
66 // Get the cookie names in the cookie list, as a comma seperated string. | 93 // Get the cookie names in the cookie list, as a comma seperated string. |
67 // (Note that the CookieMonster cookie list is sorted by domain.) | 94 // (Note that the CookieMonster cookie list is sorted by domain.) |
68 // Ex: | 95 // Ex: |
69 // monster->SetCookie(GURL("http://b"), "X=1") | 96 // monster->SetCookie(GURL("http://b"), "X=1") |
70 // monster->SetCookie(GURL("http://a"), "Y=1") | 97 // monster->SetCookie(GURL("http://a"), "Y=1") |
71 // EXPECT_STREQ("Y,X", GetMonsterCookies(monster).c_str()); | 98 // EXPECT_STREQ("Y,X", GetMonsterCookies(monster).c_str()); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 void DeleteStoredObjects(CookieTreeNode* node) { | 185 void DeleteStoredObjects(CookieTreeNode* node) { |
159 node->DeleteStoredObjects(); | 186 node->DeleteStoredObjects(); |
160 // find the parent and index | 187 // find the parent and index |
161 CookieTreeNode* parent_node = node->GetParent(); | 188 CookieTreeNode* parent_node = node->GetParent(); |
162 DCHECK(parent_node); | 189 DCHECK(parent_node); |
163 int ct_node_index = parent_node->IndexOfChild(node); | 190 int ct_node_index = parent_node->IndexOfChild(node); |
164 delete parent_node->GetModel()->Remove(parent_node, ct_node_index); | 191 delete parent_node->GetModel()->Remove(parent_node, ct_node_index); |
165 } | 192 } |
166 protected: | 193 protected: |
167 MessageLoop message_loop_; | 194 MessageLoop message_loop_; |
| 195 ChromeThread ui_thread_; |
168 ChromeThread io_thread_; | 196 ChromeThread io_thread_; |
169 | 197 |
170 scoped_ptr<TestingProfile> profile_; | 198 scoped_ptr<TestingProfile> profile_; |
171 scoped_refptr<MockBrowsingDataDatabaseHelper> | 199 scoped_refptr<MockBrowsingDataDatabaseHelper> |
172 mock_browsing_data_database_helper_; | 200 mock_browsing_data_database_helper_; |
173 scoped_refptr<MockBrowsingDataLocalStorageHelper> | 201 scoped_refptr<MockBrowsingDataLocalStorageHelper> |
174 mock_browsing_data_local_storage_helper_; | 202 mock_browsing_data_local_storage_helper_; |
175 scoped_refptr<MockBrowsingDataAppCacheHelper> | 203 scoped_refptr<MockBrowsingDataAppCacheHelper> |
176 mock_browsing_data_appcache_helper_; | 204 mock_browsing_data_appcache_helper_; |
177 }; | 205 }; |
178 | 206 |
179 TEST_F(CookiesTreeModelTest, RemoveAll) { | 207 TEST_F(CookiesTreeModelTest, RemoveAll) { |
180 scoped_ptr<CookiesTreeModel> cookies_model( | 208 scoped_ptr<CookiesTreeModel> cookies_model( |
181 CreateCookiesTreeModelWithInitialSample()); | 209 CreateCookiesTreeModelWithInitialSample()); |
182 net::CookieMonster* monster = profile_->GetCookieMonster(); | 210 net::CookieMonster* monster = profile_->GetCookieMonster(); |
183 | 211 |
184 // Reset the selection of the first row. | 212 // Reset the selection of the first row. |
185 { | 213 { |
186 SCOPED_TRACE("Before removing"); | 214 SCOPED_TRACE("Before removing"); |
187 EXPECT_EQ(GetMonsterCookies(monster), | 215 EXPECT_EQ(GetMonsterCookies(monster), |
188 GetDisplayedCookies(cookies_model.get())); | 216 GetDisplayedCookies(cookies_model.get())); |
189 EXPECT_EQ("db1,db2", | 217 EXPECT_EQ("db1,db2", |
190 GetDisplayedDatabases(cookies_model.get())); | 218 GetDisplayedDatabases(cookies_model.get())); |
191 EXPECT_EQ("origin1,origin2", | 219 EXPECT_EQ("http://host1:1/,http://host2:2/", |
192 GetDisplayedLocalStorages(cookies_model.get())); | 220 GetDisplayedLocalStorages(cookies_model.get())); |
193 } | 221 } |
194 | 222 |
195 mock_browsing_data_database_helper_->Reset(); | 223 mock_browsing_data_database_helper_->Reset(); |
196 mock_browsing_data_local_storage_helper_->Reset(); | 224 mock_browsing_data_local_storage_helper_->Reset(); |
197 | 225 |
198 cookies_model->DeleteAllStoredObjects(); | 226 cookies_model->DeleteAllStoredObjects(); |
199 | 227 |
200 { | 228 { |
201 SCOPED_TRACE("After removing"); | 229 SCOPED_TRACE("After removing"); |
(...skipping 11 matching lines...) Expand all Loading... |
213 scoped_ptr<CookiesTreeModel> cookies_model( | 241 scoped_ptr<CookiesTreeModel> cookies_model( |
214 CreateCookiesTreeModelWithInitialSample()); | 242 CreateCookiesTreeModelWithInitialSample()); |
215 net::CookieMonster* monster = profile_->GetCookieMonster(); | 243 net::CookieMonster* monster = profile_->GetCookieMonster(); |
216 | 244 |
217 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(0)); | 245 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(0)); |
218 { | 246 { |
219 SCOPED_TRACE("First cookie origin removed"); | 247 SCOPED_TRACE("First cookie origin removed"); |
220 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 248 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
221 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 249 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
222 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); | 250 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); |
223 EXPECT_EQ("origin1,origin2", | 251 EXPECT_EQ("http://host1:1/,http://host2:2/", |
224 GetDisplayedLocalStorages(cookies_model.get())); | 252 GetDisplayedLocalStorages(cookies_model.get())); |
225 EXPECT_EQ(19, cookies_model->GetRoot()->GetTotalNodeCount()); | 253 EXPECT_EQ(19, cookies_model->GetRoot()->GetTotalNodeCount()); |
226 } | 254 } |
227 | 255 |
228 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(2)); | 256 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(2)); |
229 { | 257 { |
230 SCOPED_TRACE("First database origin removed"); | 258 SCOPED_TRACE("First database origin removed"); |
231 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 259 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
232 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 260 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
233 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 261 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
234 EXPECT_EQ("origin1,origin2", | 262 EXPECT_EQ("http://host1:1/,http://host2:2/", |
235 GetDisplayedLocalStorages(cookies_model.get())); | 263 GetDisplayedLocalStorages(cookies_model.get())); |
236 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); | 264 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); |
237 } | 265 } |
238 | 266 |
239 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)); | 267 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)); |
240 { | 268 { |
241 SCOPED_TRACE("First local storage origin removed"); | 269 SCOPED_TRACE("First local storage origin removed"); |
242 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 270 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
243 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 271 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
244 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 272 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
245 EXPECT_EQ("origin2", GetDisplayedLocalStorages(cookies_model.get())); | 273 EXPECT_EQ("http://host2:2/", |
| 274 GetDisplayedLocalStorages(cookies_model.get())); |
246 EXPECT_EQ(13, cookies_model->GetRoot()->GetTotalNodeCount()); | 275 EXPECT_EQ(13, cookies_model->GetRoot()->GetTotalNodeCount()); |
247 } | 276 } |
248 } | 277 } |
249 | 278 |
250 TEST_F(CookiesTreeModelTest, RemoveCookiesNode) { | 279 TEST_F(CookiesTreeModelTest, RemoveCookiesNode) { |
251 scoped_ptr<CookiesTreeModel> cookies_model( | 280 scoped_ptr<CookiesTreeModel> cookies_model( |
252 CreateCookiesTreeModelWithInitialSample()); | 281 CreateCookiesTreeModelWithInitialSample()); |
253 net::CookieMonster* monster = profile_->GetCookieMonster(); | 282 net::CookieMonster* monster = profile_->GetCookieMonster(); |
254 | 283 |
255 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(0)->GetChild(0)); | 284 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(0)->GetChild(0)); |
256 { | 285 { |
257 SCOPED_TRACE("First origin removed"); | 286 SCOPED_TRACE("First origin removed"); |
258 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 287 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
259 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 288 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
260 // 20 because in this case, the origin remains, although the COOKIES | 289 // 20 because in this case, the origin remains, although the COOKIES |
261 // node beneath it has been deleted. So, we have | 290 // node beneath it has been deleted. So, we have |
262 // root -> foo1 -> cookies -> a, foo2, foo3 -> cookies -> c | 291 // root -> foo1 -> cookies -> a, foo2, foo3 -> cookies -> c |
263 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, | 292 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, |
264 // host1 -> localstorage -> origin1, host2 -> localstorage -> origin2. | 293 // host1 -> localstorage -> http://host1:1/, |
| 294 // host2 -> localstorage -> http://host2:2/. |
265 EXPECT_EQ(20, cookies_model->GetRoot()->GetTotalNodeCount()); | 295 EXPECT_EQ(20, cookies_model->GetRoot()->GetTotalNodeCount()); |
266 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); | 296 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); |
267 EXPECT_EQ("origin1,origin2", | 297 EXPECT_EQ("http://host1:1/,http://host2:2/", |
268 GetDisplayedLocalStorages(cookies_model.get())); | 298 GetDisplayedLocalStorages(cookies_model.get())); |
269 } | 299 } |
270 | 300 |
271 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)->GetChild(0)); | 301 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)->GetChild(0)); |
272 { | 302 { |
273 SCOPED_TRACE("First database removed"); | 303 SCOPED_TRACE("First database removed"); |
274 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 304 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
275 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 305 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
276 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 306 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
277 EXPECT_EQ("origin1,origin2", | 307 EXPECT_EQ("http://host1:1/,http://host2:2/", |
278 GetDisplayedLocalStorages(cookies_model.get())); | 308 GetDisplayedLocalStorages(cookies_model.get())); |
279 EXPECT_EQ(18, cookies_model->GetRoot()->GetTotalNodeCount()); | 309 EXPECT_EQ(18, cookies_model->GetRoot()->GetTotalNodeCount()); |
280 } | 310 } |
281 | 311 |
282 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(5)->GetChild(0)); | 312 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(5)->GetChild(0)); |
283 { | 313 { |
284 SCOPED_TRACE("First origin removed"); | 314 SCOPED_TRACE("First origin removed"); |
285 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); | 315 EXPECT_STREQ("B,C", GetMonsterCookies(monster).c_str()); |
286 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 316 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
287 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 317 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
288 EXPECT_EQ("origin2", GetDisplayedLocalStorages(cookies_model.get())); | 318 EXPECT_EQ("http://host2:2/", |
| 319 GetDisplayedLocalStorages(cookies_model.get())); |
289 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); | 320 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); |
290 } | 321 } |
291 } | 322 } |
292 | 323 |
293 TEST_F(CookiesTreeModelTest, RemoveCookieNode) { | 324 TEST_F(CookiesTreeModelTest, RemoveCookieNode) { |
294 scoped_ptr<CookiesTreeModel> cookies_model( | 325 scoped_ptr<CookiesTreeModel> cookies_model( |
295 CreateCookiesTreeModelWithInitialSample()); | 326 CreateCookiesTreeModelWithInitialSample()); |
296 net::CookieMonster* monster = profile_->GetCookieMonster(); | 327 net::CookieMonster* monster = profile_->GetCookieMonster(); |
297 | 328 |
298 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(1)->GetChild(0)); | 329 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(1)->GetChild(0)); |
299 { | 330 { |
300 SCOPED_TRACE("Second origin COOKIES node removed"); | 331 SCOPED_TRACE("Second origin COOKIES node removed"); |
301 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); | 332 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); |
302 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 333 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
303 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); | 334 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get())); |
304 EXPECT_EQ("origin1,origin2", | 335 EXPECT_EQ("http://host1:1/,http://host2:2/", |
305 GetDisplayedLocalStorages(cookies_model.get())); | 336 GetDisplayedLocalStorages(cookies_model.get())); |
306 // 20 because in this case, the origin remains, although the COOKIES | 337 // 20 because in this case, the origin remains, although the COOKIES |
307 // node beneath it has been deleted. So, we have | 338 // node beneath it has been deleted. So, we have |
308 // root -> foo1 -> cookies -> a, foo2, foo3 -> cookies -> c | 339 // root -> foo1 -> cookies -> a, foo2, foo3 -> cookies -> c |
309 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, | 340 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, |
310 // host1 -> localstorage -> origin1, host2 -> localstorage -> origin2. | 341 // host1 -> localstorage -> http://host1:1/, |
| 342 // host2 -> localstorage -> http://host2:2/. |
311 EXPECT_EQ(20, cookies_model->GetRoot()->GetTotalNodeCount()); | 343 EXPECT_EQ(20, cookies_model->GetRoot()->GetTotalNodeCount()); |
312 } | 344 } |
313 | 345 |
314 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)->GetChild(0)); | 346 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3)->GetChild(0)); |
315 { | 347 { |
316 SCOPED_TRACE("First database removed"); | 348 SCOPED_TRACE("First database removed"); |
317 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); | 349 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); |
318 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 350 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
319 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 351 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
320 EXPECT_EQ("origin1,origin2", | 352 EXPECT_EQ("http://host1:1/,http://host2:2/", |
321 GetDisplayedLocalStorages(cookies_model.get())); | 353 GetDisplayedLocalStorages(cookies_model.get())); |
322 EXPECT_EQ(18, cookies_model->GetRoot()->GetTotalNodeCount()); | 354 EXPECT_EQ(18, cookies_model->GetRoot()->GetTotalNodeCount()); |
323 } | 355 } |
324 | 356 |
325 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(5)->GetChild(0)); | 357 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(5)->GetChild(0)); |
326 { | 358 { |
327 SCOPED_TRACE("First origin removed"); | 359 SCOPED_TRACE("First origin removed"); |
328 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); | 360 EXPECT_STREQ("A,C", GetMonsterCookies(monster).c_str()); |
329 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); | 361 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str()); |
330 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); | 362 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get())); |
331 EXPECT_EQ("origin2", GetDisplayedLocalStorages(cookies_model.get())); | 363 EXPECT_EQ("http://host2:2/", |
| 364 GetDisplayedLocalStorages(cookies_model.get())); |
332 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); | 365 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount()); |
333 } | 366 } |
334 } | 367 } |
335 | 368 |
336 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNode) { | 369 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNode) { |
337 net::CookieMonster* monster = profile_->GetCookieMonster(); | 370 net::CookieMonster* monster = profile_->GetCookieMonster(); |
338 monster->SetCookie(GURL("http://foo1"), "A=1"); | 371 monster->SetCookie(GURL("http://foo1"), "A=1"); |
339 monster->SetCookie(GURL("http://foo2"), "B=1"); | 372 monster->SetCookie(GURL("http://foo2"), "B=1"); |
340 monster->SetCookie(GURL("http://foo3"), "C=1"); | 373 monster->SetCookie(GURL("http://foo3"), "C=1"); |
341 monster->SetCookie(GURL("http://foo3"), "D=1"); | 374 monster->SetCookie(GURL("http://foo3"), "D=1"); |
342 CookiesTreeModel cookies_model(monster, | 375 CookiesTreeModel cookies_model(monster, |
343 mock_browsing_data_database_helper_, | 376 mock_browsing_data_database_helper_, |
344 mock_browsing_data_local_storage_helper_, | 377 mock_browsing_data_local_storage_helper_, |
345 mock_browsing_data_appcache_helper_); | 378 mock_browsing_data_appcache_helper_); |
346 mock_browsing_data_database_helper_->AddDatabaseSamples(); | 379 mock_browsing_data_database_helper_->AddDatabaseSamples(); |
347 mock_browsing_data_database_helper_->Notify(); | 380 mock_browsing_data_database_helper_->Notify(); |
348 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); | 381 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); |
349 mock_browsing_data_local_storage_helper_->Notify(); | 382 mock_browsing_data_local_storage_helper_->Notify(); |
350 | 383 |
351 { | 384 { |
352 SCOPED_TRACE("Initial State 4 cookies, 2 databases, 2 local storages"); | 385 SCOPED_TRACE("Initial State 4 cookies, 2 databases, 2 local storages"); |
353 // 23 because there's the root, then foo1 -> cookies -> a, | 386 // 23 because there's the root, then foo1 -> cookies -> a, |
354 // foo2 -> cookies -> b, foo3 -> cookies -> c,d | 387 // foo2 -> cookies -> b, foo3 -> cookies -> c,d |
355 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, | 388 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, |
356 // host1 -> localstorage -> origin1, host2 -> localstorage -> origin2. | 389 // host1 -> localstorage -> http://host1:1/, |
| 390 // host2 -> localstorage -> http://host2:2/. |
357 EXPECT_EQ(23, cookies_model.GetRoot()->GetTotalNodeCount()); | 391 EXPECT_EQ(23, cookies_model.GetRoot()->GetTotalNodeCount()); |
358 EXPECT_STREQ("A,B,C,D", GetMonsterCookies(monster).c_str()); | 392 EXPECT_STREQ("A,B,C,D", GetMonsterCookies(monster).c_str()); |
359 EXPECT_STREQ("A,B,C,D", GetDisplayedCookies(&cookies_model).c_str()); | 393 EXPECT_STREQ("A,B,C,D", GetDisplayedCookies(&cookies_model).c_str()); |
360 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); | 394 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); |
361 EXPECT_EQ("origin1,origin2", GetDisplayedLocalStorages(&cookies_model)); | 395 EXPECT_EQ("http://host1:1/,http://host2:2/", |
| 396 GetDisplayedLocalStorages(&cookies_model)); |
362 } | 397 } |
363 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2)); | 398 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2)); |
364 { | 399 { |
365 SCOPED_TRACE("Third origin removed"); | 400 SCOPED_TRACE("Third origin removed"); |
366 EXPECT_STREQ("A,B", GetMonsterCookies(monster).c_str()); | 401 EXPECT_STREQ("A,B", GetMonsterCookies(monster).c_str()); |
367 EXPECT_STREQ("A,B", GetDisplayedCookies(&cookies_model).c_str()); | 402 EXPECT_STREQ("A,B", GetDisplayedCookies(&cookies_model).c_str()); |
368 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); | 403 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); |
369 EXPECT_EQ("origin1,origin2", GetDisplayedLocalStorages(&cookies_model)); | 404 EXPECT_EQ("http://host1:1/,http://host2:2/", |
| 405 GetDisplayedLocalStorages(&cookies_model)); |
370 EXPECT_EQ(19, cookies_model.GetRoot()->GetTotalNodeCount()); | 406 EXPECT_EQ(19, cookies_model.GetRoot()->GetTotalNodeCount()); |
371 } | 407 } |
372 } | 408 } |
373 | 409 |
374 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNodeOf3) { | 410 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNodeOf3) { |
375 net::CookieMonster* monster = profile_->GetCookieMonster(); | 411 net::CookieMonster* monster = profile_->GetCookieMonster(); |
376 monster->SetCookie(GURL("http://foo1"), "A=1"); | 412 monster->SetCookie(GURL("http://foo1"), "A=1"); |
377 monster->SetCookie(GURL("http://foo2"), "B=1"); | 413 monster->SetCookie(GURL("http://foo2"), "B=1"); |
378 monster->SetCookie(GURL("http://foo3"), "C=1"); | 414 monster->SetCookie(GURL("http://foo3"), "C=1"); |
379 monster->SetCookie(GURL("http://foo3"), "D=1"); | 415 monster->SetCookie(GURL("http://foo3"), "D=1"); |
380 monster->SetCookie(GURL("http://foo3"), "E=1"); | 416 monster->SetCookie(GURL("http://foo3"), "E=1"); |
381 CookiesTreeModel cookies_model(monster, | 417 CookiesTreeModel cookies_model(monster, |
382 mock_browsing_data_database_helper_, | 418 mock_browsing_data_database_helper_, |
383 mock_browsing_data_local_storage_helper_, | 419 mock_browsing_data_local_storage_helper_, |
384 mock_browsing_data_appcache_helper_); | 420 mock_browsing_data_appcache_helper_); |
385 mock_browsing_data_database_helper_->AddDatabaseSamples(); | 421 mock_browsing_data_database_helper_->AddDatabaseSamples(); |
386 mock_browsing_data_database_helper_->Notify(); | 422 mock_browsing_data_database_helper_->Notify(); |
387 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); | 423 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples(); |
388 mock_browsing_data_local_storage_helper_->Notify(); | 424 mock_browsing_data_local_storage_helper_->Notify(); |
389 | 425 |
390 { | 426 { |
391 SCOPED_TRACE("Initial State 5 cookies, 2 databases, 2 local storages"); | 427 SCOPED_TRACE("Initial State 5 cookies, 2 databases, 2 local storages"); |
392 // 24 because there's the root, then foo1 -> cookies -> a, | 428 // 24 because there's the root, then foo1 -> cookies -> a, |
393 // foo2 -> cookies -> b, foo3 -> cookies -> c,d,e | 429 // foo2 -> cookies -> b, foo3 -> cookies -> c,d,e |
394 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, | 430 // dbhost1 -> database -> db1, dbhost2 -> database -> db2, |
395 // host1 -> localstorage -> origin1, host2 -> localstorage -> origin2. | 431 // host1 -> localstorage -> http://host1:1/, |
| 432 // host2 -> localstorage -> http://host2:2/. |
396 EXPECT_EQ(24, cookies_model.GetRoot()->GetTotalNodeCount()); | 433 EXPECT_EQ(24, cookies_model.GetRoot()->GetTotalNodeCount()); |
397 EXPECT_STREQ("A,B,C,D,E", GetMonsterCookies(monster).c_str()); | 434 EXPECT_STREQ("A,B,C,D,E", GetMonsterCookies(monster).c_str()); |
398 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model).c_str()); | 435 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model).c_str()); |
399 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); | 436 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); |
400 EXPECT_EQ("origin1,origin2", GetDisplayedLocalStorages(&cookies_model)); | 437 EXPECT_EQ("http://host1:1/,http://host2:2/", |
| 438 GetDisplayedLocalStorages(&cookies_model)); |
401 } | 439 } |
402 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2)->GetChild(0)-> | 440 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2)->GetChild(0)-> |
403 GetChild(1)); | 441 GetChild(1)); |
404 { | 442 { |
405 SCOPED_TRACE("Middle cookie in third origin removed"); | 443 SCOPED_TRACE("Middle cookie in third origin removed"); |
406 EXPECT_STREQ("A,B,C,E", GetMonsterCookies(monster).c_str()); | 444 EXPECT_STREQ("A,B,C,E", GetMonsterCookies(monster).c_str()); |
407 EXPECT_STREQ("A,B,C,E", GetDisplayedCookies(&cookies_model).c_str()); | 445 EXPECT_STREQ("A,B,C,E", GetDisplayedCookies(&cookies_model).c_str()); |
408 EXPECT_EQ(23, cookies_model.GetRoot()->GetTotalNodeCount()); | 446 EXPECT_EQ(23, cookies_model.GetRoot()->GetTotalNodeCount()); |
409 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); | 447 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model)); |
410 EXPECT_EQ("origin1,origin2", GetDisplayedLocalStorages(&cookies_model)); | 448 EXPECT_EQ("http://host1:1/,http://host2:2/", |
| 449 GetDisplayedLocalStorages(&cookies_model)); |
411 } | 450 } |
412 } | 451 } |
413 | 452 |
414 TEST_F(CookiesTreeModelTest, RemoveSecondOrigin) { | 453 TEST_F(CookiesTreeModelTest, RemoveSecondOrigin) { |
415 net::CookieMonster* monster = profile_->GetCookieMonster(); | 454 net::CookieMonster* monster = profile_->GetCookieMonster(); |
416 monster->SetCookie(GURL("http://foo1"), "A=1"); | 455 monster->SetCookie(GURL("http://foo1"), "A=1"); |
417 monster->SetCookie(GURL("http://foo2"), "B=1"); | 456 monster->SetCookie(GURL("http://foo2"), "B=1"); |
418 monster->SetCookie(GURL("http://foo3"), "C=1"); | 457 monster->SetCookie(GURL("http://foo3"), "C=1"); |
419 monster->SetCookie(GURL("http://foo3"), "D=1"); | 458 monster->SetCookie(GURL("http://foo3"), "D=1"); |
420 monster->SetCookie(GURL("http://foo3"), "E=1"); | 459 monster->SetCookie(GURL("http://foo3"), "E=1"); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 GetDisplayedCookies(&cookies_model).c_str()); | 504 GetDisplayedCookies(&cookies_model).c_str()); |
466 } | 505 } |
467 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(1)); // Delete "E" | 506 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(1)); // Delete "E" |
468 { | 507 { |
469 SCOPED_TRACE("Second origin removed"); | 508 SCOPED_TRACE("Second origin removed"); |
470 EXPECT_STREQ("D,A,C,F,B,G,H", GetMonsterCookies(monster).c_str()); | 509 EXPECT_STREQ("D,A,C,F,B,G,H", GetMonsterCookies(monster).c_str()); |
471 EXPECT_STREQ("F,C,B,A,G,D,H", GetDisplayedCookies(&cookies_model).c_str()); | 510 EXPECT_STREQ("F,C,B,A,G,D,H", GetDisplayedCookies(&cookies_model).c_str()); |
472 } | 511 } |
473 } | 512 } |
474 | 513 |
| 514 TEST_F(CookiesTreeModelTest, ContentSettings) { |
| 515 GURL host("http://example.com/"); |
| 516 HostContentSettingsMap::Pattern pattern("[*.]example.com"); |
| 517 net::CookieMonster* monster = profile_->GetCookieMonster(); |
| 518 monster->SetCookie(host, "A=1"); |
| 519 |
| 520 CookiesTreeModel cookies_model(monster, |
| 521 new MockBrowsingDataDatabaseHelper(profile_.get()), |
| 522 new MockBrowsingDataLocalStorageHelper(profile_.get()), |
| 523 new MockBrowsingDataAppCacheHelper(profile_.get())); |
| 524 |
| 525 TestingProfile profile; |
| 526 HostContentSettingsMap* content_settings = |
| 527 profile.GetHostContentSettingsMap(); |
| 528 StubSettingsObserver observer; |
| 529 |
| 530 CookieTreeRootNode* root = |
| 531 static_cast<CookieTreeRootNode*>(cookies_model.GetRoot()); |
| 532 CookieTreeOriginNode* origin = root->GetOrCreateOriginNode(host); |
| 533 |
| 534 EXPECT_EQ(1, origin->GetChildCount()); |
| 535 EXPECT_TRUE(origin->CanCreateContentException()); |
| 536 origin->CreateContentException( |
| 537 content_settings, CONTENT_SETTING_SESSION_ONLY); |
| 538 |
| 539 EXPECT_EQ(2, observer.counter); |
| 540 EXPECT_EQ(pattern, observer.last_pattern); |
| 541 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, |
| 542 content_settings->GetContentSetting(host, CONTENT_SETTINGS_TYPE_COOKIES)); |
| 543 } |
| 544 |
475 } // namespace | 545 } // namespace |
OLD | NEW |