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
3 // found in the LICENSE file.
5 #include "chrome/browser/browsing_data/cookies_tree_model.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/browsing_data/mock_browsing_data_appcache_helper.h"
12 #include "chrome/browser/browsing_data/mock_browsing_data_cookie_helper.h"
13 #include "chrome/browser/browsing_data/mock_browsing_data_database_helper.h"
14 #include "chrome/browser/browsing_data/mock_browsing_data_file_system_helper.h"
15 #include "chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h"
16 #include "chrome/browser/browsing_data/mock_browsing_data_indexed_db_helper.h"
17 #include "chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h"
18 #include "chrome/browser/browsing_data/mock_browsing_data_quota_helper.h"
19 #include "chrome/browser/browsing_data/mock_browsing_data_server_bound_cert_helper.h"
20 #include "chrome/browser/content_settings/cookie_settings.h"
21 #include "chrome/browser/content_settings/host_content_settings_map.h"
22 #include "chrome/browser/content_settings/mock_settings_observer.h"
23 #include "chrome/browser/extensions/extension_special_storage_policy.h"
24 #include "chrome/test/base/testing_profile.h"
25 #include "content/public/browser/notification_details.h"
26 #include "content/public/browser/notification_types.h"
27 #include "content/public/test/test_browser_thread_bundle.h"
28 #include "net/url_request/url_request_context.h"
29 #include "net/url_request/url_request_context_getter.h"
30 #include "testing/gtest/include/gtest/gtest.h"
32 #include "base/strings/utf_string_conversions.h"
35 using content::BrowserThread
;
39 class CookiesTreeModelTest
: public testing::Test
{
41 virtual ~CookiesTreeModelTest() {
42 // Avoid memory leaks.
43 special_storage_policy_
= NULL
;
45 base::MessageLoop::current()->RunUntilIdle();
48 virtual void SetUp() OVERRIDE
{
49 profile_
.reset(new TestingProfile());
50 mock_browsing_data_cookie_helper_
=
51 new MockBrowsingDataCookieHelper(profile_
->GetRequestContext());
52 mock_browsing_data_database_helper_
=
53 new MockBrowsingDataDatabaseHelper(profile_
.get());
54 mock_browsing_data_local_storage_helper_
=
55 new MockBrowsingDataLocalStorageHelper(profile_
.get());
56 mock_browsing_data_session_storage_helper_
=
57 new MockBrowsingDataLocalStorageHelper(profile_
.get());
58 mock_browsing_data_appcache_helper_
=
59 new MockBrowsingDataAppCacheHelper(profile_
.get());
60 mock_browsing_data_indexed_db_helper_
=
61 new MockBrowsingDataIndexedDBHelper(profile_
.get());
62 mock_browsing_data_file_system_helper_
=
63 new MockBrowsingDataFileSystemHelper(profile_
.get());
64 mock_browsing_data_quota_helper_
=
65 new MockBrowsingDataQuotaHelper(profile_
.get());
66 mock_browsing_data_server_bound_cert_helper_
=
67 new MockBrowsingDataServerBoundCertHelper();
68 mock_browsing_data_flash_lso_helper_
=
69 new MockBrowsingDataFlashLSOHelper(profile_
.get());
71 scoped_refptr
<CookieSettings
> cookie_settings
=
72 new CookieSettings(profile_
->GetHostContentSettingsMap(),
73 profile_
->GetPrefs());
74 special_storage_policy_
=
75 new ExtensionSpecialStoragePolicy(cookie_settings
.get());
78 virtual void TearDown() OVERRIDE
{
79 mock_browsing_data_server_bound_cert_helper_
= NULL
;
80 mock_browsing_data_quota_helper_
= NULL
;
81 mock_browsing_data_file_system_helper_
= NULL
;
82 mock_browsing_data_indexed_db_helper_
= NULL
;
83 mock_browsing_data_appcache_helper_
= NULL
;
84 mock_browsing_data_session_storage_helper_
= NULL
;
85 mock_browsing_data_local_storage_helper_
= NULL
;
86 mock_browsing_data_database_helper_
= NULL
;
87 mock_browsing_data_flash_lso_helper_
= NULL
;
88 base::MessageLoop::current()->RunUntilIdle();
91 scoped_ptr
<CookiesTreeModel
> CreateCookiesTreeModelWithInitialSample() {
92 LocalDataContainer
* container
= new LocalDataContainer(
93 mock_browsing_data_cookie_helper_
.get(),
94 mock_browsing_data_database_helper_
.get(),
95 mock_browsing_data_local_storage_helper_
.get(),
96 mock_browsing_data_session_storage_helper_
.get(),
97 mock_browsing_data_appcache_helper_
.get(),
98 mock_browsing_data_indexed_db_helper_
.get(),
99 mock_browsing_data_file_system_helper_
.get(),
100 mock_browsing_data_quota_helper_
.get(),
101 mock_browsing_data_server_bound_cert_helper_
.get(),
102 mock_browsing_data_flash_lso_helper_
.get());
104 CookiesTreeModel
* cookies_model
=
105 new CookiesTreeModel(container
, special_storage_policy_
.get(), false);
106 mock_browsing_data_cookie_helper_
->
107 AddCookieSamples(GURL("http://foo1"), "A=1");
108 mock_browsing_data_cookie_helper_
->
109 AddCookieSamples(GURL("http://foo2"), "B=1");
110 mock_browsing_data_cookie_helper_
->
111 AddCookieSamples(GURL("http://foo3"), "C=1");
112 mock_browsing_data_cookie_helper_
->Notify();
113 mock_browsing_data_database_helper_
->AddDatabaseSamples();
114 mock_browsing_data_database_helper_
->Notify();
115 mock_browsing_data_local_storage_helper_
->AddLocalStorageSamples();
116 mock_browsing_data_local_storage_helper_
->Notify();
117 mock_browsing_data_session_storage_helper_
->AddLocalStorageSamples();
118 mock_browsing_data_session_storage_helper_
->Notify();
119 mock_browsing_data_indexed_db_helper_
->AddIndexedDBSamples();
120 mock_browsing_data_indexed_db_helper_
->Notify();
121 mock_browsing_data_file_system_helper_
->AddFileSystemSamples();
122 mock_browsing_data_file_system_helper_
->Notify();
123 mock_browsing_data_quota_helper_
->AddQuotaSamples();
124 mock_browsing_data_quota_helper_
->Notify();
125 mock_browsing_data_server_bound_cert_helper_
->AddServerBoundCertSample(
127 mock_browsing_data_server_bound_cert_helper_
->AddServerBoundCertSample(
129 mock_browsing_data_server_bound_cert_helper_
->Notify();
130 mock_browsing_data_flash_lso_helper_
->AddFlashLSODomain("xyz.com");
131 mock_browsing_data_flash_lso_helper_
->Notify();
134 SCOPED_TRACE("Initial State 3 cookies, 2 databases, 2 local storages, "
135 "2 session storages, 2 indexed DBs, 3 filesystems, "
136 "2 quotas, 2 server bound certs, 1 Flash LSO");
137 // 51 because there's the root, then
138 // foo1 -> cookies -> a,
139 // foo2 -> cookies -> b,
140 // foo3 -> cookies -> c,
141 // dbhost1 -> database -> db1,
142 // dbhost2 -> database -> db2,
143 // host1 -> localstorage -> http://host1:1/,
144 // -> sessionstorage -> http://host1:1/,
145 // host2 -> localstorage -> http://host2:2/.
146 // -> sessionstorage -> http://host2:2/,
147 // idbhost1 -> indexeddb -> http://idbhost1:1/,
148 // idbhost2 -> indexeddb -> http://idbhost2:2/,
149 // fshost1 -> filesystem -> http://fshost1:1/,
150 // fshost2 -> filesystem -> http://fshost2:1/,
151 // fshost3 -> filesystem -> http://fshost3:1/,
152 // quotahost1 -> quotahost1,
153 // quotahost2 -> quotahost2,
154 // sbc1 -> sbcerts -> sbc1,
155 // sbc2 -> sbcerts -> sbc2.
156 // xyz.com -> flash_lsos
157 EXPECT_EQ(53, cookies_model
->GetRoot()->GetTotalNodeCount());
158 EXPECT_EQ("A,B,C", GetDisplayedCookies(cookies_model
));
159 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
));
160 EXPECT_EQ("http://host1:1/,http://host2:2/",
161 GetDisplayedLocalStorages(cookies_model
));
162 EXPECT_EQ("http://host1:1/,http://host2:2/",
163 GetDisplayedSessionStorages(cookies_model
));
164 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
165 GetDisplayedIndexedDBs(cookies_model
));
166 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
167 GetDisplayedFileSystems(cookies_model
));
168 EXPECT_EQ("quotahost1,quotahost2",
169 GetDisplayedQuotas(cookies_model
));
170 EXPECT_EQ("sbc1,sbc2",
171 GetDisplayedServerBoundCerts(cookies_model
));
173 GetDisplayedFlashLSOs(cookies_model
));
175 return make_scoped_ptr(cookies_model
);
178 std::string
GetNodesOfChildren(
179 const CookieTreeNode
* node
,
180 CookieTreeNode::DetailedInfo::NodeType node_type
) {
181 if (!node
->empty()) {
183 for (int i
= 0; i
< node
->child_count(); ++i
) {
184 retval
+= GetNodesOfChildren(node
->GetChild(i
), node_type
);
189 if (node
->GetDetailedInfo().node_type
!= node_type
)
190 return std::string();
193 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE
:
194 return node
->GetDetailedInfo().
195 session_storage_info
->origin_url
.spec() + ",";
196 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE
:
197 return node
->GetDetailedInfo().
198 local_storage_info
->origin_url
.spec() + ",";
199 case CookieTreeNode::DetailedInfo::TYPE_DATABASE
:
200 return node
->GetDetailedInfo().database_info
->database_name
+ ",";
201 case CookieTreeNode::DetailedInfo::TYPE_COOKIE
:
202 return node
->GetDetailedInfo().cookie
->Name() + ",";
203 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE
:
204 return node
->GetDetailedInfo().appcache_info
->manifest_url
.spec() +
206 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB
:
207 return node
->GetDetailedInfo().indexed_db_info
->origin_
.spec() +
209 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM
:
210 return node
->GetDetailedInfo().file_system_info
->origin
.spec() +
212 case CookieTreeNode::DetailedInfo::TYPE_QUOTA
:
213 return node
->GetDetailedInfo().quota_info
->host
+ ",";
214 case CookieTreeNode::DetailedInfo::TYPE_SERVER_BOUND_CERT
:
215 return node
->GetDetailedInfo(
216 ).server_bound_cert
->server_identifier() + ",";
217 case CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO
:
218 return node
->GetDetailedInfo().flash_lso_domain
+ ",";
220 return std::string();
224 std::string
GetCookiesOfChildren(const CookieTreeNode
* node
) {
225 return GetNodesOfChildren(node
, CookieTreeNode::DetailedInfo::TYPE_COOKIE
);
228 std::string
GetDatabasesOfChildren(const CookieTreeNode
* node
) {
229 return GetNodesOfChildren(node
,
230 CookieTreeNode::DetailedInfo::TYPE_DATABASE
);
233 std::string
GetLocalStoragesOfChildren(const CookieTreeNode
* node
) {
234 return GetNodesOfChildren(node
,
235 CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE
);
238 std::string
GetSessionStoragesOfChildren(const CookieTreeNode
* node
) {
239 return GetNodesOfChildren(
240 node
, CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE
);
243 std::string
GetIndexedDBsOfChildren(const CookieTreeNode
* node
) {
244 return GetNodesOfChildren(
245 node
, CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB
);
248 std::string
GetFileSystemsOfChildren(const CookieTreeNode
* node
) {
249 return GetNodesOfChildren(
250 node
, CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM
);
253 std::string
GetFileQuotaOfChildren(const CookieTreeNode
* node
) {
254 return GetNodesOfChildren(
255 node
, CookieTreeNode::DetailedInfo::TYPE_QUOTA
);
258 std::string
GetFlashLSOsOfChildren(const CookieTreeNode
* node
) {
259 return GetNodesOfChildren(
260 node
, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO
);
263 // Get the nodes names displayed in the view (if we had one) in the order
264 // they are displayed, as a comma seperated string.
265 // Ex: EXPECT_STREQ("X,Y", GetDisplayedNodes(cookies_view, type).c_str());
266 std::string
GetDisplayedNodes(CookiesTreeModel
* cookies_model
,
267 CookieTreeNode::DetailedInfo::NodeType type
) {
268 CookieTreeRootNode
* root
= static_cast<CookieTreeRootNode
*>(
269 cookies_model
->GetRoot());
270 std::string retval
= GetNodesOfChildren(root
, type
);
271 if (retval
.length() && retval
[retval
.length() - 1] == ',')
272 retval
.erase(retval
.length() - 1);
276 std::string
GetDisplayedCookies(CookiesTreeModel
* cookies_model
) {
277 return GetDisplayedNodes(cookies_model
,
278 CookieTreeNode::DetailedInfo::TYPE_COOKIE
);
281 std::string
GetDisplayedDatabases(CookiesTreeModel
* cookies_model
) {
282 return GetDisplayedNodes(cookies_model
,
283 CookieTreeNode::DetailedInfo::TYPE_DATABASE
);
286 std::string
GetDisplayedLocalStorages(CookiesTreeModel
* cookies_model
) {
287 return GetDisplayedNodes(cookies_model
,
288 CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE
);
291 std::string
GetDisplayedSessionStorages(CookiesTreeModel
* cookies_model
) {
292 return GetDisplayedNodes(
293 cookies_model
, CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE
);
296 std::string
GetDisplayedAppCaches(CookiesTreeModel
* cookies_model
) {
297 return GetDisplayedNodes(cookies_model
,
298 CookieTreeNode::DetailedInfo::TYPE_APPCACHE
);
301 std::string
GetDisplayedIndexedDBs(CookiesTreeModel
* cookies_model
) {
302 return GetDisplayedNodes(cookies_model
,
303 CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB
);
306 std::string
GetDisplayedFileSystems(CookiesTreeModel
* cookies_model
) {
307 return GetDisplayedNodes(cookies_model
,
308 CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM
);
311 std::string
GetDisplayedQuotas(CookiesTreeModel
* cookies_model
) {
312 return GetDisplayedNodes(cookies_model
,
313 CookieTreeNode::DetailedInfo::TYPE_QUOTA
);
316 std::string
GetDisplayedServerBoundCerts(CookiesTreeModel
* cookies_model
) {
317 return GetDisplayedNodes(
318 cookies_model
, CookieTreeNode::DetailedInfo::TYPE_SERVER_BOUND_CERT
);
321 std::string
GetDisplayedFlashLSOs(CookiesTreeModel
* cookies_model
) {
322 return GetDisplayedNodes(
323 cookies_model
, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO
);
326 // Do not call on the root.
327 void DeleteStoredObjects(CookieTreeNode
* node
) {
328 node
->DeleteStoredObjects();
329 CookieTreeNode
* parent_node
= node
->parent();
331 delete parent_node
->GetModel()->Remove(parent_node
, node
);
335 content::TestBrowserThreadBundle thread_bundle_
;
336 scoped_ptr
<TestingProfile
> profile_
;
337 scoped_refptr
<MockBrowsingDataCookieHelper
>
338 mock_browsing_data_cookie_helper_
;
339 scoped_refptr
<MockBrowsingDataDatabaseHelper
>
340 mock_browsing_data_database_helper_
;
341 scoped_refptr
<MockBrowsingDataLocalStorageHelper
>
342 mock_browsing_data_local_storage_helper_
;
343 scoped_refptr
<MockBrowsingDataLocalStorageHelper
>
344 mock_browsing_data_session_storage_helper_
;
345 scoped_refptr
<MockBrowsingDataAppCacheHelper
>
346 mock_browsing_data_appcache_helper_
;
347 scoped_refptr
<MockBrowsingDataIndexedDBHelper
>
348 mock_browsing_data_indexed_db_helper_
;
349 scoped_refptr
<MockBrowsingDataFileSystemHelper
>
350 mock_browsing_data_file_system_helper_
;
351 scoped_refptr
<MockBrowsingDataQuotaHelper
>
352 mock_browsing_data_quota_helper_
;
353 scoped_refptr
<MockBrowsingDataServerBoundCertHelper
>
354 mock_browsing_data_server_bound_cert_helper_
;
355 scoped_refptr
<MockBrowsingDataFlashLSOHelper
>
356 mock_browsing_data_flash_lso_helper_
;
358 scoped_refptr
<ExtensionSpecialStoragePolicy
> special_storage_policy_
;
361 TEST_F(CookiesTreeModelTest
, RemoveAll
) {
362 scoped_ptr
<CookiesTreeModel
> cookies_model(
363 CreateCookiesTreeModelWithInitialSample());
365 // Reset the selection of the first row.
367 SCOPED_TRACE("Before removing");
369 GetDisplayedCookies(cookies_model
.get()));
371 GetDisplayedDatabases(cookies_model
.get()));
372 EXPECT_EQ("http://host1:1/,http://host2:2/",
373 GetDisplayedLocalStorages(cookies_model
.get()));
374 EXPECT_EQ("http://host1:1/,http://host2:2/",
375 GetDisplayedSessionStorages(cookies_model
.get()));
376 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
377 GetDisplayedIndexedDBs(cookies_model
.get()));
378 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
379 GetDisplayedFileSystems(cookies_model
.get()));
380 EXPECT_EQ("quotahost1,quotahost2",
381 GetDisplayedQuotas(cookies_model
.get()));
382 EXPECT_EQ("sbc1,sbc2",
383 GetDisplayedServerBoundCerts(cookies_model
.get()));
385 GetDisplayedFlashLSOs(cookies_model
.get()));
388 mock_browsing_data_cookie_helper_
->Reset();
389 mock_browsing_data_database_helper_
->Reset();
390 mock_browsing_data_local_storage_helper_
->Reset();
391 mock_browsing_data_session_storage_helper_
->Reset();
392 mock_browsing_data_indexed_db_helper_
->Reset();
393 mock_browsing_data_file_system_helper_
->Reset();
395 cookies_model
->DeleteAllStoredObjects();
397 // Make sure the nodes are also deleted from the model's cache.
398 // http://crbug.com/43249
399 cookies_model
->UpdateSearchResults(base::string16());
402 // 2 nodes - root and app
403 SCOPED_TRACE("After removing");
404 EXPECT_EQ(1, cookies_model
->GetRoot()->GetTotalNodeCount());
405 EXPECT_EQ(0, cookies_model
->GetRoot()->child_count());
406 EXPECT_EQ(std::string(), GetDisplayedCookies(cookies_model
.get()));
407 EXPECT_TRUE(mock_browsing_data_cookie_helper_
->AllDeleted());
408 EXPECT_TRUE(mock_browsing_data_database_helper_
->AllDeleted());
409 EXPECT_TRUE(mock_browsing_data_local_storage_helper_
->AllDeleted());
410 EXPECT_FALSE(mock_browsing_data_session_storage_helper_
->AllDeleted());
411 EXPECT_TRUE(mock_browsing_data_indexed_db_helper_
->AllDeleted());
412 EXPECT_TRUE(mock_browsing_data_file_system_helper_
->AllDeleted());
413 EXPECT_TRUE(mock_browsing_data_server_bound_cert_helper_
->AllDeleted());
414 EXPECT_TRUE(mock_browsing_data_flash_lso_helper_
->AllDeleted());
418 TEST_F(CookiesTreeModelTest
, Remove
) {
419 scoped_ptr
<CookiesTreeModel
> cookies_model(
420 CreateCookiesTreeModelWithInitialSample());
422 // Children start out arranged as follows:
442 // Here, we'll remove them one by one, starting from the end, and
443 // check that the state makes sense.
445 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(16));
447 SCOPED_TRACE("`xyz.com` removed.");
448 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
449 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
450 EXPECT_EQ("http://host1:1/,http://host2:2/",
451 GetDisplayedLocalStorages(cookies_model
.get()));
452 EXPECT_EQ("http://host1:1/,http://host2:2/",
453 GetDisplayedSessionStorages(cookies_model
.get()));
454 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
455 GetDisplayedFileSystems(cookies_model
.get()));
456 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
457 GetDisplayedIndexedDBs(cookies_model
.get()));
458 EXPECT_EQ("quotahost1,quotahost2",
459 GetDisplayedQuotas(cookies_model
.get()));
460 EXPECT_EQ("sbc1,sbc2",
461 GetDisplayedServerBoundCerts(cookies_model
.get()));
462 EXPECT_EQ(51, cookies_model
->GetRoot()->GetTotalNodeCount());
464 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(15));
466 SCOPED_TRACE("`sbc2` removed.");
467 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
468 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
469 EXPECT_EQ("http://host1:1/,http://host2:2/",
470 GetDisplayedLocalStorages(cookies_model
.get()));
471 EXPECT_EQ("http://host1:1/,http://host2:2/",
472 GetDisplayedSessionStorages(cookies_model
.get()));
473 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
474 GetDisplayedFileSystems(cookies_model
.get()));
475 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
476 GetDisplayedIndexedDBs(cookies_model
.get()));
477 EXPECT_EQ("quotahost1,quotahost2",
478 GetDisplayedQuotas(cookies_model
.get()));
480 GetDisplayedServerBoundCerts(cookies_model
.get()));
481 EXPECT_EQ(48, cookies_model
->GetRoot()->GetTotalNodeCount());
483 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(14));
485 SCOPED_TRACE("`sbc1` removed.");
486 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
487 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
488 EXPECT_EQ("http://host1:1/,http://host2:2/",
489 GetDisplayedLocalStorages(cookies_model
.get()));
490 EXPECT_EQ("http://host1:1/,http://host2:2/",
491 GetDisplayedSessionStorages(cookies_model
.get()));
492 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
493 GetDisplayedFileSystems(cookies_model
.get()));
494 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
495 GetDisplayedIndexedDBs(cookies_model
.get()));
496 EXPECT_EQ("quotahost1,quotahost2",
497 GetDisplayedQuotas(cookies_model
.get()));
498 EXPECT_EQ(45, cookies_model
->GetRoot()->GetTotalNodeCount());
500 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(13));
502 SCOPED_TRACE("`quotahost2` removed.");
503 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
504 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
505 EXPECT_EQ("http://host1:1/,http://host2:2/",
506 GetDisplayedLocalStorages(cookies_model
.get()));
507 EXPECT_EQ("http://host1:1/,http://host2:2/",
508 GetDisplayedSessionStorages(cookies_model
.get()));
509 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
510 GetDisplayedFileSystems(cookies_model
.get()));
511 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
512 GetDisplayedIndexedDBs(cookies_model
.get()));
513 EXPECT_EQ("quotahost1",
514 GetDisplayedQuotas(cookies_model
.get()));
515 EXPECT_EQ(43, cookies_model
->GetRoot()->GetTotalNodeCount());
517 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(12));
519 SCOPED_TRACE("`quotahost1` removed.");
520 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
521 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
522 EXPECT_EQ("http://host1:1/,http://host2:2/",
523 GetDisplayedLocalStorages(cookies_model
.get()));
524 EXPECT_EQ("http://host1:1/,http://host2:2/",
525 GetDisplayedSessionStorages(cookies_model
.get()));
526 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
527 GetDisplayedFileSystems(cookies_model
.get()));
528 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
529 GetDisplayedIndexedDBs(cookies_model
.get()));
530 EXPECT_EQ(41, cookies_model
->GetRoot()->GetTotalNodeCount());
532 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(11));
534 SCOPED_TRACE("`idbhost2` removed.");
535 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
536 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
537 EXPECT_EQ("http://host1:1/,http://host2:2/",
538 GetDisplayedLocalStorages(cookies_model
.get()));
539 EXPECT_EQ("http://host1:1/,http://host2:2/",
540 GetDisplayedSessionStorages(cookies_model
.get()));
541 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
542 GetDisplayedFileSystems(cookies_model
.get()));
543 EXPECT_EQ("http://idbhost1:1/",
544 GetDisplayedIndexedDBs(cookies_model
.get()));
545 EXPECT_EQ(38, cookies_model
->GetRoot()->GetTotalNodeCount());
547 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(10));
549 SCOPED_TRACE("`idbhost1` removed.");
550 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
551 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
552 EXPECT_EQ("http://host1:1/,http://host2:2/",
553 GetDisplayedLocalStorages(cookies_model
.get()));
554 EXPECT_EQ("http://host1:1/,http://host2:2/",
555 GetDisplayedSessionStorages(cookies_model
.get()));
556 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
557 GetDisplayedFileSystems(cookies_model
.get()));
558 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
559 EXPECT_EQ(35, cookies_model
->GetRoot()->GetTotalNodeCount());
561 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(9));
563 SCOPED_TRACE("`host2` removed.");
564 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
565 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
566 EXPECT_EQ("http://host1:1/",
567 GetDisplayedLocalStorages(cookies_model
.get()));
568 EXPECT_EQ("http://host1:1/",
569 GetDisplayedSessionStorages(cookies_model
.get()));
570 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
571 GetDisplayedFileSystems(cookies_model
.get()));
572 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
573 EXPECT_EQ(30, cookies_model
->GetRoot()->GetTotalNodeCount());
575 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(8));
577 SCOPED_TRACE("`host1` removed.");
578 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
579 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
580 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
581 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
582 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
583 GetDisplayedFileSystems(cookies_model
.get()));
584 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
585 EXPECT_EQ(25, cookies_model
->GetRoot()->GetTotalNodeCount());
587 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(7));
589 SCOPED_TRACE("`gdbhost2` removed.");
590 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
591 EXPECT_EQ("db1", GetDisplayedDatabases(cookies_model
.get()));
592 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
593 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
594 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
595 GetDisplayedFileSystems(cookies_model
.get()));
596 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
597 EXPECT_EQ(22, cookies_model
->GetRoot()->GetTotalNodeCount());
599 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(6));
601 SCOPED_TRACE("`gdbhost1` removed.");
602 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
603 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
604 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
605 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
606 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
607 GetDisplayedFileSystems(cookies_model
.get()));
608 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
609 EXPECT_EQ(19, cookies_model
->GetRoot()->GetTotalNodeCount());
611 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(5));
613 SCOPED_TRACE("`fshost3` removed.");
614 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
615 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
616 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
617 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
618 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/",
619 GetDisplayedFileSystems(cookies_model
.get()));
620 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
621 EXPECT_EQ(16, cookies_model
->GetRoot()->GetTotalNodeCount());
623 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(4));
625 SCOPED_TRACE("`fshost2` removed.");
626 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
627 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
628 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
629 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
630 EXPECT_EQ("http://fshost1:1/",
631 GetDisplayedFileSystems(cookies_model
.get()));
632 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
633 EXPECT_EQ(13, cookies_model
->GetRoot()->GetTotalNodeCount());
635 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(3));
637 SCOPED_TRACE("`fshost1` removed.");
638 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
639 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
640 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
641 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
642 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model
.get()));
643 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
644 EXPECT_EQ(10, cookies_model
->GetRoot()->GetTotalNodeCount());
646 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(2));
648 SCOPED_TRACE("`foo3` removed.");
649 EXPECT_STREQ("A,B", GetDisplayedCookies(cookies_model
.get()).c_str());
650 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
651 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
652 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
653 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model
.get()));
654 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
655 EXPECT_EQ(7, cookies_model
->GetRoot()->GetTotalNodeCount());
657 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(1));
659 SCOPED_TRACE("`foo2` removed.");
660 EXPECT_STREQ("A", GetDisplayedCookies(cookies_model
.get()).c_str());
661 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
662 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
663 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
664 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model
.get()));
665 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
666 EXPECT_EQ(4, cookies_model
->GetRoot()->GetTotalNodeCount());
668 DeleteStoredObjects(cookies_model
->GetRoot()->GetChild(0));
670 SCOPED_TRACE("`foo1` removed.");
671 EXPECT_STREQ("", GetDisplayedCookies(cookies_model
.get()).c_str());
672 EXPECT_EQ("", GetDisplayedDatabases(cookies_model
.get()));
673 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model
.get()));
674 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model
.get()));
675 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model
.get()));
676 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model
.get()));
677 EXPECT_EQ(1, cookies_model
->GetRoot()->GetTotalNodeCount());
681 TEST_F(CookiesTreeModelTest
, RemoveCookiesNode
) {
682 scoped_ptr
<CookiesTreeModel
> cookies_model(
683 CreateCookiesTreeModelWithInitialSample());
686 cookies_model
->GetRoot()->GetChild(0)->GetChild(0));
688 SCOPED_TRACE("First origin removed");
689 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
690 // 51 because in this case, the origin remains, although the COOKIES
691 // node beneath it has been deleted.
692 EXPECT_EQ(51, cookies_model
->GetRoot()->GetTotalNodeCount());
693 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
694 EXPECT_EQ("http://host1:1/,http://host2:2/",
695 GetDisplayedLocalStorages(cookies_model
.get()));
696 EXPECT_EQ("http://host1:1/,http://host2:2/",
697 GetDisplayedSessionStorages(cookies_model
.get()));
698 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
699 GetDisplayedIndexedDBs(cookies_model
.get()));
700 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
701 GetDisplayedFileSystems(cookies_model
.get()));
702 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
703 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
707 cookies_model
->GetRoot()->GetChild(6)->GetChild(0));
709 SCOPED_TRACE("First database removed");
710 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
711 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model
.get()));
712 EXPECT_EQ("http://host1:1/,http://host2:2/",
713 GetDisplayedLocalStorages(cookies_model
.get()));
714 EXPECT_EQ("http://host1:1/,http://host2:2/",
715 GetDisplayedSessionStorages(cookies_model
.get()));
716 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
717 GetDisplayedIndexedDBs(cookies_model
.get()));
718 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
719 GetDisplayedFileSystems(cookies_model
.get()));
720 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
721 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
722 EXPECT_EQ(49, cookies_model
->GetRoot()->GetTotalNodeCount());
726 cookies_model
->GetRoot()->GetChild(8)->GetChild(0));
728 SCOPED_TRACE("First origin removed");
729 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model
.get()).c_str());
730 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model
.get()));
731 EXPECT_EQ("http://host2:2/",
732 GetDisplayedLocalStorages(cookies_model
.get()));
733 EXPECT_EQ("http://host1:1/,http://host2:2/",
734 GetDisplayedSessionStorages(cookies_model
.get()));
735 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
736 GetDisplayedIndexedDBs(cookies_model
.get()));
737 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
738 GetDisplayedFileSystems(cookies_model
.get()));
739 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
740 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
741 EXPECT_EQ(47, cookies_model
->GetRoot()->GetTotalNodeCount());
745 TEST_F(CookiesTreeModelTest
, RemoveCookieNode
) {
746 scoped_ptr
<CookiesTreeModel
> cookies_model(
747 CreateCookiesTreeModelWithInitialSample());
750 cookies_model
->GetRoot()->GetChild(1)->GetChild(0));
752 SCOPED_TRACE("Second origin COOKIES node removed");
753 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model
.get()).c_str());
754 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model
.get()));
755 EXPECT_EQ("http://host1:1/,http://host2:2/",
756 GetDisplayedLocalStorages(cookies_model
.get()));
757 EXPECT_EQ("http://host1:1/,http://host2:2/",
758 GetDisplayedSessionStorages(cookies_model
.get()));
759 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
760 GetDisplayedIndexedDBs(cookies_model
.get()));
761 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
762 GetDisplayedFileSystems(cookies_model
.get()));
763 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
764 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
765 // 51 because in this case, the origin remains, although the COOKIES
766 // node beneath it has been deleted.
767 EXPECT_EQ(51, cookies_model
->GetRoot()->GetTotalNodeCount());
771 cookies_model
->GetRoot()->GetChild(6)->GetChild(0));
773 SCOPED_TRACE("First database removed");
774 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model
.get()).c_str());
775 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model
.get()));
776 EXPECT_EQ("http://host1:1/,http://host2:2/",
777 GetDisplayedLocalStorages(cookies_model
.get()));
778 EXPECT_EQ("http://host1:1/,http://host2:2/",
779 GetDisplayedSessionStorages(cookies_model
.get()));
780 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
781 GetDisplayedIndexedDBs(cookies_model
.get()));
782 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
783 GetDisplayedFileSystems(cookies_model
.get()));
784 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
785 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
786 EXPECT_EQ(49, cookies_model
->GetRoot()->GetTotalNodeCount());
790 cookies_model
->GetRoot()->GetChild(8)->GetChild(0));
792 SCOPED_TRACE("First origin removed");
793 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model
.get()).c_str());
794 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model
.get()));
795 EXPECT_EQ("http://host2:2/",
796 GetDisplayedLocalStorages(cookies_model
.get()));
797 EXPECT_EQ("http://host1:1/,http://host2:2/",
798 GetDisplayedSessionStorages(cookies_model
.get()));
799 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
800 GetDisplayedIndexedDBs(cookies_model
.get()));
801 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
802 GetDisplayedFileSystems(cookies_model
.get()));
803 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model
.get()));
804 EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model
.get()));
805 EXPECT_EQ(47, cookies_model
->GetRoot()->GetTotalNodeCount());
809 TEST_F(CookiesTreeModelTest
, RemoveSingleCookieNode
) {
810 LocalDataContainer
* container
=
811 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
812 mock_browsing_data_database_helper_
.get(),
813 mock_browsing_data_local_storage_helper_
.get(),
814 mock_browsing_data_session_storage_helper_
.get(),
815 mock_browsing_data_appcache_helper_
.get(),
816 mock_browsing_data_indexed_db_helper_
.get(),
817 mock_browsing_data_file_system_helper_
.get(),
818 mock_browsing_data_quota_helper_
.get(),
819 mock_browsing_data_server_bound_cert_helper_
.get(),
820 mock_browsing_data_flash_lso_helper_
.get());
821 CookiesTreeModel
cookies_model(
822 container
, special_storage_policy_
.get(), false);
824 mock_browsing_data_cookie_helper_
->
825 AddCookieSamples(GURL("http://foo1"), "A=1");
826 mock_browsing_data_cookie_helper_
->
827 AddCookieSamples(GURL("http://foo2"), "B=1");
828 mock_browsing_data_cookie_helper_
->
829 AddCookieSamples(GURL("http://foo3"), "C=1");
830 mock_browsing_data_cookie_helper_
->
831 AddCookieSamples(GURL("http://foo3"), "D=1");
832 mock_browsing_data_cookie_helper_
->Notify();
833 mock_browsing_data_database_helper_
->AddDatabaseSamples();
834 mock_browsing_data_database_helper_
->Notify();
835 mock_browsing_data_local_storage_helper_
->AddLocalStorageSamples();
836 mock_browsing_data_local_storage_helper_
->Notify();
837 mock_browsing_data_session_storage_helper_
->AddLocalStorageSamples();
838 mock_browsing_data_session_storage_helper_
->Notify();
839 mock_browsing_data_indexed_db_helper_
->AddIndexedDBSamples();
840 mock_browsing_data_indexed_db_helper_
->Notify();
841 mock_browsing_data_file_system_helper_
->AddFileSystemSamples();
842 mock_browsing_data_file_system_helper_
->Notify();
843 mock_browsing_data_quota_helper_
->AddQuotaSamples();
844 mock_browsing_data_quota_helper_
->Notify();
847 SCOPED_TRACE("Initial State 4 cookies, 2 databases, 2 local storages, "
848 "2 session storages, 2 indexed DBs, 3 file systems, "
850 // 46 because there's the root, then
851 // foo1 -> cookies -> a,
852 // foo2 -> cookies -> b,
853 // foo3 -> cookies -> c,d
854 // dbhost1 -> database -> db1,
855 // dbhost2 -> database -> db2,
856 // host1 -> localstorage -> http://host1:1/,
857 // -> sessionstorage -> http://host1:1/,
858 // host2 -> localstorage -> http://host2:2/,
859 // -> sessionstorage -> http://host2:2/,
860 // idbhost1 -> sessionstorage -> http://idbhost1:1/,
861 // idbhost2 -> sessionstorage -> http://idbhost2:2/,
862 // fshost1 -> filesystem -> http://fshost1:1/,
863 // fshost2 -> filesystem -> http://fshost2:1/,
864 // fshost3 -> filesystem -> http://fshost3:1/,
865 // quotahost1 -> quotahost1,
866 // quotahost2 -> quotahost2.
867 EXPECT_EQ(46, cookies_model
.GetRoot()->GetTotalNodeCount());
868 EXPECT_STREQ("A,B,C,D", GetDisplayedCookies(&cookies_model
).c_str());
869 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model
));
870 EXPECT_EQ("http://host1:1/,http://host2:2/",
871 GetDisplayedLocalStorages(&cookies_model
));
872 EXPECT_EQ("http://host1:1/,http://host2:2/",
873 GetDisplayedSessionStorages(&cookies_model
));
874 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
875 GetDisplayedIndexedDBs(&cookies_model
));
876 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
877 GetDisplayedFileSystems(&cookies_model
));
878 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model
));
880 DeleteStoredObjects(cookies_model
.GetRoot()->GetChild(2));
882 SCOPED_TRACE("Third origin removed");
883 EXPECT_STREQ("A,B", GetDisplayedCookies(&cookies_model
).c_str());
884 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model
));
885 EXPECT_EQ("http://host1:1/,http://host2:2/",
886 GetDisplayedLocalStorages(&cookies_model
));
887 EXPECT_EQ("http://host1:1/,http://host2:2/",
888 GetDisplayedSessionStorages(&cookies_model
));
889 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
890 GetDisplayedIndexedDBs(&cookies_model
));
891 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
892 GetDisplayedFileSystems(&cookies_model
));
893 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model
));
894 EXPECT_EQ(42, cookies_model
.GetRoot()->GetTotalNodeCount());
898 TEST_F(CookiesTreeModelTest
, RemoveSingleCookieNodeOf3
) {
899 LocalDataContainer
* container
=
900 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
901 mock_browsing_data_database_helper_
.get(),
902 mock_browsing_data_local_storage_helper_
.get(),
903 mock_browsing_data_session_storage_helper_
.get(),
904 mock_browsing_data_appcache_helper_
.get(),
905 mock_browsing_data_indexed_db_helper_
.get(),
906 mock_browsing_data_file_system_helper_
.get(),
907 mock_browsing_data_quota_helper_
.get(),
908 mock_browsing_data_server_bound_cert_helper_
.get(),
909 mock_browsing_data_flash_lso_helper_
.get());
910 CookiesTreeModel
cookies_model(
911 container
, special_storage_policy_
.get(), false);
913 mock_browsing_data_cookie_helper_
->
914 AddCookieSamples(GURL("http://foo1"), "A=1");
915 mock_browsing_data_cookie_helper_
->
916 AddCookieSamples(GURL("http://foo2"), "B=1");
917 mock_browsing_data_cookie_helper_
->
918 AddCookieSamples(GURL("http://foo3"), "C=1");
919 mock_browsing_data_cookie_helper_
->
920 AddCookieSamples(GURL("http://foo3"), "D=1");
921 mock_browsing_data_cookie_helper_
->
922 AddCookieSamples(GURL("http://foo3"), "E=1");
923 mock_browsing_data_cookie_helper_
->Notify();
924 mock_browsing_data_database_helper_
->AddDatabaseSamples();
925 mock_browsing_data_database_helper_
->Notify();
926 mock_browsing_data_local_storage_helper_
->AddLocalStorageSamples();
927 mock_browsing_data_local_storage_helper_
->Notify();
928 mock_browsing_data_session_storage_helper_
->AddLocalStorageSamples();
929 mock_browsing_data_session_storage_helper_
->Notify();
930 mock_browsing_data_indexed_db_helper_
->AddIndexedDBSamples();
931 mock_browsing_data_indexed_db_helper_
->Notify();
932 mock_browsing_data_file_system_helper_
->AddFileSystemSamples();
933 mock_browsing_data_file_system_helper_
->Notify();
934 mock_browsing_data_quota_helper_
->AddQuotaSamples();
935 mock_browsing_data_quota_helper_
->Notify();
938 SCOPED_TRACE("Initial State 5 cookies, 2 databases, 2 local storages, "
939 "2 session storages, 2 indexed DBs, 3 filesystems, "
941 // 47 because there's the root, then
942 // foo1 -> cookies -> a,
943 // foo2 -> cookies -> b,
944 // foo3 -> cookies -> c,d,e
945 // dbhost1 -> database -> db1,
946 // dbhost2 -> database -> db2,
947 // host1 -> localstorage -> http://host1:1/,
948 // -> sessionstorage -> http://host1:1/,
949 // host2 -> localstorage -> http://host2:2/,
950 // -> sessionstorage -> http://host2:2/,
951 // idbhost1 -> sessionstorage -> http://idbhost1:1/,
952 // idbhost2 -> sessionstorage -> http://idbhost2:2/,
953 // fshost1 -> filesystem -> http://fshost1:1/,
954 // fshost2 -> filesystem -> http://fshost2:1/,
955 // fshost3 -> filesystem -> http://fshost3:1/,
956 // quotahost1 -> quotahost1,
957 // quotahost2 -> quotahost2.
958 EXPECT_EQ(47, cookies_model
.GetRoot()->GetTotalNodeCount());
959 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model
).c_str());
960 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model
));
961 EXPECT_EQ("http://host1:1/,http://host2:2/",
962 GetDisplayedLocalStorages(&cookies_model
));
963 EXPECT_EQ("http://host1:1/,http://host2:2/",
964 GetDisplayedSessionStorages(&cookies_model
));
965 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
966 GetDisplayedIndexedDBs(&cookies_model
));
967 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
968 GetDisplayedFileSystems(&cookies_model
));
969 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model
));
971 DeleteStoredObjects(cookies_model
.GetRoot()->GetChild(2)->GetChild(0)->
974 SCOPED_TRACE("Middle cookie in third origin removed");
975 EXPECT_STREQ("A,B,C,E", GetDisplayedCookies(&cookies_model
).c_str());
976 EXPECT_EQ(46, cookies_model
.GetRoot()->GetTotalNodeCount());
977 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model
));
978 EXPECT_EQ("http://host1:1/,http://host2:2/",
979 GetDisplayedLocalStorages(&cookies_model
));
980 EXPECT_EQ("http://host1:1/,http://host2:2/",
981 GetDisplayedSessionStorages(&cookies_model
));
982 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
983 GetDisplayedIndexedDBs(&cookies_model
));
984 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
985 GetDisplayedFileSystems(&cookies_model
));
986 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model
));
990 TEST_F(CookiesTreeModelTest
, RemoveSecondOrigin
) {
991 LocalDataContainer
* container
=
992 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
993 mock_browsing_data_database_helper_
.get(),
994 mock_browsing_data_local_storage_helper_
.get(),
995 mock_browsing_data_session_storage_helper_
.get(),
996 mock_browsing_data_appcache_helper_
.get(),
997 mock_browsing_data_indexed_db_helper_
.get(),
998 mock_browsing_data_file_system_helper_
.get(),
999 mock_browsing_data_quota_helper_
.get(),
1000 mock_browsing_data_server_bound_cert_helper_
.get(),
1001 mock_browsing_data_flash_lso_helper_
.get());
1002 CookiesTreeModel
cookies_model(
1003 container
, special_storage_policy_
.get(), false);
1005 mock_browsing_data_cookie_helper_
->
1006 AddCookieSamples(GURL("http://foo1"), "A=1");
1007 mock_browsing_data_cookie_helper_
->
1008 AddCookieSamples(GURL("http://foo2"), "B=1");
1009 mock_browsing_data_cookie_helper_
->
1010 AddCookieSamples(GURL("http://foo3"), "C=1");
1011 mock_browsing_data_cookie_helper_
->
1012 AddCookieSamples(GURL("http://foo3"), "D=1");
1013 mock_browsing_data_cookie_helper_
->
1014 AddCookieSamples(GURL("http://foo3"), "E=1");
1015 mock_browsing_data_cookie_helper_
->Notify();
1018 SCOPED_TRACE("Initial State 5 cookies");
1019 // 12 because there's the root, then foo1 -> cookies -> a,
1020 // foo2 -> cookies -> b, foo3 -> cookies -> c,d,e
1021 EXPECT_EQ(12, cookies_model
.GetRoot()->GetTotalNodeCount());
1022 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model
).c_str());
1024 DeleteStoredObjects(cookies_model
.GetRoot()->GetChild(1));
1026 SCOPED_TRACE("Second origin removed");
1027 EXPECT_STREQ("A,C,D,E", GetDisplayedCookies(&cookies_model
).c_str());
1028 // Left with root -> foo1 -> cookies -> a, foo3 -> cookies -> c,d,e
1029 EXPECT_EQ(9, cookies_model
.GetRoot()->GetTotalNodeCount());
1033 TEST_F(CookiesTreeModelTest
, OriginOrdering
) {
1034 LocalDataContainer
* container
=
1035 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
1036 mock_browsing_data_database_helper_
.get(),
1037 mock_browsing_data_local_storage_helper_
.get(),
1038 mock_browsing_data_session_storage_helper_
.get(),
1039 mock_browsing_data_appcache_helper_
.get(),
1040 mock_browsing_data_indexed_db_helper_
.get(),
1041 mock_browsing_data_file_system_helper_
.get(),
1042 mock_browsing_data_quota_helper_
.get(),
1043 mock_browsing_data_server_bound_cert_helper_
.get(),
1044 mock_browsing_data_flash_lso_helper_
.get());
1045 CookiesTreeModel
cookies_model(
1046 container
, special_storage_policy_
.get(), false);
1048 mock_browsing_data_cookie_helper_
->
1049 AddCookieSamples(GURL("http://a.foo2.com"), "A=1");
1050 mock_browsing_data_cookie_helper_
->
1051 AddCookieSamples(GURL("http://foo2.com"), "B=1");
1052 mock_browsing_data_cookie_helper_
->
1053 AddCookieSamples(GURL("http://b.foo1.com"), "C=1");
1054 // Leading dot on the foo4
1055 mock_browsing_data_cookie_helper_
->AddCookieSamples(
1056 GURL("http://foo4.com"), "D=1; domain=.foo4.com; path=/;");
1057 mock_browsing_data_cookie_helper_
->
1058 AddCookieSamples(GURL("http://a.foo1.com"), "E=1");
1059 mock_browsing_data_cookie_helper_
->
1060 AddCookieSamples(GURL("http://foo1.com"), "F=1");
1061 mock_browsing_data_cookie_helper_
->
1062 AddCookieSamples(GURL("http://foo3.com"), "G=1");
1063 mock_browsing_data_cookie_helper_
->
1064 AddCookieSamples(GURL("http://foo4.com"), "H=1");
1065 mock_browsing_data_cookie_helper_
->Notify();
1068 SCOPED_TRACE("Initial State 8 cookies");
1069 EXPECT_EQ(23, cookies_model
.GetRoot()->GetTotalNodeCount());
1070 EXPECT_STREQ("F,E,C,B,A,G,D,H",
1071 GetDisplayedCookies(&cookies_model
).c_str());
1074 DeleteStoredObjects(cookies_model
.GetRoot()->GetChild(1));
1076 EXPECT_STREQ("F,C,B,A,G,D,H", GetDisplayedCookies(&cookies_model
).c_str());
1080 TEST_F(CookiesTreeModelTest
, ContentSettings
) {
1081 GURL
host("http://xyz.com/");
1082 LocalDataContainer
* container
=
1083 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
1084 mock_browsing_data_database_helper_
.get(),
1085 mock_browsing_data_local_storage_helper_
.get(),
1086 mock_browsing_data_session_storage_helper_
.get(),
1087 mock_browsing_data_appcache_helper_
.get(),
1088 mock_browsing_data_indexed_db_helper_
.get(),
1089 mock_browsing_data_file_system_helper_
.get(),
1090 mock_browsing_data_quota_helper_
.get(),
1091 mock_browsing_data_server_bound_cert_helper_
.get(),
1092 mock_browsing_data_flash_lso_helper_
.get());
1093 CookiesTreeModel
cookies_model(
1094 container
, special_storage_policy_
.get(), false);
1096 mock_browsing_data_cookie_helper_
->AddCookieSamples(host
, "A=1");
1097 mock_browsing_data_cookie_helper_
->Notify();
1099 TestingProfile profile
;
1100 HostContentSettingsMap
* content_settings
=
1101 profile
.GetHostContentSettingsMap();
1102 CookieSettings
* cookie_settings
=
1103 CookieSettings::Factory::GetForProfile(&profile
).get();
1104 MockSettingsObserver observer
;
1106 CookieTreeRootNode
* root
=
1107 static_cast<CookieTreeRootNode
*>(cookies_model
.GetRoot());
1108 CookieTreeHostNode
* origin
=
1109 root
->GetOrCreateHostNode(host
);
1111 EXPECT_EQ(1, origin
->child_count());
1112 EXPECT_TRUE(origin
->CanCreateContentException());
1113 EXPECT_CALL(observer
,
1114 OnContentSettingsChanged(
1116 CONTENT_SETTINGS_TYPE_COOKIES
,
1118 ContentSettingsPattern::FromURLNoWildcard(host
),
1119 ContentSettingsPattern::Wildcard(),
1121 EXPECT_CALL(observer
,
1122 OnContentSettingsChanged(content_settings
,
1123 CONTENT_SETTINGS_TYPE_COOKIES
,
1125 ContentSettingsPattern::FromURL(host
),
1126 ContentSettingsPattern::Wildcard(),
1128 origin
->CreateContentException(
1129 cookie_settings
, CONTENT_SETTING_SESSION_ONLY
);
1130 EXPECT_TRUE(cookie_settings
->IsReadingCookieAllowed(host
, host
));
1131 EXPECT_TRUE(cookie_settings
->IsCookieSessionOnly(host
));
1134 TEST_F(CookiesTreeModelTest
, FileSystemFilter
) {
1135 scoped_ptr
<CookiesTreeModel
> cookies_model(
1136 CreateCookiesTreeModelWithInitialSample());
1138 cookies_model
->UpdateSearchResults(base::ASCIIToUTF16("fshost1"));
1139 EXPECT_EQ("http://fshost1:1/",
1140 GetDisplayedFileSystems(cookies_model
.get()));
1142 cookies_model
->UpdateSearchResults(base::ASCIIToUTF16("fshost2"));
1143 EXPECT_EQ("http://fshost2:2/",
1144 GetDisplayedFileSystems(cookies_model
.get()));
1146 cookies_model
->UpdateSearchResults(base::ASCIIToUTF16("fshost3"));
1147 EXPECT_EQ("http://fshost3:3/",
1148 GetDisplayedFileSystems(cookies_model
.get()));
1150 cookies_model
->UpdateSearchResults(base::string16());
1151 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
1152 GetDisplayedFileSystems(cookies_model
.get()));
1155 TEST_F(CookiesTreeModelTest
, CookiesFilter
) {
1156 LocalDataContainer
* container
=
1157 new LocalDataContainer(mock_browsing_data_cookie_helper_
.get(),
1158 mock_browsing_data_database_helper_
.get(),
1159 mock_browsing_data_local_storage_helper_
.get(),
1160 mock_browsing_data_session_storage_helper_
.get(),
1161 mock_browsing_data_appcache_helper_
.get(),
1162 mock_browsing_data_indexed_db_helper_
.get(),
1163 mock_browsing_data_file_system_helper_
.get(),
1164 mock_browsing_data_quota_helper_
.get(),
1165 mock_browsing_data_server_bound_cert_helper_
.get(),
1166 mock_browsing_data_flash_lso_helper_
.get());
1167 CookiesTreeModel
cookies_model(
1168 container
, special_storage_policy_
.get(), false);
1170 mock_browsing_data_cookie_helper_
->
1171 AddCookieSamples(GURL("http://123.com"), "A=1");
1172 mock_browsing_data_cookie_helper_
->
1173 AddCookieSamples(GURL("http://foo1.com"), "B=1");
1174 mock_browsing_data_cookie_helper_
->
1175 AddCookieSamples(GURL("http://foo2.com"), "C=1");
1176 mock_browsing_data_cookie_helper_
->
1177 AddCookieSamples(GURL("http://foo3.com"), "D=1");
1178 mock_browsing_data_cookie_helper_
->Notify();
1179 EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model
));
1181 cookies_model
.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo")));
1182 EXPECT_EQ("B,C,D", GetDisplayedCookies(&cookies_model
));
1184 cookies_model
.UpdateSearchResults(base::string16(base::ASCIIToUTF16("2")));
1185 EXPECT_EQ("A,C", GetDisplayedCookies(&cookies_model
));
1187 cookies_model
.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo3")));
1188 EXPECT_EQ("D", GetDisplayedCookies(&cookies_model
));
1190 cookies_model
.UpdateSearchResults(base::string16());
1191 EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model
));