| Index: chrome/browser/chrome_content_browser_client_unittest.cc | 
| diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc | 
| index 2040adc53097d2bce0bd059650b692b7219256c0..853335e1da52d99d65549f7a735c8e63cfc5100d 100644 | 
| --- a/chrome/browser/chrome_content_browser_client_unittest.cc | 
| +++ b/chrome/browser/chrome_content_browser_client_unittest.cc | 
| @@ -20,7 +20,6 @@ | 
| #include "build/build_config.h" | 
| #include "chrome/browser/browsing_data/browsing_data_helper.h" | 
| #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" | 
| -#include "chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h" | 
| #include "chrome/browser/search_engines/template_url_service_factory.h" | 
| #include "chrome/test/base/testing_profile.h" | 
| #include "components/content_settings/core/browser/host_content_settings_map.h" | 
| @@ -343,241 +342,3 @@ TEST_F(InstantNTPURLRewriteTest, UberURLHandler_InstantExtendedNewTabPage) { | 
|  | 
| }  // namespace content | 
| #endif  // !defined(OS_ANDROID) | 
| - | 
| -namespace { | 
| - | 
| -// Tests for ChromeContentBrowserClient::ClearSiteData(). | 
| -class ChromeContentBrowserClientClearSiteDataTest : public testing::Test { | 
| - public: | 
| -  void SetUp() override { | 
| -    content::BrowserContext::GetBrowsingDataRemover(profile()) | 
| -        ->SetEmbedderDelegate(&mock_delegate_); | 
| -    run_loop_.reset(new base::RunLoop()); | 
| -  } | 
| - | 
| -  content::BrowserContext* profile() { return &profile_; } | 
| - | 
| -  MockBrowsingDataRemoverDelegate* delegate() { return &mock_delegate_; } | 
| - | 
| -  void OnClearingFinished() { run_loop_->Quit(); } | 
| - | 
| -  void WaitForClearingFinished() { | 
| -    run_loop_->Run(); | 
| -    run_loop_.reset(new base::RunLoop()); | 
| -  } | 
| - | 
| - private: | 
| -  std::unique_ptr<base::RunLoop> run_loop_; | 
| -  MockBrowsingDataRemoverDelegate mock_delegate_; | 
| -  content::TestBrowserThreadBundle thread_bundle_; | 
| -  TestingProfile profile_; | 
| -}; | 
| - | 
| -// Tests that the parameters to ClearBrowsingData() are translated to | 
| -// the correct BrowsingDataRemover::RemoveInternal() operation. The fourth | 
| -// parameter, |filter_builder|, is tested in detail in the RegistrableDomains | 
| -// test below. | 
| -TEST_F(ChromeContentBrowserClientClearSiteDataTest, Parameters) { | 
| -  ChromeContentBrowserClient client; | 
| - | 
| -  struct TestCase { | 
| -    bool cookies; | 
| -    bool storage; | 
| -    bool cache; | 
| -    int mask; | 
| -  } test_cases[] = { | 
| -      {false, false, false, 0}, | 
| -      {true, false, false, | 
| -       content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA}, | 
| -      {false, true, false, content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE}, | 
| -      {false, false, true, content::BrowsingDataRemover::DATA_TYPE_CACHE}, | 
| -      {true, true, false, | 
| -       content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA | | 
| -           content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE}, | 
| -      {true, false, true, | 
| -       content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CACHE}, | 
| -      {false, true, true, | 
| -       content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CACHE}, | 
| -      {true, true, true, | 
| -       content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA | | 
| -           content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE | | 
| -           content::BrowsingDataRemover::DATA_TYPE_CACHE}, | 
| -  }; | 
| - | 
| -  for (unsigned int i = 0; i < arraysize(test_cases); ++i) { | 
| -    SCOPED_TRACE(base::StringPrintf("Test case %d", i)); | 
| -    const TestCase& test_case = test_cases[i]; | 
| - | 
| -    // We always delete data for all time and all origin types. | 
| -    int all_origin_types = ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES; | 
| - | 
| -    // Some data are deleted for the origin and some for the registrable domain. | 
| -    // Depending on the chosen datatypes, this might result into one or two | 
| -    // calls. In the latter case, the removal mask will be split into two | 
| -    // parts - one for the origin deletion and one for the registrable domain. | 
| -    const int domain_scoped_types = | 
| -        content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -        content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -        ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA; | 
| -    int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types; | 
| -    int origin_deletion_mask = test_case.mask & ~domain_scoped_types; | 
| - | 
| -    if (registrable_domain_deletion_mask) { | 
| -      delegate()->ExpectCallDontCareAboutFilterBuilder( | 
| -          base::Time(), base::Time::Max(), registrable_domain_deletion_mask, | 
| -          all_origin_types); | 
| -    } | 
| - | 
| -    if (origin_deletion_mask) { | 
| -      delegate()->ExpectCallDontCareAboutFilterBuilder( | 
| -          base::Time(), base::Time::Max(), origin_deletion_mask, | 
| -          all_origin_types); | 
| -    } | 
| - | 
| -    client.ClearSiteData( | 
| -        profile(), url::Origin(GURL("https://www.example.com")), | 
| -        test_case.cookies, test_case.storage, test_case.cache, | 
| -        base::Bind( | 
| -            &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -            base::Unretained(this))); | 
| -    WaitForClearingFinished(); | 
| - | 
| -    delegate()->VerifyAndClearExpectations(); | 
| -  } | 
| -} | 
| - | 
| -// Tests that ClearBrowsingData() called for an origin deletes cookies in the | 
| -// scope of the registrable domain corresponding to that origin, while cache | 
| -// is deleted for that exact origin. | 
| -TEST_F(ChromeContentBrowserClientClearSiteDataTest, RegistrableDomains) { | 
| -  ChromeContentBrowserClient client; | 
| - | 
| -  struct TestCase { | 
| -    const char* origin;  // origin on which ClearSiteData() is called. | 
| -    const char* domain;  // domain on which cookies will be deleted. | 
| -  } test_cases[] = { | 
| -      // TLD has no embedded dot. | 
| -      {"https://example.com", "example.com"}, | 
| -      {"https://www.example.com", "example.com"}, | 
| -      {"https://www.fourth.third.second.com", "second.com"}, | 
| - | 
| -      // TLD has one embedded dot. | 
| -      {"https://www.example.co.uk", "example.co.uk"}, | 
| -      {"https://example.co.uk", "example.co.uk"}, | 
| - | 
| -      // TLD has more embedded dots. | 
| -      {"https://www.website.sp.nom.br", "website.sp.nom.br"}, | 
| - | 
| -      // IP addresses. | 
| -      {"http://127.0.0.1", "127.0.0.1"}, | 
| -      {"http://192.168.0.1", "192.168.0.1"}, | 
| -      {"http://192.168.0.1", "192.168.0.1"}, | 
| - | 
| -      // Internal hostnames. | 
| -      {"http://localhost", "localhost"}, | 
| -      {"http://fileserver", "fileserver"}, | 
| - | 
| -      // These are not subdomains of internal hostnames, but subdomain of | 
| -      // unknown TLDs. | 
| -      {"http://subdomain.localhost", "subdomain.localhost"}, | 
| -      {"http://www.subdomain.localhost", "subdomain.localhost"}, | 
| -      {"http://documents.fileserver", "documents.fileserver"}, | 
| - | 
| -      // Scheme and port don't matter. | 
| -      {"http://example.com", "example.com"}, | 
| -      {"http://example.com:8080", "example.com"}, | 
| -      {"https://example.com:4433", "example.com"}, | 
| -  }; | 
| - | 
| -  for (const TestCase& test_case : test_cases) { | 
| -    SCOPED_TRACE(test_case.origin); | 
| - | 
| -    std::unique_ptr<BrowsingDataFilterBuilder> | 
| -        registrable_domain_filter_builder(BrowsingDataFilterBuilder::Create( | 
| -            BrowsingDataFilterBuilder::WHITELIST)); | 
| -    registrable_domain_filter_builder->AddRegisterableDomain(test_case.domain); | 
| - | 
| -    delegate()->ExpectCall( | 
| -        base::Time(), base::Time::Max(), | 
| -        content::BrowsingDataRemover::DATA_TYPE_COOKIES | | 
| -            content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | 
| -            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA, | 
| -        ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | 
| -        *registrable_domain_filter_builder); | 
| - | 
| -    std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder( | 
| -        BrowsingDataFilterBuilder::Create( | 
| -            BrowsingDataFilterBuilder::WHITELIST)); | 
| -    origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin))); | 
| - | 
| -    delegate()->ExpectCall(base::Time(), base::Time::Max(), | 
| -                           content::BrowsingDataRemover::DATA_TYPE_CACHE, | 
| -                           ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | 
| -                           *origin_filter_builder); | 
| - | 
| -    client.ClearSiteData( | 
| -        profile(), url::Origin(GURL(test_case.origin)), true /* cookies */, | 
| -        false /* storage */, true /* cache */, | 
| -        base::Bind( | 
| -            &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -            base::Unretained(this))); | 
| -    WaitForClearingFinished(); | 
| - | 
| -    delegate()->VerifyAndClearExpectations(); | 
| -  } | 
| -} | 
| - | 
| -// Tests that we always wait for all scheduled BrowsingDataRemover tasks and | 
| -// that BrowsingDataRemoverObserver never leaks. | 
| -TEST_F(ChromeContentBrowserClientClearSiteDataTest, Tasks) { | 
| -  ChromeContentBrowserClient client; | 
| -  url::Origin origin(GURL("https://www.example.com")); | 
| - | 
| -  // No removal tasks. | 
| -  client.ClearSiteData( | 
| -      profile(), origin, false /* cookies */, false /* storage */, | 
| -      false /* cache */, | 
| -      base::Bind( | 
| -          &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -          base::Unretained(this))); | 
| -  WaitForClearingFinished(); | 
| - | 
| -  // One removal task: deleting cookies with a domain filter. | 
| -  client.ClearSiteData( | 
| -      profile(), origin, true /* cookies */, false /* storage */, | 
| -      false /* cache */, | 
| -      base::Bind( | 
| -          &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -          base::Unretained(this))); | 
| -  WaitForClearingFinished(); | 
| - | 
| -  // One removal task: deleting cache with a domain filter. | 
| -  client.ClearSiteData( | 
| -      profile(), origin, false /* cookies */, false /* storage */, | 
| -      true /* cache */, | 
| -      base::Bind( | 
| -          &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -          base::Unretained(this))); | 
| -  WaitForClearingFinished(); | 
| - | 
| -  // Two removal tasks, with domain and origin filters respectively. | 
| -  client.ClearSiteData( | 
| -      profile(), origin, true /* cookies */, false /* storage */, | 
| -      true /* cache */, | 
| -      base::Bind( | 
| -          &ChromeContentBrowserClientClearSiteDataTest::OnClearingFinished, | 
| -          base::Unretained(this))); | 
| -  WaitForClearingFinished(); | 
| -} | 
| - | 
| -}  // namespace | 
|  |