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 |