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