| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/chrome_content_browser_client.h" | 5 #include "chrome/browser/chrome_content_browser_client.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
| 15 #include "base/message_loop/message_loop.h" | 15 #include "base/message_loop/message_loop.h" |
| 16 #include "base/metrics/field_trial.h" | 16 #include "base/metrics/field_trial.h" |
| 17 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
| 18 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
| 19 #include "build/build_config.h" | 19 #include "build/build_config.h" |
| 20 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 20 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| 21 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" | 21 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" |
| 22 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" |
| 22 #include "chrome/browser/browsing_data/mock_browsing_data_remover.h" | 23 #include "chrome/browser/browsing_data/mock_browsing_data_remover.h" |
| 23 #include "chrome/browser/search_engines/template_url_service_factory.h" | 24 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 24 #include "chrome/test/base/testing_profile.h" | 25 #include "chrome/test/base/testing_profile.h" |
| 25 #include "components/content_settings/core/browser/host_content_settings_map.h" | 26 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 26 #include "components/search_engines/template_url_service.h" | 27 #include "components/search_engines/template_url_service.h" |
| 27 #include "components/variations/entropy_provider.h" | 28 #include "components/variations/entropy_provider.h" |
| 28 #include "components/variations/variations_associated_data.h" | 29 #include "components/variations/variations_associated_data.h" |
| 29 #include "components/version_info/version_info.h" | 30 #include "components/version_info/version_info.h" |
| 30 #include "content/public/browser/browsing_data_filter_builder.h" | 31 #include "content/public/browser/browsing_data_filter_builder.h" |
| 31 #include "content/public/browser/navigation_controller.h" | 32 #include "content/public/browser/navigation_controller.h" |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 TEST_F(ChromeContentBrowserClientClearSiteDataTest, Parameters) { | 381 TEST_F(ChromeContentBrowserClientClearSiteDataTest, Parameters) { |
| 381 ChromeContentBrowserClient client; | 382 ChromeContentBrowserClient client; |
| 382 | 383 |
| 383 struct TestCase { | 384 struct TestCase { |
| 384 bool cookies; | 385 bool cookies; |
| 385 bool storage; | 386 bool storage; |
| 386 bool cache; | 387 bool cache; |
| 387 int mask; | 388 int mask; |
| 388 } test_cases[] = { | 389 } test_cases[] = { |
| 389 {false, false, false, 0}, | 390 {false, false, false, 0}, |
| 390 {true, false, false, BrowsingDataRemover::REMOVE_COOKIES | | 391 {true, false, false, |
| 391 BrowsingDataRemover::REMOVE_CHANNEL_IDS | | 392 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES | |
| 392 BrowsingDataRemover::REMOVE_PLUGIN_DATA}, | 393 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS | |
| 393 {false, true, false, BrowsingDataRemover::REMOVE_SITE_DATA & | 394 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA}, |
| 394 ~BrowsingDataRemover::REMOVE_COOKIES & | 395 {false, true, false, |
| 395 ~BrowsingDataRemover::REMOVE_CHANNEL_IDS & | 396 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA & |
| 396 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA}, | 397 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES & |
| 397 {false, false, true, BrowsingDataRemover::REMOVE_CACHE}, | 398 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS & |
| 398 {true, true, false, BrowsingDataRemover::REMOVE_SITE_DATA}, | 399 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA}, |
| 399 {true, false, true, BrowsingDataRemover::REMOVE_COOKIES | | 400 {false, false, true, ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CACHE}, |
| 400 BrowsingDataRemover::REMOVE_CHANNEL_IDS | | 401 {true, true, false, |
| 401 BrowsingDataRemover::REMOVE_PLUGIN_DATA | | 402 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA}, |
| 402 BrowsingDataRemover::REMOVE_CACHE}, | 403 {true, false, true, |
| 403 {false, true, true, BrowsingDataRemover::REMOVE_CACHE | | 404 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES | |
| 404 (BrowsingDataRemover::REMOVE_SITE_DATA & | 405 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS | |
| 405 ~BrowsingDataRemover::REMOVE_COOKIES & | 406 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA | |
| 406 ~BrowsingDataRemover::REMOVE_CHANNEL_IDS & | 407 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CACHE}, |
| 407 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA)}, | 408 {false, true, true, |
| 408 {true, true, true, BrowsingDataRemover::REMOVE_SITE_DATA | | 409 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CACHE | |
| 409 BrowsingDataRemover::REMOVE_CACHE}, | 410 (ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA & |
| 411 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES & |
| 412 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS & |
| 413 ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA)}, |
| 414 {true, true, true, |
| 415 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA | |
| 416 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CACHE}, |
| 410 }; | 417 }; |
| 411 | 418 |
| 412 for (unsigned int i = 0; i < arraysize(test_cases); ++i) { | 419 for (unsigned int i = 0; i < arraysize(test_cases); ++i) { |
| 413 SCOPED_TRACE(base::StringPrintf("Test case %d", i)); | 420 SCOPED_TRACE(base::StringPrintf("Test case %d", i)); |
| 414 const TestCase& test_case = test_cases[i]; | 421 const TestCase& test_case = test_cases[i]; |
| 415 | 422 |
| 416 // We always delete data for all time and all origin types. | 423 // We always delete data for all time and all origin types. |
| 417 BrowsingDataHelper::OriginTypeMask all_origin_types = | 424 int all_origin_types = ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES; |
| 418 BrowsingDataHelper::ALL; | |
| 419 | 425 |
| 420 // Some data are deleted for the origin and some for the registrable domain. | 426 // Some data are deleted for the origin and some for the registrable domain. |
| 421 // Depending on the chosen datatypes, this might result into one or two | 427 // Depending on the chosen datatypes, this might result into one or two |
| 422 // calls. In the latter case, the removal mask will be split into two | 428 // calls. In the latter case, the removal mask will be split into two |
| 423 // parts - one for the origin deletion and one for the registrable domain. | 429 // parts - one for the origin deletion and one for the registrable domain. |
| 424 const int domain_scoped_types = BrowsingDataRemover::REMOVE_COOKIES | | 430 const int domain_scoped_types = |
| 425 BrowsingDataRemover::REMOVE_CHANNEL_IDS | | 431 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES | |
| 426 BrowsingDataRemover::REMOVE_PLUGIN_DATA; | 432 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS | |
| 433 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA; |
| 427 int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types; | 434 int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types; |
| 428 int origin_deletion_mask = test_case.mask & ~domain_scoped_types; | 435 int origin_deletion_mask = test_case.mask & ~domain_scoped_types; |
| 429 | 436 |
| 430 if (registrable_domain_deletion_mask) { | 437 if (registrable_domain_deletion_mask) { |
| 431 remover()->ExpectCallDontCareAboutFilterBuilder( | 438 remover()->ExpectCallDontCareAboutFilterBuilder( |
| 432 base::Time(), base::Time::Max(), | 439 base::Time(), base::Time::Max(), |
| 433 registrable_domain_deletion_mask, all_origin_types); | 440 registrable_domain_deletion_mask, all_origin_types); |
| 434 } | 441 } |
| 435 | 442 |
| 436 if (origin_deletion_mask) { | 443 if (origin_deletion_mask) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 for (const TestCase& test_case : test_cases) { | 505 for (const TestCase& test_case : test_cases) { |
| 499 SCOPED_TRACE(test_case.origin); | 506 SCOPED_TRACE(test_case.origin); |
| 500 | 507 |
| 501 std::unique_ptr<BrowsingDataFilterBuilder> | 508 std::unique_ptr<BrowsingDataFilterBuilder> |
| 502 registrable_domain_filter_builder(BrowsingDataFilterBuilder::Create( | 509 registrable_domain_filter_builder(BrowsingDataFilterBuilder::Create( |
| 503 BrowsingDataFilterBuilder::WHITELIST)); | 510 BrowsingDataFilterBuilder::WHITELIST)); |
| 504 registrable_domain_filter_builder->AddRegisterableDomain(test_case.domain); | 511 registrable_domain_filter_builder->AddRegisterableDomain(test_case.domain); |
| 505 | 512 |
| 506 remover()->ExpectCall( | 513 remover()->ExpectCall( |
| 507 base::Time(), base::Time::Max(), | 514 base::Time(), base::Time::Max(), |
| 508 BrowsingDataRemover::REMOVE_COOKIES | | 515 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_COOKIES | |
| 509 BrowsingDataRemover::REMOVE_CHANNEL_IDS | | 516 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CHANNEL_IDS | |
| 510 BrowsingDataRemover::REMOVE_PLUGIN_DATA, | 517 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA, |
| 511 BrowsingDataHelper::ALL, std::move(registrable_domain_filter_builder)); | 518 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, |
| 519 std::move(registrable_domain_filter_builder)); |
| 512 | 520 |
| 513 std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder( | 521 std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder( |
| 514 BrowsingDataFilterBuilder::Create( | 522 BrowsingDataFilterBuilder::Create( |
| 515 BrowsingDataFilterBuilder::WHITELIST)); | 523 BrowsingDataFilterBuilder::WHITELIST)); |
| 516 origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin))); | 524 origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin))); |
| 517 | 525 |
| 518 remover()->ExpectCall( | 526 remover()->ExpectCall(base::Time(), base::Time::Max(), |
| 519 base::Time(), base::Time::Max(), | 527 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CACHE, |
| 520 BrowsingDataRemover::REMOVE_CACHE, BrowsingDataHelper::ALL, | 528 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, |
| 521 std::move(origin_filter_builder)); | 529 std::move(origin_filter_builder)); |
| 522 | 530 |
| 523 SetClearingFinished(false); | 531 SetClearingFinished(false); |
| 524 client.ClearSiteData( | 532 client.ClearSiteData( |
| 525 profile(), url::Origin(GURL(test_case.origin)), true /* cookies */, | 533 profile(), url::Origin(GURL(test_case.origin)), true /* cookies */, |
| 526 false /* storage */, true /* cache */, | 534 false /* storage */, true /* cache */, |
| 527 base::Bind( | 535 base::Bind( |
| 528 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, | 536 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, |
| 529 base::Unretained(this), true)); | 537 base::Unretained(this), true)); |
| 530 EXPECT_TRUE(IsClearingFinished()); | 538 EXPECT_TRUE(IsClearingFinished()); |
| 531 | 539 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 client.ClearSiteData( | 582 client.ClearSiteData( |
| 575 profile(), origin, true /* cookies */, false /* storage */, | 583 profile(), origin, true /* cookies */, false /* storage */, |
| 576 true /* cache */, | 584 true /* cache */, |
| 577 base::Bind( | 585 base::Bind( |
| 578 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, | 586 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, |
| 579 base::Unretained(this), true)); | 587 base::Unretained(this), true)); |
| 580 EXPECT_TRUE(IsClearingFinished()); | 588 EXPECT_TRUE(IsClearingFinished()); |
| 581 } | 589 } |
| 582 | 590 |
| 583 } // namespace | 591 } // namespace |
| OLD | NEW |