| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/browsing_data/browsing_data_remover.h" | 5 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <list> | 10 #include <list> |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 159 |
| 160 const base::FilePath::CharType kDomStorageOrigin2[] = | 160 const base::FilePath::CharType kDomStorageOrigin2[] = |
| 161 FILE_PATH_LITERAL("http_host2_1.localstorage"); | 161 FILE_PATH_LITERAL("http_host2_1.localstorage"); |
| 162 | 162 |
| 163 const base::FilePath::CharType kDomStorageOrigin3[] = | 163 const base::FilePath::CharType kDomStorageOrigin3[] = |
| 164 FILE_PATH_LITERAL("http_host3_1.localstorage"); | 164 FILE_PATH_LITERAL("http_host3_1.localstorage"); |
| 165 | 165 |
| 166 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL( | 166 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL( |
| 167 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage"); | 167 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage"); |
| 168 | 168 |
| 169 bool MatchPrimaryPattern(const ContentSettingsPattern& expected_primary, | |
| 170 const ContentSettingsPattern& primary_pattern, | |
| 171 const ContentSettingsPattern& secondary_pattern) { | |
| 172 return expected_primary == primary_pattern; | |
| 173 } | |
| 174 | |
| 175 #if defined(OS_CHROMEOS) | 169 #if defined(OS_CHROMEOS) |
| 176 void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) { | 170 void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) { |
| 177 base::ThreadTaskRunnerHandle::Get()->PostTask( | 171 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 178 FROM_HERE, | 172 FROM_HERE, |
| 179 base::Bind(callback, chromeos::DBUS_METHOD_CALL_SUCCESS, true)); | 173 base::Bind(callback, chromeos::DBUS_METHOD_CALL_SUCCESS, true)); |
| 180 } | 174 } |
| 181 #endif | 175 #endif |
| 182 | 176 |
| 183 struct StoragePartitionRemovalData { | 177 struct StoragePartitionRemovalData { |
| 184 uint32_t remove_mask = 0; | 178 uint32_t remove_mask = 0; |
| (...skipping 2413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2598 host_settings[0].primary_pattern) | 2592 host_settings[0].primary_pattern) |
| 2599 << host_settings[0].primary_pattern.ToString(); | 2593 << host_settings[0].primary_pattern.ToString(); |
| 2600 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin4), | 2594 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin4), |
| 2601 host_settings[1].primary_pattern) | 2595 host_settings[1].primary_pattern) |
| 2602 << host_settings[1].primary_pattern.ToString(); | 2596 << host_settings[1].primary_pattern.ToString(); |
| 2603 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3), | 2597 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3), |
| 2604 host_settings[2].primary_pattern) | 2598 host_settings[2].primary_pattern) |
| 2605 << host_settings[2].primary_pattern.ToString(); | 2599 << host_settings[2].primary_pattern.ToString(); |
| 2606 } | 2600 } |
| 2607 | 2601 |
| 2608 TEST_F(BrowsingDataRemoverTest, ClearWithPredicate) { | |
| 2609 HostContentSettingsMap* host_content_settings_map = | |
| 2610 HostContentSettingsMapFactory::GetForProfile(GetProfile()); | |
| 2611 ContentSettingsForOneType host_settings; | |
| 2612 | |
| 2613 // Patterns with wildcards. | |
| 2614 ContentSettingsPattern pattern = | |
| 2615 ContentSettingsPattern::FromString("[*.]example.org"); | |
| 2616 ContentSettingsPattern pattern2 = | |
| 2617 ContentSettingsPattern::FromString("[*.]example.net"); | |
| 2618 | |
| 2619 // Patterns without wildcards. | |
| 2620 GURL url1("https://www.google.com/"); | |
| 2621 GURL url2("https://www.google.com/maps"); | |
| 2622 GURL url3("http://www.google.com/maps"); | |
| 2623 GURL url3_origin_only("http://www.google.com/"); | |
| 2624 | |
| 2625 host_content_settings_map->SetContentSettingCustomScope( | |
| 2626 pattern2, ContentSettingsPattern::Wildcard(), | |
| 2627 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), CONTENT_SETTING_BLOCK); | |
| 2628 host_content_settings_map->SetContentSettingCustomScope( | |
| 2629 pattern, ContentSettingsPattern::Wildcard(), | |
| 2630 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), CONTENT_SETTING_BLOCK); | |
| 2631 host_content_settings_map->SetWebsiteSettingCustomScope( | |
| 2632 pattern2, ContentSettingsPattern::Wildcard(), | |
| 2633 CONTENT_SETTINGS_TYPE_APP_BANNER, std::string(), | |
| 2634 base::WrapUnique(new base::DictionaryValue())); | |
| 2635 | |
| 2636 // First, test that we clear only COOKIES (not APP_BANNER), and pattern2. | |
| 2637 BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( | |
| 2638 host_content_settings_map, CONTENT_SETTINGS_TYPE_COOKIES, | |
| 2639 base::Bind(&MatchPrimaryPattern, pattern2)); | |
| 2640 host_content_settings_map->GetSettingsForOneType( | |
| 2641 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), &host_settings); | |
| 2642 // |host_settings| contains default & block. | |
| 2643 EXPECT_EQ(2U, host_settings.size()); | |
| 2644 EXPECT_EQ(pattern, host_settings[0].primary_pattern); | |
| 2645 EXPECT_EQ("*", host_settings[0].secondary_pattern.ToString()); | |
| 2646 EXPECT_EQ("*", host_settings[1].primary_pattern.ToString()); | |
| 2647 EXPECT_EQ("*", host_settings[1].secondary_pattern.ToString()); | |
| 2648 | |
| 2649 host_content_settings_map->GetSettingsForOneType( | |
| 2650 CONTENT_SETTINGS_TYPE_APP_BANNER, std::string(), &host_settings); | |
| 2651 // |host_settings| contains block. | |
| 2652 EXPECT_EQ(1U, host_settings.size()); | |
| 2653 EXPECT_EQ(pattern2, host_settings[0].primary_pattern); | |
| 2654 EXPECT_EQ("*", host_settings[0].secondary_pattern.ToString()); | |
| 2655 | |
| 2656 // Next, test that we do correct pattern matching w/ an origin policy item. | |
| 2657 // We verify that we have no settings stored. | |
| 2658 host_content_settings_map->GetSettingsForOneType( | |
| 2659 CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings); | |
| 2660 EXPECT_EQ(0u, host_settings.size()); | |
| 2661 // Add settings. | |
| 2662 host_content_settings_map->SetWebsiteSettingDefaultScope( | |
| 2663 url1, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), | |
| 2664 base::WrapUnique(new base::DictionaryValue())); | |
| 2665 // This setting should override the one above, as it's the same origin. | |
| 2666 host_content_settings_map->SetWebsiteSettingDefaultScope( | |
| 2667 url2, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), | |
| 2668 base::WrapUnique(new base::DictionaryValue())); | |
| 2669 host_content_settings_map->SetWebsiteSettingDefaultScope( | |
| 2670 url3, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), | |
| 2671 base::WrapUnique(new base::DictionaryValue())); | |
| 2672 // Verify we only have two. | |
| 2673 host_content_settings_map->GetSettingsForOneType( | |
| 2674 CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings); | |
| 2675 EXPECT_EQ(2u, host_settings.size()); | |
| 2676 | |
| 2677 // Clear the http one, which we should be able to do w/ the origin only, as | |
| 2678 // the scope of CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT is | |
| 2679 // REQUESTING_ORIGIN_ONLY_SCOPE. | |
| 2680 ContentSettingsPattern http_pattern = | |
| 2681 ContentSettingsPattern::FromURLNoWildcard(url3_origin_only); | |
| 2682 BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( | |
| 2683 host_content_settings_map, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, | |
| 2684 base::Bind(&MatchPrimaryPattern, http_pattern)); | |
| 2685 // Verify we only have one, and it's url1. | |
| 2686 host_content_settings_map->GetSettingsForOneType( | |
| 2687 CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings); | |
| 2688 EXPECT_EQ(1u, host_settings.size()); | |
| 2689 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(url1), | |
| 2690 host_settings[0].primary_pattern); | |
| 2691 } | |
| 2692 | |
| 2693 TEST_F(BrowsingDataRemoverTest, ClearPermissionPromptCounts) { | 2602 TEST_F(BrowsingDataRemoverTest, ClearPermissionPromptCounts) { |
| 2694 RemovePermissionPromptCountsTest tester(GetProfile()); | 2603 RemovePermissionPromptCountsTest tester(GetProfile()); |
| 2695 | 2604 |
| 2696 RegistrableDomainFilterBuilder filter_builder_1( | 2605 RegistrableDomainFilterBuilder filter_builder_1( |
| 2697 RegistrableDomainFilterBuilder::WHITELIST); | 2606 RegistrableDomainFilterBuilder::WHITELIST); |
| 2698 filter_builder_1.AddRegisterableDomain(kTestRegisterableDomain1); | 2607 filter_builder_1.AddRegisterableDomain(kTestRegisterableDomain1); |
| 2699 | 2608 |
| 2700 RegistrableDomainFilterBuilder filter_builder_2( | 2609 RegistrableDomainFilterBuilder filter_builder_2( |
| 2701 RegistrableDomainFilterBuilder::BLACKLIST); | 2610 RegistrableDomainFilterBuilder::BLACKLIST); |
| 2702 filter_builder_2.AddRegisterableDomain(kTestRegisterableDomain1); | 2611 filter_builder_2.AddRegisterableDomain(kTestRegisterableDomain1); |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3013 EXPECT_TRUE(remover->is_removing()); | 2922 EXPECT_TRUE(remover->is_removing()); |
| 3014 | 2923 |
| 3015 // Add one more deletion and wait for it. | 2924 // Add one more deletion and wait for it. |
| 3016 BlockUntilBrowsingDataRemoved( | 2925 BlockUntilBrowsingDataRemoved( |
| 3017 browsing_data::ALL_TIME, | 2926 browsing_data::ALL_TIME, |
| 3018 BrowsingDataRemover::REMOVE_COOKIES, | 2927 BrowsingDataRemover::REMOVE_COOKIES, |
| 3019 BrowsingDataHelper::UNPROTECTED_WEB); | 2928 BrowsingDataHelper::UNPROTECTED_WEB); |
| 3020 | 2929 |
| 3021 EXPECT_FALSE(remover->is_removing()); | 2930 EXPECT_FALSE(remover->is_removing()); |
| 3022 } | 2931 } |
| OLD | NEW |