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 "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/browsing_data/mock_browsing_data_appcache_helper.h"
13 #include "chrome/browser/browsing_data/mock_browsing_data_channel_id_helper.h"
14 #include "chrome/browser/browsing_data/mock_browsing_data_cookie_helper.h"
15 #include "chrome/browser/browsing_data/mock_browsing_data_database_helper.h"
16 #include "chrome/browser/browsing_data/mock_browsing_data_file_system_helper.h"
17 #include "chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h"
18 #include "chrome/browser/browsing_data/mock_browsing_data_indexed_db_helper.h"
19 #include "chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h"
20 #include "chrome/browser/browsing_data/mock_browsing_data_quota_helper.h"
21 #include "chrome/browser/browsing_data/mock_browsing_data_service_worker_helper.h"
22 #include "chrome/browser/content_settings/cookie_settings.h"
23 #include "chrome/browser/content_settings/host_content_settings_map.h"
24 #include "chrome/browser/content_settings/mock_settings_observer.h"
25 #include "chrome/test/base/testing_profile.h"
26 #include "content/public/browser/notification_details.h"
27 #include "content/public/browser/notification_types.h"
28 #include "content/public/test/test_browser_thread_bundle.h"
29 #include "net/url_request/url_request_context.h"
30 #include "net/url_request/url_request_context_getter.h"
31 #include "testing/gtest/include/gtest/gtest.h"
33 #if defined(ENABLE_EXTENSIONS)
34 #include "chrome/browser/extensions/extension_special_storage_policy.h"
38 using content::BrowserThread;
42 class CookiesTreeModelTest : public testing::Test {
44 virtual ~CookiesTreeModelTest() {
45 // Avoid memory leaks.
46 #if defined(ENABLE_EXTENSIONS)
47 special_storage_policy_ = NULL;
50 base::MessageLoop::current()->RunUntilIdle();
53 virtual void SetUp() OVERRIDE {
54 profile_.reset(new TestingProfile());
55 mock_browsing_data_cookie_helper_ =
56 new MockBrowsingDataCookieHelper(profile_->GetRequestContext());
57 mock_browsing_data_database_helper_ =
58 new MockBrowsingDataDatabaseHelper(profile_.get());
59 mock_browsing_data_local_storage_helper_ =
60 new MockBrowsingDataLocalStorageHelper(profile_.get());
61 mock_browsing_data_session_storage_helper_ =
62 new MockBrowsingDataLocalStorageHelper(profile_.get());
63 mock_browsing_data_appcache_helper_ =
64 new MockBrowsingDataAppCacheHelper(profile_.get());
65 mock_browsing_data_indexed_db_helper_ =
66 new MockBrowsingDataIndexedDBHelper(profile_.get());
67 mock_browsing_data_file_system_helper_ =
68 new MockBrowsingDataFileSystemHelper(profile_.get());
69 mock_browsing_data_quota_helper_ =
70 new MockBrowsingDataQuotaHelper(profile_.get());
71 mock_browsing_data_channel_id_helper_ =
72 new MockBrowsingDataChannelIDHelper();
73 mock_browsing_data_service_worker_helper_ =
74 new MockBrowsingDataServiceWorkerHelper(profile_.get());
75 mock_browsing_data_flash_lso_helper_ =
76 new MockBrowsingDataFlashLSOHelper(profile_.get());
78 scoped_refptr<CookieSettings> cookie_settings =
79 new CookieSettings(profile_->GetHostContentSettingsMap(),
80 profile_->GetPrefs());
81 #if defined(ENABLE_EXTENSIONS)
82 special_storage_policy_ =
83 new ExtensionSpecialStoragePolicy(cookie_settings.get());
87 virtual void TearDown() OVERRIDE {
88 mock_browsing_data_service_worker_helper_ = NULL;
89 mock_browsing_data_channel_id_helper_ = NULL;
90 mock_browsing_data_quota_helper_ = NULL;
91 mock_browsing_data_file_system_helper_ = NULL;
92 mock_browsing_data_indexed_db_helper_ = NULL;
93 mock_browsing_data_appcache_helper_ = NULL;
94 mock_browsing_data_session_storage_helper_ = NULL;
95 mock_browsing_data_local_storage_helper_ = NULL;
96 mock_browsing_data_database_helper_ = NULL;
97 mock_browsing_data_flash_lso_helper_ = NULL;
98 base::MessageLoop::current()->RunUntilIdle();
101 scoped_ptr<CookiesTreeModel> CreateCookiesTreeModelWithInitialSample() {
102 LocalDataContainer* container = new LocalDataContainer(
103 mock_browsing_data_cookie_helper_.get(),
104 mock_browsing_data_database_helper_.get(),
105 mock_browsing_data_local_storage_helper_.get(),
106 mock_browsing_data_session_storage_helper_.get(),
107 mock_browsing_data_appcache_helper_.get(),
108 mock_browsing_data_indexed_db_helper_.get(),
109 mock_browsing_data_file_system_helper_.get(),
110 mock_browsing_data_quota_helper_.get(),
111 mock_browsing_data_channel_id_helper_.get(),
112 mock_browsing_data_service_worker_helper_.get(),
113 mock_browsing_data_flash_lso_helper_.get());
115 CookiesTreeModel* cookies_model =
116 new CookiesTreeModel(container, special_storage_policy(), false);
117 mock_browsing_data_cookie_helper_->
118 AddCookieSamples(GURL("http://foo1"), "A=1");
119 mock_browsing_data_cookie_helper_->
120 AddCookieSamples(GURL("http://foo2"), "B=1");
121 mock_browsing_data_cookie_helper_->
122 AddCookieSamples(GURL("http://foo3"), "C=1");
123 mock_browsing_data_cookie_helper_->Notify();
124 mock_browsing_data_database_helper_->AddDatabaseSamples();
125 mock_browsing_data_database_helper_->Notify();
126 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples();
127 mock_browsing_data_local_storage_helper_->Notify();
128 mock_browsing_data_session_storage_helper_->AddLocalStorageSamples();
129 mock_browsing_data_session_storage_helper_->Notify();
130 mock_browsing_data_indexed_db_helper_->AddIndexedDBSamples();
131 mock_browsing_data_indexed_db_helper_->Notify();
132 mock_browsing_data_file_system_helper_->AddFileSystemSamples();
133 mock_browsing_data_file_system_helper_->Notify();
134 mock_browsing_data_quota_helper_->AddQuotaSamples();
135 mock_browsing_data_quota_helper_->Notify();
136 mock_browsing_data_channel_id_helper_->AddChannelIDSample(
138 mock_browsing_data_channel_id_helper_->AddChannelIDSample(
140 mock_browsing_data_channel_id_helper_->Notify();
141 mock_browsing_data_service_worker_helper_->AddServiceWorkerSamples();
142 mock_browsing_data_service_worker_helper_->Notify();
143 mock_browsing_data_flash_lso_helper_->AddFlashLSODomain("xyz.com");
144 mock_browsing_data_flash_lso_helper_->Notify();
147 SCOPED_TRACE("Initial State 3 cookies, 2 databases, 2 local storages, "
148 "2 session storages, 2 indexed DBs, 3 filesystems, "
149 "2 quotas, 2 server bound certs, 2 service workers, "
151 // 59 because there's the root, then
152 // foo1 -> cookies -> a,
153 // foo2 -> cookies -> b,
154 // foo3 -> cookies -> c,
155 // dbhost1 -> database -> db1,
156 // dbhost2 -> database -> db2,
157 // host1 -> localstorage -> http://host1:1/,
158 // -> sessionstorage -> http://host1:1/,
159 // host2 -> localstorage -> http://host2:2/.
160 // -> sessionstorage -> http://host2:2/,
161 // idbhost1 -> indexeddb -> http://idbhost1:1/,
162 // idbhost2 -> indexeddb -> http://idbhost2:2/,
163 // fshost1 -> filesystem -> http://fshost1:1/,
164 // fshost2 -> filesystem -> http://fshost2:1/,
165 // fshost3 -> filesystem -> http://fshost3:1/,
166 // quotahost1 -> quotahost1,
167 // quotahost2 -> quotahost2,
168 // sbc1 -> sbcerts -> sbc1,
169 // sbc2 -> sbcerts -> sbc2.
170 // swhost1 -> service worker -> https://swhost1:1
171 // swhost2 -> service worker -> https://swhost1:2
172 // xyz.com -> flash_lsos
173 EXPECT_EQ(59, cookies_model->GetRoot()->GetTotalNodeCount());
174 EXPECT_EQ("A,B,C", GetDisplayedCookies(cookies_model));
175 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model));
176 EXPECT_EQ("http://host1:1/,http://host2:2/",
177 GetDisplayedLocalStorages(cookies_model));
178 EXPECT_EQ("http://host1:1/,http://host2:2/",
179 GetDisplayedSessionStorages(cookies_model));
180 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
181 GetDisplayedIndexedDBs(cookies_model));
182 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
183 GetDisplayedFileSystems(cookies_model));
184 EXPECT_EQ("quotahost1,quotahost2",
185 GetDisplayedQuotas(cookies_model));
186 EXPECT_EQ("sbc1,sbc2",
187 GetDisplayedChannelIDs(cookies_model));
188 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
189 GetDisplayedServiceWorkers(cookies_model));
191 GetDisplayedFlashLSOs(cookies_model));
193 return make_scoped_ptr(cookies_model);
196 std::string GetNodesOfChildren(
197 const CookieTreeNode* node,
198 CookieTreeNode::DetailedInfo::NodeType node_type) {
199 if (!node->empty()) {
201 for (int i = 0; i < node->child_count(); ++i) {
202 retval += GetNodesOfChildren(node->GetChild(i), node_type);
207 if (node->GetDetailedInfo().node_type != node_type)
208 return std::string();
211 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE:
212 return node->GetDetailedInfo().session_storage_info->origin_url.spec() +
214 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE:
215 return node->GetDetailedInfo().local_storage_info->origin_url.spec() +
217 case CookieTreeNode::DetailedInfo::TYPE_DATABASE:
218 return node->GetDetailedInfo().database_info->database_name + ",";
219 case CookieTreeNode::DetailedInfo::TYPE_COOKIE:
220 return node->GetDetailedInfo().cookie->Name() + ",";
221 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE:
222 return node->GetDetailedInfo().appcache_info->manifest_url.spec() +
224 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB:
225 return node->GetDetailedInfo().indexed_db_info->origin_.spec() +
227 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM:
228 return node->GetDetailedInfo().file_system_info->origin.spec() +
230 case CookieTreeNode::DetailedInfo::TYPE_QUOTA:
231 return node->GetDetailedInfo().quota_info->host + ",";
232 case CookieTreeNode::DetailedInfo::TYPE_CHANNEL_ID:
233 return node->GetDetailedInfo().channel_id->server_identifier() + ",";
234 case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER:
235 return node->GetDetailedInfo().service_worker_info->origin.spec() + ",";
236 case CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO:
237 return node->GetDetailedInfo().flash_lso_domain + ",";
239 return std::string();
243 std::string GetCookiesOfChildren(const CookieTreeNode* node) {
244 return GetNodesOfChildren(node, CookieTreeNode::DetailedInfo::TYPE_COOKIE);
247 std::string GetDatabasesOfChildren(const CookieTreeNode* node) {
248 return GetNodesOfChildren(node,
249 CookieTreeNode::DetailedInfo::TYPE_DATABASE);
252 std::string GetLocalStoragesOfChildren(const CookieTreeNode* node) {
253 return GetNodesOfChildren(node,
254 CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE);
257 std::string GetSessionStoragesOfChildren(const CookieTreeNode* node) {
258 return GetNodesOfChildren(
259 node, CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE);
262 std::string GetIndexedDBsOfChildren(const CookieTreeNode* node) {
263 return GetNodesOfChildren(
264 node, CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB);
267 std::string GetFileSystemsOfChildren(const CookieTreeNode* node) {
268 return GetNodesOfChildren(
269 node, CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM);
272 std::string GetFileQuotaOfChildren(const CookieTreeNode* node) {
273 return GetNodesOfChildren(
274 node, CookieTreeNode::DetailedInfo::TYPE_QUOTA);
277 std::string GetServiceWorkersOfChildren(const CookieTreeNode* node) {
278 return GetNodesOfChildren(
279 node, CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER);
282 std::string GetFlashLSOsOfChildren(const CookieTreeNode* node) {
283 return GetNodesOfChildren(
284 node, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO);
287 // Get the nodes names displayed in the view (if we had one) in the order
288 // they are displayed, as a comma seperated string.
289 // Ex: EXPECT_STREQ("X,Y", GetDisplayedNodes(cookies_view, type).c_str());
290 std::string GetDisplayedNodes(CookiesTreeModel* cookies_model,
291 CookieTreeNode::DetailedInfo::NodeType type) {
292 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(
293 cookies_model->GetRoot());
294 std::string retval = GetNodesOfChildren(root, type);
295 if (retval.length() && retval[retval.length() - 1] == ',')
296 retval.erase(retval.length() - 1);
300 std::string GetDisplayedCookies(CookiesTreeModel* cookies_model) {
301 return GetDisplayedNodes(cookies_model,
302 CookieTreeNode::DetailedInfo::TYPE_COOKIE);
305 std::string GetDisplayedDatabases(CookiesTreeModel* cookies_model) {
306 return GetDisplayedNodes(cookies_model,
307 CookieTreeNode::DetailedInfo::TYPE_DATABASE);
310 std::string GetDisplayedLocalStorages(CookiesTreeModel* cookies_model) {
311 return GetDisplayedNodes(cookies_model,
312 CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE);
315 std::string GetDisplayedSessionStorages(CookiesTreeModel* cookies_model) {
316 return GetDisplayedNodes(
317 cookies_model, CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE);
320 std::string GetDisplayedAppCaches(CookiesTreeModel* cookies_model) {
321 return GetDisplayedNodes(cookies_model,
322 CookieTreeNode::DetailedInfo::TYPE_APPCACHE);
325 std::string GetDisplayedIndexedDBs(CookiesTreeModel* cookies_model) {
326 return GetDisplayedNodes(cookies_model,
327 CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB);
330 std::string GetDisplayedFileSystems(CookiesTreeModel* cookies_model) {
331 return GetDisplayedNodes(cookies_model,
332 CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM);
335 std::string GetDisplayedQuotas(CookiesTreeModel* cookies_model) {
336 return GetDisplayedNodes(cookies_model,
337 CookieTreeNode::DetailedInfo::TYPE_QUOTA);
340 std::string GetDisplayedChannelIDs(CookiesTreeModel* cookies_model) {
341 return GetDisplayedNodes(
342 cookies_model, CookieTreeNode::DetailedInfo::TYPE_CHANNEL_ID);
345 std::string GetDisplayedServiceWorkers(CookiesTreeModel* cookies_model) {
346 return GetDisplayedNodes(cookies_model,
347 CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER);
350 std::string GetDisplayedFlashLSOs(CookiesTreeModel* cookies_model) {
351 return GetDisplayedNodes(
352 cookies_model, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO);
355 // Do not call on the root.
356 void DeleteStoredObjects(CookieTreeNode* node) {
357 node->DeleteStoredObjects();
358 CookieTreeNode* parent_node = node->parent();
360 delete parent_node->GetModel()->Remove(parent_node, node);
364 ExtensionSpecialStoragePolicy* special_storage_policy() {
365 #if defined(ENABLE_EXTENSIONS)
366 return special_storage_policy_.get();
372 content::TestBrowserThreadBundle thread_bundle_;
373 scoped_ptr<TestingProfile> profile_;
374 scoped_refptr<MockBrowsingDataCookieHelper>
375 mock_browsing_data_cookie_helper_;
376 scoped_refptr<MockBrowsingDataDatabaseHelper>
377 mock_browsing_data_database_helper_;
378 scoped_refptr<MockBrowsingDataLocalStorageHelper>
379 mock_browsing_data_local_storage_helper_;
380 scoped_refptr<MockBrowsingDataLocalStorageHelper>
381 mock_browsing_data_session_storage_helper_;
382 scoped_refptr<MockBrowsingDataAppCacheHelper>
383 mock_browsing_data_appcache_helper_;
384 scoped_refptr<MockBrowsingDataIndexedDBHelper>
385 mock_browsing_data_indexed_db_helper_;
386 scoped_refptr<MockBrowsingDataFileSystemHelper>
387 mock_browsing_data_file_system_helper_;
388 scoped_refptr<MockBrowsingDataQuotaHelper>
389 mock_browsing_data_quota_helper_;
390 scoped_refptr<MockBrowsingDataChannelIDHelper>
391 mock_browsing_data_channel_id_helper_;
392 scoped_refptr<MockBrowsingDataServiceWorkerHelper>
393 mock_browsing_data_service_worker_helper_;
394 scoped_refptr<MockBrowsingDataFlashLSOHelper>
395 mock_browsing_data_flash_lso_helper_;
397 #if defined(ENABLE_EXTENSIONS)
398 scoped_refptr<ExtensionSpecialStoragePolicy> special_storage_policy_;
402 TEST_F(CookiesTreeModelTest, RemoveAll) {
403 scoped_ptr<CookiesTreeModel> cookies_model(
404 CreateCookiesTreeModelWithInitialSample());
406 // Reset the selection of the first row.
408 SCOPED_TRACE("Before removing");
410 GetDisplayedCookies(cookies_model.get()));
412 GetDisplayedDatabases(cookies_model.get()));
413 EXPECT_EQ("http://host1:1/,http://host2:2/",
414 GetDisplayedLocalStorages(cookies_model.get()));
415 EXPECT_EQ("http://host1:1/,http://host2:2/",
416 GetDisplayedSessionStorages(cookies_model.get()));
417 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
418 GetDisplayedIndexedDBs(cookies_model.get()));
419 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
420 GetDisplayedFileSystems(cookies_model.get()));
421 EXPECT_EQ("quotahost1,quotahost2",
422 GetDisplayedQuotas(cookies_model.get()));
423 EXPECT_EQ("sbc1,sbc2",
424 GetDisplayedChannelIDs(cookies_model.get()));
425 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
426 GetDisplayedServiceWorkers(cookies_model.get()));
428 GetDisplayedFlashLSOs(cookies_model.get()));
431 mock_browsing_data_cookie_helper_->Reset();
432 mock_browsing_data_database_helper_->Reset();
433 mock_browsing_data_local_storage_helper_->Reset();
434 mock_browsing_data_session_storage_helper_->Reset();
435 mock_browsing_data_indexed_db_helper_->Reset();
436 mock_browsing_data_service_worker_helper_->Reset();
437 mock_browsing_data_file_system_helper_->Reset();
439 cookies_model->DeleteAllStoredObjects();
441 // Make sure the nodes are also deleted from the model's cache.
442 // http://crbug.com/43249
443 cookies_model->UpdateSearchResults(base::string16());
446 // 2 nodes - root and app
447 SCOPED_TRACE("After removing");
448 EXPECT_EQ(1, cookies_model->GetRoot()->GetTotalNodeCount());
449 EXPECT_EQ(0, cookies_model->GetRoot()->child_count());
450 EXPECT_EQ(std::string(), GetDisplayedCookies(cookies_model.get()));
451 EXPECT_TRUE(mock_browsing_data_cookie_helper_->AllDeleted());
452 EXPECT_TRUE(mock_browsing_data_database_helper_->AllDeleted());
453 EXPECT_TRUE(mock_browsing_data_local_storage_helper_->AllDeleted());
454 EXPECT_FALSE(mock_browsing_data_session_storage_helper_->AllDeleted());
455 EXPECT_TRUE(mock_browsing_data_indexed_db_helper_->AllDeleted());
456 EXPECT_TRUE(mock_browsing_data_file_system_helper_->AllDeleted());
457 EXPECT_TRUE(mock_browsing_data_channel_id_helper_->AllDeleted());
458 EXPECT_TRUE(mock_browsing_data_service_worker_helper_->AllDeleted());
459 EXPECT_TRUE(mock_browsing_data_flash_lso_helper_->AllDeleted());
463 TEST_F(CookiesTreeModelTest, Remove) {
464 scoped_ptr<CookiesTreeModel> cookies_model(
465 CreateCookiesTreeModelWithInitialSample());
467 // Children start out arranged as follows:
489 // Here, we'll remove them one by one, starting from the end, and
490 // check that the state makes sense.
492 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(18));
494 SCOPED_TRACE("`xyz.com` removed.");
495 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
496 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
497 EXPECT_EQ("http://host1:1/,http://host2:2/",
498 GetDisplayedLocalStorages(cookies_model.get()));
499 EXPECT_EQ("http://host1:1/,http://host2:2/",
500 GetDisplayedSessionStorages(cookies_model.get()));
501 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
502 GetDisplayedFileSystems(cookies_model.get()));
503 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
504 GetDisplayedIndexedDBs(cookies_model.get()));
505 EXPECT_EQ("quotahost1,quotahost2",
506 GetDisplayedQuotas(cookies_model.get()));
507 EXPECT_EQ("sbc1,sbc2",
508 GetDisplayedChannelIDs(cookies_model.get()));
509 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
510 GetDisplayedServiceWorkers(cookies_model.get()));
511 EXPECT_EQ(57, cookies_model->GetRoot()->GetTotalNodeCount());
513 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(17));
515 SCOPED_TRACE("`swhost2` removed.");
516 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
517 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
518 EXPECT_EQ("http://host1:1/,http://host2:2/",
519 GetDisplayedLocalStorages(cookies_model.get()));
520 EXPECT_EQ("http://host1:1/,http://host2:2/",
521 GetDisplayedSessionStorages(cookies_model.get()));
522 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
523 GetDisplayedFileSystems(cookies_model.get()));
524 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
525 GetDisplayedIndexedDBs(cookies_model.get()));
526 EXPECT_EQ("quotahost1,quotahost2",
527 GetDisplayedQuotas(cookies_model.get()));
528 EXPECT_EQ("sbc1,sbc2",
529 GetDisplayedChannelIDs(cookies_model.get()));
530 EXPECT_EQ("https://swhost1:1/",
531 GetDisplayedServiceWorkers(cookies_model.get()));
532 EXPECT_EQ(54, cookies_model->GetRoot()->GetTotalNodeCount());
534 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(16));
536 SCOPED_TRACE("`swhost1` removed.");
537 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
538 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
539 EXPECT_EQ("http://host1:1/,http://host2:2/",
540 GetDisplayedLocalStorages(cookies_model.get()));
541 EXPECT_EQ("http://host1:1/,http://host2:2/",
542 GetDisplayedSessionStorages(cookies_model.get()));
543 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
544 GetDisplayedFileSystems(cookies_model.get()));
545 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
546 GetDisplayedIndexedDBs(cookies_model.get()));
547 EXPECT_EQ("quotahost1,quotahost2",
548 GetDisplayedQuotas(cookies_model.get()));
549 EXPECT_EQ("sbc1,sbc2",
550 GetDisplayedChannelIDs(cookies_model.get()));
551 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
552 EXPECT_EQ(51, cookies_model->GetRoot()->GetTotalNodeCount());
554 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(15));
556 SCOPED_TRACE("`sbc2` removed.");
557 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
558 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
559 EXPECT_EQ("http://host1:1/,http://host2:2/",
560 GetDisplayedLocalStorages(cookies_model.get()));
561 EXPECT_EQ("http://host1:1/,http://host2:2/",
562 GetDisplayedSessionStorages(cookies_model.get()));
563 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
564 GetDisplayedFileSystems(cookies_model.get()));
565 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
566 GetDisplayedIndexedDBs(cookies_model.get()));
567 EXPECT_EQ("quotahost1,quotahost2",
568 GetDisplayedQuotas(cookies_model.get()));
570 GetDisplayedChannelIDs(cookies_model.get()));
571 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
572 EXPECT_EQ(48, cookies_model->GetRoot()->GetTotalNodeCount());
574 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(14));
576 SCOPED_TRACE("`sbc1` removed.");
577 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
578 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
579 EXPECT_EQ("http://host1:1/,http://host2:2/",
580 GetDisplayedLocalStorages(cookies_model.get()));
581 EXPECT_EQ("http://host1:1/,http://host2:2/",
582 GetDisplayedSessionStorages(cookies_model.get()));
583 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
584 GetDisplayedFileSystems(cookies_model.get()));
585 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
586 GetDisplayedIndexedDBs(cookies_model.get()));
587 EXPECT_EQ("quotahost1,quotahost2",
588 GetDisplayedQuotas(cookies_model.get()));
589 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
590 EXPECT_EQ(45, cookies_model->GetRoot()->GetTotalNodeCount());
592 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(13));
594 SCOPED_TRACE("`quotahost2` removed.");
595 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
596 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
597 EXPECT_EQ("http://host1:1/,http://host2:2/",
598 GetDisplayedLocalStorages(cookies_model.get()));
599 EXPECT_EQ("http://host1:1/,http://host2:2/",
600 GetDisplayedSessionStorages(cookies_model.get()));
601 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
602 GetDisplayedFileSystems(cookies_model.get()));
603 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
604 GetDisplayedIndexedDBs(cookies_model.get()));
605 EXPECT_EQ("quotahost1",
606 GetDisplayedQuotas(cookies_model.get()));
607 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
608 EXPECT_EQ(43, cookies_model->GetRoot()->GetTotalNodeCount());
610 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(12));
612 SCOPED_TRACE("`quotahost1` removed.");
613 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
614 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
615 EXPECT_EQ("http://host1:1/,http://host2:2/",
616 GetDisplayedLocalStorages(cookies_model.get()));
617 EXPECT_EQ("http://host1:1/,http://host2:2/",
618 GetDisplayedSessionStorages(cookies_model.get()));
619 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
620 GetDisplayedFileSystems(cookies_model.get()));
621 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
622 GetDisplayedIndexedDBs(cookies_model.get()));
623 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
624 EXPECT_EQ(41, cookies_model->GetRoot()->GetTotalNodeCount());
626 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(11));
628 SCOPED_TRACE("`idbhost2` removed.");
629 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
630 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
631 EXPECT_EQ("http://host1:1/,http://host2:2/",
632 GetDisplayedLocalStorages(cookies_model.get()));
633 EXPECT_EQ("http://host1:1/,http://host2:2/",
634 GetDisplayedSessionStorages(cookies_model.get()));
635 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
636 GetDisplayedFileSystems(cookies_model.get()));
637 EXPECT_EQ("http://idbhost1:1/",
638 GetDisplayedIndexedDBs(cookies_model.get()));
639 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
640 EXPECT_EQ(38, cookies_model->GetRoot()->GetTotalNodeCount());
642 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(10));
644 SCOPED_TRACE("`idbhost1` removed.");
645 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
646 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
647 EXPECT_EQ("http://host1:1/,http://host2:2/",
648 GetDisplayedLocalStorages(cookies_model.get()));
649 EXPECT_EQ("http://host1:1/,http://host2:2/",
650 GetDisplayedSessionStorages(cookies_model.get()));
651 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
652 GetDisplayedFileSystems(cookies_model.get()));
653 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
654 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
655 EXPECT_EQ(35, cookies_model->GetRoot()->GetTotalNodeCount());
657 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(9));
659 SCOPED_TRACE("`host2` removed.");
660 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
661 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
662 EXPECT_EQ("http://host1:1/",
663 GetDisplayedLocalStorages(cookies_model.get()));
664 EXPECT_EQ("http://host1:1/",
665 GetDisplayedSessionStorages(cookies_model.get()));
666 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
667 GetDisplayedFileSystems(cookies_model.get()));
668 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
669 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
670 EXPECT_EQ(30, cookies_model->GetRoot()->GetTotalNodeCount());
672 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(8));
674 SCOPED_TRACE("`host1` removed.");
675 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
676 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
677 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
678 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
679 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
680 GetDisplayedFileSystems(cookies_model.get()));
681 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
682 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
683 EXPECT_EQ(25, cookies_model->GetRoot()->GetTotalNodeCount());
685 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(7));
687 SCOPED_TRACE("`gdbhost2` removed.");
688 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
689 EXPECT_EQ("db1", GetDisplayedDatabases(cookies_model.get()));
690 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
691 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
692 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
693 GetDisplayedFileSystems(cookies_model.get()));
694 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
695 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
696 EXPECT_EQ(22, cookies_model->GetRoot()->GetTotalNodeCount());
698 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(6));
700 SCOPED_TRACE("`gdbhost1` removed.");
701 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
702 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
703 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
704 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
705 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
706 GetDisplayedFileSystems(cookies_model.get()));
707 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
708 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
709 EXPECT_EQ(19, cookies_model->GetRoot()->GetTotalNodeCount());
711 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(5));
713 SCOPED_TRACE("`fshost3` removed.");
714 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
715 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
716 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
717 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
718 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/",
719 GetDisplayedFileSystems(cookies_model.get()));
720 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
721 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
722 EXPECT_EQ(16, cookies_model->GetRoot()->GetTotalNodeCount());
724 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(4));
726 SCOPED_TRACE("`fshost2` removed.");
727 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
728 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
729 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
730 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
731 EXPECT_EQ("http://fshost1:1/",
732 GetDisplayedFileSystems(cookies_model.get()));
733 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
734 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
735 EXPECT_EQ(13, cookies_model->GetRoot()->GetTotalNodeCount());
737 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(3));
739 SCOPED_TRACE("`fshost1` removed.");
740 EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
741 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
742 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
743 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
744 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model.get()));
745 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
746 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
747 EXPECT_EQ(10, cookies_model->GetRoot()->GetTotalNodeCount());
749 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(2));
751 SCOPED_TRACE("`foo3` removed.");
752 EXPECT_STREQ("A,B", GetDisplayedCookies(cookies_model.get()).c_str());
753 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
754 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
755 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
756 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model.get()));
757 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
758 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
759 EXPECT_EQ(7, cookies_model->GetRoot()->GetTotalNodeCount());
761 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(1));
763 SCOPED_TRACE("`foo2` removed.");
764 EXPECT_STREQ("A", GetDisplayedCookies(cookies_model.get()).c_str());
765 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
766 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
767 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
768 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model.get()));
769 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
770 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
771 EXPECT_EQ(4, cookies_model->GetRoot()->GetTotalNodeCount());
773 DeleteStoredObjects(cookies_model->GetRoot()->GetChild(0));
775 SCOPED_TRACE("`foo1` removed.");
776 EXPECT_STREQ("", GetDisplayedCookies(cookies_model.get()).c_str());
777 EXPECT_EQ("", GetDisplayedDatabases(cookies_model.get()));
778 EXPECT_EQ("", GetDisplayedLocalStorages(cookies_model.get()));
779 EXPECT_EQ("", GetDisplayedSessionStorages(cookies_model.get()));
780 EXPECT_EQ("", GetDisplayedFileSystems(cookies_model.get()));
781 EXPECT_EQ("", GetDisplayedIndexedDBs(cookies_model.get()));
782 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
783 EXPECT_EQ(1, cookies_model->GetRoot()->GetTotalNodeCount());
787 TEST_F(CookiesTreeModelTest, RemoveCookiesNode) {
788 scoped_ptr<CookiesTreeModel> cookies_model(
789 CreateCookiesTreeModelWithInitialSample());
792 cookies_model->GetRoot()->GetChild(0)->GetChild(0));
794 SCOPED_TRACE("First origin removed");
795 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str());
796 // 57 because in this case, the origin remains, although the COOKIES
797 // node beneath it has been deleted.
798 EXPECT_EQ(57, cookies_model->GetRoot()->GetTotalNodeCount());
799 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
800 EXPECT_EQ("http://host1:1/,http://host2:2/",
801 GetDisplayedLocalStorages(cookies_model.get()));
802 EXPECT_EQ("http://host1:1/,http://host2:2/",
803 GetDisplayedSessionStorages(cookies_model.get()));
804 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
805 GetDisplayedIndexedDBs(cookies_model.get()));
806 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
807 GetDisplayedFileSystems(cookies_model.get()));
808 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
809 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
810 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
811 GetDisplayedServiceWorkers(cookies_model.get()));
815 cookies_model->GetRoot()->GetChild(6)->GetChild(0));
817 SCOPED_TRACE("First database removed");
818 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str());
819 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get()));
820 EXPECT_EQ("http://host1:1/,http://host2:2/",
821 GetDisplayedLocalStorages(cookies_model.get()));
822 EXPECT_EQ("http://host1:1/,http://host2:2/",
823 GetDisplayedSessionStorages(cookies_model.get()));
824 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
825 GetDisplayedIndexedDBs(cookies_model.get()));
826 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
827 GetDisplayedFileSystems(cookies_model.get()));
828 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
829 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
830 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
831 GetDisplayedServiceWorkers(cookies_model.get()));
832 EXPECT_EQ(55, cookies_model->GetRoot()->GetTotalNodeCount());
836 cookies_model->GetRoot()->GetChild(8)->GetChild(0));
838 SCOPED_TRACE("First origin removed");
839 EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str());
840 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get()));
841 EXPECT_EQ("http://host2:2/",
842 GetDisplayedLocalStorages(cookies_model.get()));
843 EXPECT_EQ("http://host1:1/,http://host2:2/",
844 GetDisplayedSessionStorages(cookies_model.get()));
845 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
846 GetDisplayedIndexedDBs(cookies_model.get()));
847 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
848 GetDisplayedFileSystems(cookies_model.get()));
849 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
850 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
851 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
852 GetDisplayedServiceWorkers(cookies_model.get()));
853 EXPECT_EQ(53, cookies_model->GetRoot()->GetTotalNodeCount());
857 TEST_F(CookiesTreeModelTest, RemoveCookieNode) {
858 scoped_ptr<CookiesTreeModel> cookies_model(
859 CreateCookiesTreeModelWithInitialSample());
862 cookies_model->GetRoot()->GetChild(1)->GetChild(0));
864 SCOPED_TRACE("Second origin COOKIES node removed");
865 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str());
866 EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
867 EXPECT_EQ("http://host1:1/,http://host2:2/",
868 GetDisplayedLocalStorages(cookies_model.get()));
869 EXPECT_EQ("http://host1:1/,http://host2:2/",
870 GetDisplayedSessionStorages(cookies_model.get()));
871 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
872 GetDisplayedIndexedDBs(cookies_model.get()));
873 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
874 GetDisplayedFileSystems(cookies_model.get()));
875 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
876 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
877 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
878 GetDisplayedServiceWorkers(cookies_model.get()));
879 // 57 because in this case, the origin remains, although the COOKIES
880 // node beneath it has been deleted.
881 EXPECT_EQ(57, cookies_model->GetRoot()->GetTotalNodeCount());
885 cookies_model->GetRoot()->GetChild(6)->GetChild(0));
887 SCOPED_TRACE("First database removed");
888 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str());
889 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get()));
890 EXPECT_EQ("http://host1:1/,http://host2:2/",
891 GetDisplayedLocalStorages(cookies_model.get()));
892 EXPECT_EQ("http://host1:1/,http://host2:2/",
893 GetDisplayedSessionStorages(cookies_model.get()));
894 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
895 GetDisplayedIndexedDBs(cookies_model.get()));
896 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
897 GetDisplayedFileSystems(cookies_model.get()));
898 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
899 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
900 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
901 GetDisplayedServiceWorkers(cookies_model.get()));
902 EXPECT_EQ(55, cookies_model->GetRoot()->GetTotalNodeCount());
906 cookies_model->GetRoot()->GetChild(8)->GetChild(0));
908 SCOPED_TRACE("First origin removed");
909 EXPECT_STREQ("A,C", GetDisplayedCookies(cookies_model.get()).c_str());
910 EXPECT_EQ("db2", GetDisplayedDatabases(cookies_model.get()));
911 EXPECT_EQ("http://host2:2/",
912 GetDisplayedLocalStorages(cookies_model.get()));
913 EXPECT_EQ("http://host1:1/,http://host2:2/",
914 GetDisplayedSessionStorages(cookies_model.get()));
915 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
916 GetDisplayedIndexedDBs(cookies_model.get()));
917 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
918 GetDisplayedFileSystems(cookies_model.get()));
919 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
920 EXPECT_EQ("sbc1,sbc2", GetDisplayedChannelIDs(cookies_model.get()));
921 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
922 GetDisplayedServiceWorkers(cookies_model.get()));
923 EXPECT_EQ(53, cookies_model->GetRoot()->GetTotalNodeCount());
927 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNode) {
928 LocalDataContainer* container =
929 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
930 mock_browsing_data_database_helper_.get(),
931 mock_browsing_data_local_storage_helper_.get(),
932 mock_browsing_data_session_storage_helper_.get(),
933 mock_browsing_data_appcache_helper_.get(),
934 mock_browsing_data_indexed_db_helper_.get(),
935 mock_browsing_data_file_system_helper_.get(),
936 mock_browsing_data_quota_helper_.get(),
937 mock_browsing_data_channel_id_helper_.get(),
938 mock_browsing_data_service_worker_helper_.get(),
939 mock_browsing_data_flash_lso_helper_.get());
940 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
942 mock_browsing_data_cookie_helper_->
943 AddCookieSamples(GURL("http://foo1"), "A=1");
944 mock_browsing_data_cookie_helper_->
945 AddCookieSamples(GURL("http://foo2"), "B=1");
946 mock_browsing_data_cookie_helper_->
947 AddCookieSamples(GURL("http://foo3"), "C=1");
948 mock_browsing_data_cookie_helper_->
949 AddCookieSamples(GURL("http://foo3"), "D=1");
950 mock_browsing_data_cookie_helper_->Notify();
951 mock_browsing_data_database_helper_->AddDatabaseSamples();
952 mock_browsing_data_database_helper_->Notify();
953 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples();
954 mock_browsing_data_local_storage_helper_->Notify();
955 mock_browsing_data_session_storage_helper_->AddLocalStorageSamples();
956 mock_browsing_data_session_storage_helper_->Notify();
957 mock_browsing_data_indexed_db_helper_->AddIndexedDBSamples();
958 mock_browsing_data_indexed_db_helper_->Notify();
959 mock_browsing_data_file_system_helper_->AddFileSystemSamples();
960 mock_browsing_data_file_system_helper_->Notify();
961 mock_browsing_data_quota_helper_->AddQuotaSamples();
962 mock_browsing_data_quota_helper_->Notify();
963 mock_browsing_data_service_worker_helper_->AddServiceWorkerSamples();
964 mock_browsing_data_service_worker_helper_->Notify();
967 SCOPED_TRACE("Initial State 4 cookies, 2 databases, 2 local storages, "
968 "2 session storages, 2 indexed DBs, 3 file systems, "
969 "2 quotas, 2 service workers.");
970 // 52 because there's the root, then
971 // foo1 -> cookies -> a,
972 // foo2 -> cookies -> b,
973 // foo3 -> cookies -> c,d
974 // dbhost1 -> database -> db1,
975 // dbhost2 -> database -> db2,
976 // host1 -> localstorage -> http://host1:1/,
977 // -> sessionstorage -> http://host1:1/,
978 // host2 -> localstorage -> http://host2:2/,
979 // -> sessionstorage -> http://host2:2/,
980 // idbhost1 -> sessionstorage -> http://idbhost1:1/,
981 // idbhost2 -> sessionstorage -> http://idbhost2:2/,
982 // fshost1 -> filesystem -> http://fshost1:1/,
983 // fshost2 -> filesystem -> http://fshost2:1/,
984 // fshost3 -> filesystem -> http://fshost3:1/,
985 // quotahost1 -> quotahost1,
986 // quotahost2 -> quotahost2.
987 // swhost1 -> service worker -> https://swhost1:1
988 // swhost2 -> service worker -> https://swhost1:2
989 EXPECT_EQ(52, cookies_model.GetRoot()->GetTotalNodeCount());
990 EXPECT_STREQ("A,B,C,D", GetDisplayedCookies(&cookies_model).c_str());
991 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model));
992 EXPECT_EQ("http://host1:1/,http://host2:2/",
993 GetDisplayedLocalStorages(&cookies_model));
994 EXPECT_EQ("http://host1:1/,http://host2:2/",
995 GetDisplayedSessionStorages(&cookies_model));
996 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
997 GetDisplayedIndexedDBs(&cookies_model));
998 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
999 GetDisplayedFileSystems(&cookies_model));
1000 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model));
1001 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
1002 GetDisplayedServiceWorkers(&cookies_model));
1004 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2));
1006 SCOPED_TRACE("Third origin removed");
1007 EXPECT_STREQ("A,B", GetDisplayedCookies(&cookies_model).c_str());
1008 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model));
1009 EXPECT_EQ("http://host1:1/,http://host2:2/",
1010 GetDisplayedLocalStorages(&cookies_model));
1011 EXPECT_EQ("http://host1:1/,http://host2:2/",
1012 GetDisplayedSessionStorages(&cookies_model));
1013 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
1014 GetDisplayedIndexedDBs(&cookies_model));
1015 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
1016 GetDisplayedFileSystems(&cookies_model));
1017 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model));
1018 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
1019 GetDisplayedServiceWorkers(&cookies_model));
1020 EXPECT_EQ(48, cookies_model.GetRoot()->GetTotalNodeCount());
1024 TEST_F(CookiesTreeModelTest, RemoveSingleCookieNodeOf3) {
1025 LocalDataContainer* container =
1026 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
1027 mock_browsing_data_database_helper_.get(),
1028 mock_browsing_data_local_storage_helper_.get(),
1029 mock_browsing_data_session_storage_helper_.get(),
1030 mock_browsing_data_appcache_helper_.get(),
1031 mock_browsing_data_indexed_db_helper_.get(),
1032 mock_browsing_data_file_system_helper_.get(),
1033 mock_browsing_data_quota_helper_.get(),
1034 mock_browsing_data_channel_id_helper_.get(),
1035 mock_browsing_data_service_worker_helper_.get(),
1036 mock_browsing_data_flash_lso_helper_.get());
1037 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
1039 mock_browsing_data_cookie_helper_->
1040 AddCookieSamples(GURL("http://foo1"), "A=1");
1041 mock_browsing_data_cookie_helper_->
1042 AddCookieSamples(GURL("http://foo2"), "B=1");
1043 mock_browsing_data_cookie_helper_->
1044 AddCookieSamples(GURL("http://foo3"), "C=1");
1045 mock_browsing_data_cookie_helper_->
1046 AddCookieSamples(GURL("http://foo3"), "D=1");
1047 mock_browsing_data_cookie_helper_->
1048 AddCookieSamples(GURL("http://foo3"), "E=1");
1049 mock_browsing_data_cookie_helper_->Notify();
1050 mock_browsing_data_database_helper_->AddDatabaseSamples();
1051 mock_browsing_data_database_helper_->Notify();
1052 mock_browsing_data_local_storage_helper_->AddLocalStorageSamples();
1053 mock_browsing_data_local_storage_helper_->Notify();
1054 mock_browsing_data_session_storage_helper_->AddLocalStorageSamples();
1055 mock_browsing_data_session_storage_helper_->Notify();
1056 mock_browsing_data_indexed_db_helper_->AddIndexedDBSamples();
1057 mock_browsing_data_indexed_db_helper_->Notify();
1058 mock_browsing_data_file_system_helper_->AddFileSystemSamples();
1059 mock_browsing_data_file_system_helper_->Notify();
1060 mock_browsing_data_quota_helper_->AddQuotaSamples();
1061 mock_browsing_data_quota_helper_->Notify();
1062 mock_browsing_data_service_worker_helper_->AddServiceWorkerSamples();
1063 mock_browsing_data_service_worker_helper_->Notify();
1066 SCOPED_TRACE("Initial State 5 cookies, 2 databases, 2 local storages, "
1067 "2 session storages, 2 indexed DBs, 3 filesystems, "
1068 "2 quotas, 2 service workers.");
1069 // 53 because there's the root, then
1070 // foo1 -> cookies -> a,
1071 // foo2 -> cookies -> b,
1072 // foo3 -> cookies -> c,d,e
1073 // dbhost1 -> database -> db1,
1074 // dbhost2 -> database -> db2,
1075 // host1 -> localstorage -> http://host1:1/,
1076 // -> sessionstorage -> http://host1:1/,
1077 // host2 -> localstorage -> http://host2:2/,
1078 // -> sessionstorage -> http://host2:2/,
1079 // idbhost1 -> sessionstorage -> http://idbhost1:1/,
1080 // idbhost2 -> sessionstorage -> http://idbhost2:2/,
1081 // fshost1 -> filesystem -> http://fshost1:1/,
1082 // fshost2 -> filesystem -> http://fshost2:1/,
1083 // fshost3 -> filesystem -> http://fshost3:1/,
1084 // quotahost1 -> quotahost1,
1085 // quotahost2 -> quotahost2.
1086 // swhost1 -> service worker -> https://swhost1:1
1087 // swhost2 -> service worker -> https://swhost1:2
1088 EXPECT_EQ(53, cookies_model.GetRoot()->GetTotalNodeCount());
1089 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model).c_str());
1090 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model));
1091 EXPECT_EQ("http://host1:1/,http://host2:2/",
1092 GetDisplayedLocalStorages(&cookies_model));
1093 EXPECT_EQ("http://host1:1/,http://host2:2/",
1094 GetDisplayedSessionStorages(&cookies_model));
1095 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
1096 GetDisplayedIndexedDBs(&cookies_model));
1097 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
1098 GetDisplayedFileSystems(&cookies_model));
1099 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model));
1100 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
1101 GetDisplayedServiceWorkers(&cookies_model));
1103 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(2)->GetChild(0)->
1106 SCOPED_TRACE("Middle cookie in third origin removed");
1107 EXPECT_STREQ("A,B,C,E", GetDisplayedCookies(&cookies_model).c_str());
1108 EXPECT_EQ(52, cookies_model.GetRoot()->GetTotalNodeCount());
1109 EXPECT_EQ("db1,db2", GetDisplayedDatabases(&cookies_model));
1110 EXPECT_EQ("http://host1:1/,http://host2:2/",
1111 GetDisplayedLocalStorages(&cookies_model));
1112 EXPECT_EQ("http://host1:1/,http://host2:2/",
1113 GetDisplayedSessionStorages(&cookies_model));
1114 EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
1115 GetDisplayedIndexedDBs(&cookies_model));
1116 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
1117 GetDisplayedFileSystems(&cookies_model));
1118 EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(&cookies_model));
1119 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
1120 GetDisplayedServiceWorkers(&cookies_model));
1124 TEST_F(CookiesTreeModelTest, RemoveSecondOrigin) {
1125 LocalDataContainer* container =
1126 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
1127 mock_browsing_data_database_helper_.get(),
1128 mock_browsing_data_local_storage_helper_.get(),
1129 mock_browsing_data_session_storage_helper_.get(),
1130 mock_browsing_data_appcache_helper_.get(),
1131 mock_browsing_data_indexed_db_helper_.get(),
1132 mock_browsing_data_file_system_helper_.get(),
1133 mock_browsing_data_quota_helper_.get(),
1134 mock_browsing_data_channel_id_helper_.get(),
1135 mock_browsing_data_service_worker_helper_.get(),
1136 mock_browsing_data_flash_lso_helper_.get());
1137 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
1139 mock_browsing_data_cookie_helper_->
1140 AddCookieSamples(GURL("http://foo1"), "A=1");
1141 mock_browsing_data_cookie_helper_->
1142 AddCookieSamples(GURL("http://foo2"), "B=1");
1143 mock_browsing_data_cookie_helper_->
1144 AddCookieSamples(GURL("http://foo3"), "C=1");
1145 mock_browsing_data_cookie_helper_->
1146 AddCookieSamples(GURL("http://foo3"), "D=1");
1147 mock_browsing_data_cookie_helper_->
1148 AddCookieSamples(GURL("http://foo3"), "E=1");
1149 mock_browsing_data_cookie_helper_->Notify();
1152 SCOPED_TRACE("Initial State 5 cookies");
1153 // 12 because there's the root, then foo1 -> cookies -> a,
1154 // foo2 -> cookies -> b, foo3 -> cookies -> c,d,e
1155 EXPECT_EQ(12, cookies_model.GetRoot()->GetTotalNodeCount());
1156 EXPECT_STREQ("A,B,C,D,E", GetDisplayedCookies(&cookies_model).c_str());
1158 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(1));
1160 SCOPED_TRACE("Second origin removed");
1161 EXPECT_STREQ("A,C,D,E", GetDisplayedCookies(&cookies_model).c_str());
1162 // Left with root -> foo1 -> cookies -> a, foo3 -> cookies -> c,d,e
1163 EXPECT_EQ(9, cookies_model.GetRoot()->GetTotalNodeCount());
1167 TEST_F(CookiesTreeModelTest, OriginOrdering) {
1168 LocalDataContainer* container =
1169 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
1170 mock_browsing_data_database_helper_.get(),
1171 mock_browsing_data_local_storage_helper_.get(),
1172 mock_browsing_data_session_storage_helper_.get(),
1173 mock_browsing_data_appcache_helper_.get(),
1174 mock_browsing_data_indexed_db_helper_.get(),
1175 mock_browsing_data_file_system_helper_.get(),
1176 mock_browsing_data_quota_helper_.get(),
1177 mock_browsing_data_channel_id_helper_.get(),
1178 mock_browsing_data_service_worker_helper_.get(),
1179 mock_browsing_data_flash_lso_helper_.get());
1180 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
1182 mock_browsing_data_cookie_helper_->
1183 AddCookieSamples(GURL("http://a.foo2.com"), "A=1");
1184 mock_browsing_data_cookie_helper_->
1185 AddCookieSamples(GURL("http://foo2.com"), "B=1");
1186 mock_browsing_data_cookie_helper_->
1187 AddCookieSamples(GURL("http://b.foo1.com"), "C=1");
1188 // Leading dot on the foo4
1189 mock_browsing_data_cookie_helper_->AddCookieSamples(
1190 GURL("http://foo4.com"), "D=1; domain=.foo4.com; path=/;");
1191 mock_browsing_data_cookie_helper_->
1192 AddCookieSamples(GURL("http://a.foo1.com"), "E=1");
1193 mock_browsing_data_cookie_helper_->
1194 AddCookieSamples(GURL("http://foo1.com"), "F=1");
1195 mock_browsing_data_cookie_helper_->
1196 AddCookieSamples(GURL("http://foo3.com"), "G=1");
1197 mock_browsing_data_cookie_helper_->
1198 AddCookieSamples(GURL("http://foo4.com"), "H=1");
1199 mock_browsing_data_cookie_helper_->Notify();
1202 SCOPED_TRACE("Initial State 8 cookies");
1203 EXPECT_EQ(23, cookies_model.GetRoot()->GetTotalNodeCount());
1204 EXPECT_STREQ("F,E,C,B,A,G,D,H",
1205 GetDisplayedCookies(&cookies_model).c_str());
1208 DeleteStoredObjects(cookies_model.GetRoot()->GetChild(1));
1210 EXPECT_STREQ("F,C,B,A,G,D,H", GetDisplayedCookies(&cookies_model).c_str());
1214 TEST_F(CookiesTreeModelTest, ContentSettings) {
1215 GURL host("http://xyz.com/");
1216 LocalDataContainer* container =
1217 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
1218 mock_browsing_data_database_helper_.get(),
1219 mock_browsing_data_local_storage_helper_.get(),
1220 mock_browsing_data_session_storage_helper_.get(),
1221 mock_browsing_data_appcache_helper_.get(),
1222 mock_browsing_data_indexed_db_helper_.get(),
1223 mock_browsing_data_file_system_helper_.get(),
1224 mock_browsing_data_quota_helper_.get(),
1225 mock_browsing_data_channel_id_helper_.get(),
1226 mock_browsing_data_service_worker_helper_.get(),
1227 mock_browsing_data_flash_lso_helper_.get());
1228 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
1230 mock_browsing_data_cookie_helper_->AddCookieSamples(host, "A=1");
1231 mock_browsing_data_cookie_helper_->Notify();
1233 TestingProfile profile;
1234 HostContentSettingsMap* content_settings =
1235 profile.GetHostContentSettingsMap();
1236 CookieSettings* cookie_settings =
1237 CookieSettings::Factory::GetForProfile(&profile).get();
1238 MockSettingsObserver observer;
1240 CookieTreeRootNode* root =
1241 static_cast<CookieTreeRootNode*>(cookies_model.GetRoot());
1242 CookieTreeHostNode* origin =
1243 root->GetOrCreateHostNode(host);
1245 EXPECT_EQ(1, origin->child_count());
1246 EXPECT_TRUE(origin->CanCreateContentException());
1247 EXPECT_CALL(observer,
1248 OnContentSettingsChanged(
1250 CONTENT_SETTINGS_TYPE_COOKIES,
1252 ContentSettingsPattern::FromURLNoWildcard(host),
1253 ContentSettingsPattern::Wildcard(),
1255 EXPECT_CALL(observer,
1256 OnContentSettingsChanged(content_settings,
1257 CONTENT_SETTINGS_TYPE_COOKIES,
1259 ContentSettingsPattern::FromURL(host),
1260 ContentSettingsPattern::Wildcard(),
1262 origin->CreateContentException(
1263 cookie_settings, CONTENT_SETTING_SESSION_ONLY);
1264 EXPECT_TRUE(cookie_settings->IsReadingCookieAllowed(host, host));
1265 EXPECT_TRUE(cookie_settings->IsCookieSessionOnly(host));
1268 TEST_F(CookiesTreeModelTest, FileSystemFilter) {
1269 scoped_ptr<CookiesTreeModel> cookies_model(
1270 CreateCookiesTreeModelWithInitialSample());
1272 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("fshost1"));
1273 EXPECT_EQ("http://fshost1:1/",
1274 GetDisplayedFileSystems(cookies_model.get()));
1276 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("fshost2"));
1277 EXPECT_EQ("http://fshost2:2/",
1278 GetDisplayedFileSystems(cookies_model.get()));
1280 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("fshost3"));
1281 EXPECT_EQ("http://fshost3:3/",
1282 GetDisplayedFileSystems(cookies_model.get()));
1284 cookies_model->UpdateSearchResults(base::string16());
1285 EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
1286 GetDisplayedFileSystems(cookies_model.get()));
1289 TEST_F(CookiesTreeModelTest, ServiceWorkerFilter) {
1290 scoped_ptr<CookiesTreeModel> cookies_model(
1291 CreateCookiesTreeModelWithInitialSample());
1293 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("swhost1"));
1294 EXPECT_EQ("https://swhost1:1/",
1295 GetDisplayedServiceWorkers(cookies_model.get()));
1297 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("swhost2"));
1298 EXPECT_EQ("https://swhost2:2/",
1299 GetDisplayedServiceWorkers(cookies_model.get()));
1301 cookies_model->UpdateSearchResults(base::ASCIIToUTF16("swhost3"));
1302 EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
1304 cookies_model->UpdateSearchResults(base::string16());
1305 EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
1306 GetDisplayedServiceWorkers(cookies_model.get()));
1309 TEST_F(CookiesTreeModelTest, CookiesFilter) {
1310 LocalDataContainer* container =
1311 new LocalDataContainer(mock_browsing_data_cookie_helper_.get(),
1312 mock_browsing_data_database_helper_.get(),
1313 mock_browsing_data_local_storage_helper_.get(),
1314 mock_browsing_data_session_storage_helper_.get(),
1315 mock_browsing_data_appcache_helper_.get(),
1316 mock_browsing_data_indexed_db_helper_.get(),
1317 mock_browsing_data_file_system_helper_.get(),
1318 mock_browsing_data_quota_helper_.get(),
1319 mock_browsing_data_channel_id_helper_.get(),
1320 mock_browsing_data_service_worker_helper_.get(),
1321 mock_browsing_data_flash_lso_helper_.get());
1322 CookiesTreeModel cookies_model(container, special_storage_policy(), false);
1324 mock_browsing_data_cookie_helper_->
1325 AddCookieSamples(GURL("http://123.com"), "A=1");
1326 mock_browsing_data_cookie_helper_->
1327 AddCookieSamples(GURL("http://foo1.com"), "B=1");
1328 mock_browsing_data_cookie_helper_->
1329 AddCookieSamples(GURL("http://foo2.com"), "C=1");
1330 mock_browsing_data_cookie_helper_->
1331 AddCookieSamples(GURL("http://foo3.com"), "D=1");
1332 mock_browsing_data_cookie_helper_->Notify();
1333 EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model));
1335 cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo")));
1336 EXPECT_EQ("B,C,D", GetDisplayedCookies(&cookies_model));
1338 cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("2")));
1339 EXPECT_EQ("A,C", GetDisplayedCookies(&cookies_model));
1341 cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo3")));
1342 EXPECT_EQ("D", GetDisplayedCookies(&cookies_model));
1344 cookies_model.UpdateSearchResults(base::string16());
1345 EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model));