| 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 <memory> | 10 #include <memory> |
| (...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 DISALLOW_COPY_AND_ASSIGN(RemovePasswordsTester); | 1018 DISALLOW_COPY_AND_ASSIGN(RemovePasswordsTester); |
| 1019 }; | 1019 }; |
| 1020 | 1020 |
| 1021 // Test Class ---------------------------------------------------------------- | 1021 // Test Class ---------------------------------------------------------------- |
| 1022 | 1022 |
| 1023 class BrowsingDataRemoverTest : public testing::Test { | 1023 class BrowsingDataRemoverTest : public testing::Test { |
| 1024 public: | 1024 public: |
| 1025 BrowsingDataRemoverTest() | 1025 BrowsingDataRemoverTest() |
| 1026 : profile_(new TestingProfile()), | 1026 : profile_(new TestingProfile()), |
| 1027 clear_domain_reliability_tester_(GetProfile()) { | 1027 clear_domain_reliability_tester_(GetProfile()) { |
| 1028 callback_subscription_ = | 1028 remover_ = |
| 1029 BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( | 1029 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); |
| 1030 base::Bind(&BrowsingDataRemoverTest::NotifyWithDetails, | |
| 1031 base::Unretained(this))); | |
| 1032 | 1030 |
| 1033 #if BUILDFLAG(ANDROID_JAVA_UI) | 1031 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 1034 BrowsingDataRemover* remover = | 1032 remover_->OverrideWebappRegistryForTesting( |
| 1035 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); | |
| 1036 remover->OverrideWebappRegistryForTesting( | |
| 1037 std::unique_ptr<WebappRegistry>(new TestWebappRegistry())); | 1033 std::unique_ptr<WebappRegistry>(new TestWebappRegistry())); |
| 1038 #endif | 1034 #endif |
| 1039 } | 1035 } |
| 1040 | 1036 |
| 1041 ~BrowsingDataRemoverTest() override {} | 1037 ~BrowsingDataRemoverTest() override {} |
| 1042 | 1038 |
| 1043 void TearDown() override { | 1039 void TearDown() override { |
| 1044 #if defined(ENABLE_EXTENSIONS) | 1040 #if defined(ENABLE_EXTENSIONS) |
| 1045 mock_policy_ = nullptr; | 1041 mock_policy_ = nullptr; |
| 1046 #endif | 1042 #endif |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1058 | 1054 |
| 1059 void BlockUntilBrowsingDataRemoved(browsing_data::TimePeriod period, | 1055 void BlockUntilBrowsingDataRemoved(browsing_data::TimePeriod period, |
| 1060 int remove_mask, | 1056 int remove_mask, |
| 1061 bool include_protected_origins) { | 1057 bool include_protected_origins) { |
| 1062 BrowsingDataRemover* remover = | 1058 BrowsingDataRemover* remover = |
| 1063 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); | 1059 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); |
| 1064 | 1060 |
| 1065 TestStoragePartition storage_partition; | 1061 TestStoragePartition storage_partition; |
| 1066 remover->OverrideStoragePartitionForTesting(&storage_partition); | 1062 remover->OverrideStoragePartitionForTesting(&storage_partition); |
| 1067 | 1063 |
| 1068 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | |
| 1069 | |
| 1070 int origin_type_mask = BrowsingDataHelper::UNPROTECTED_WEB; | 1064 int origin_type_mask = BrowsingDataHelper::UNPROTECTED_WEB; |
| 1071 if (include_protected_origins) | 1065 if (include_protected_origins) |
| 1072 origin_type_mask |= BrowsingDataHelper::PROTECTED_WEB; | 1066 origin_type_mask |= BrowsingDataHelper::PROTECTED_WEB; |
| 1073 | 1067 |
| 1074 BrowsingDataRemoverCompletionObserver completion_observer(remover); | 1068 BrowsingDataRemoverCompletionObserver completion_observer(remover); |
| 1075 remover->Remove(BrowsingDataRemover::Period(period), remove_mask, | 1069 remover->Remove(BrowsingDataRemover::Period(period), remove_mask, |
| 1076 origin_type_mask); | 1070 origin_type_mask); |
| 1077 completion_observer.BlockUntilCompletion(); | 1071 completion_observer.BlockUntilCompletion(); |
| 1078 | 1072 |
| 1079 // Save so we can verify later. | 1073 // Save so we can verify later. |
| 1080 storage_partition_removal_data_ = | 1074 storage_partition_removal_data_ = |
| 1081 storage_partition.GetStoragePartitionRemovalData(); | 1075 storage_partition.GetStoragePartitionRemovalData(); |
| 1082 } | 1076 } |
| 1083 | 1077 |
| 1084 void BlockUntilOriginDataRemoved( | 1078 void BlockUntilOriginDataRemoved( |
| 1085 browsing_data::TimePeriod period, | 1079 browsing_data::TimePeriod period, |
| 1086 int remove_mask, | 1080 int remove_mask, |
| 1087 const BrowsingDataFilterBuilder& filter_builder) { | 1081 const BrowsingDataFilterBuilder& filter_builder) { |
| 1088 BrowsingDataRemover* remover = | 1082 BrowsingDataRemover* remover = |
| 1089 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); | 1083 BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); |
| 1090 TestStoragePartition storage_partition; | 1084 TestStoragePartition storage_partition; |
| 1091 remover->OverrideStoragePartitionForTesting(&storage_partition); | 1085 remover->OverrideStoragePartitionForTesting(&storage_partition); |
| 1092 | 1086 |
| 1093 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | |
| 1094 | |
| 1095 BrowsingDataRemoverCompletionObserver completion_observer(remover); | 1087 BrowsingDataRemoverCompletionObserver completion_observer(remover); |
| 1096 remover->RemoveImpl(BrowsingDataRemover::Period(period), remove_mask, | 1088 remover->RemoveImpl(BrowsingDataRemover::Period(period), remove_mask, |
| 1097 filter_builder, BrowsingDataHelper::UNPROTECTED_WEB); | 1089 filter_builder, BrowsingDataHelper::UNPROTECTED_WEB); |
| 1098 completion_observer.BlockUntilCompletion(); | 1090 completion_observer.BlockUntilCompletion(); |
| 1099 | 1091 |
| 1100 // Save so we can verify later. | 1092 // Save so we can verify later. |
| 1101 storage_partition_removal_data_ = | 1093 storage_partition_removal_data_ = |
| 1102 storage_partition.GetStoragePartitionRemovalData(); | 1094 storage_partition.GetStoragePartitionRemovalData(); |
| 1103 } | 1095 } |
| 1104 | 1096 |
| 1105 TestingProfile* GetProfile() { | 1097 TestingProfile* GetProfile() { |
| 1106 return profile_.get(); | 1098 return profile_.get(); |
| 1107 } | 1099 } |
| 1108 | 1100 |
| 1109 void DestroyProfile() { profile_.reset(); } | 1101 void DestroyProfile() { profile_.reset(); } |
| 1110 | 1102 |
| 1111 base::Time GetBeginTime() { | 1103 const base::Time& GetBeginTime() { |
| 1112 return called_with_details_->removal_begin; | 1104 return remover_->GetLastUsedBeginTime(); |
| 1113 } | 1105 } |
| 1114 | 1106 |
| 1115 int GetRemovalMask() { | 1107 int GetRemovalMask() { |
| 1116 return called_with_details_->removal_mask; | 1108 return remover_->GetLastUsedRemovalMask(); |
| 1117 } | 1109 } |
| 1118 | 1110 |
| 1119 int GetOriginTypeMask() { | 1111 int GetOriginTypeMask() { |
| 1120 return called_with_details_->origin_type_mask; | 1112 return remover_->GetLastUsedOriginTypeMask(); |
| 1121 } | 1113 } |
| 1122 | 1114 |
| 1123 StoragePartitionRemovalData GetStoragePartitionRemovalData() { | 1115 StoragePartitionRemovalData GetStoragePartitionRemovalData() { |
| 1124 return storage_partition_removal_data_; | 1116 return storage_partition_removal_data_; |
| 1125 } | 1117 } |
| 1126 | 1118 |
| 1127 // Callback for browsing data removal events. | |
| 1128 void NotifyWithDetails( | |
| 1129 const BrowsingDataRemover::NotificationDetails& details) { | |
| 1130 // We're not taking ownership of the details object, but storing a copy of | |
| 1131 // it locally. | |
| 1132 called_with_details_.reset( | |
| 1133 new BrowsingDataRemover::NotificationDetails(details)); | |
| 1134 | |
| 1135 callback_subscription_.reset(); | |
| 1136 } | |
| 1137 | |
| 1138 MockExtensionSpecialStoragePolicy* CreateMockPolicy() { | 1119 MockExtensionSpecialStoragePolicy* CreateMockPolicy() { |
| 1139 #if defined(ENABLE_EXTENSIONS) | 1120 #if defined(ENABLE_EXTENSIONS) |
| 1140 mock_policy_ = new MockExtensionSpecialStoragePolicy; | 1121 mock_policy_ = new MockExtensionSpecialStoragePolicy; |
| 1141 return mock_policy_.get(); | 1122 return mock_policy_.get(); |
| 1142 #else | 1123 #else |
| 1143 NOTREACHED(); | 1124 NOTREACHED(); |
| 1144 return nullptr; | 1125 return nullptr; |
| 1145 #endif | 1126 #endif |
| 1146 } | 1127 } |
| 1147 | 1128 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1160 return false; | 1141 return false; |
| 1161 #else | 1142 #else |
| 1162 return true; | 1143 return true; |
| 1163 #endif | 1144 #endif |
| 1164 } | 1145 } |
| 1165 | 1146 |
| 1166 const ClearDomainReliabilityTester& clear_domain_reliability_tester() { | 1147 const ClearDomainReliabilityTester& clear_domain_reliability_tester() { |
| 1167 return clear_domain_reliability_tester_; | 1148 return clear_domain_reliability_tester_; |
| 1168 } | 1149 } |
| 1169 | 1150 |
| 1170 protected: | 1151 private: |
| 1171 std::unique_ptr<BrowsingDataRemover::NotificationDetails> | 1152 // Cached pointer to BrowsingDataRemover for access to testing methods. |
| 1172 called_with_details_; | 1153 BrowsingDataRemover* remover_; |
| 1173 | 1154 |
| 1174 private: | |
| 1175 content::TestBrowserThreadBundle thread_bundle_; | 1155 content::TestBrowserThreadBundle thread_bundle_; |
| 1176 std::unique_ptr<TestingProfile> profile_; | 1156 std::unique_ptr<TestingProfile> profile_; |
| 1177 | 1157 |
| 1178 StoragePartitionRemovalData storage_partition_removal_data_; | 1158 StoragePartitionRemovalData storage_partition_removal_data_; |
| 1179 | 1159 |
| 1180 #if defined(ENABLE_EXTENSIONS) | 1160 #if defined(ENABLE_EXTENSIONS) |
| 1181 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy_; | 1161 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy_; |
| 1182 #endif | 1162 #endif |
| 1183 | 1163 |
| 1184 BrowsingDataRemover::CallbackSubscription callback_subscription_; | |
| 1185 | |
| 1186 // Needed to mock out DomainReliabilityService, even for unrelated tests. | 1164 // Needed to mock out DomainReliabilityService, even for unrelated tests. |
| 1187 ClearDomainReliabilityTester clear_domain_reliability_tester_; | 1165 ClearDomainReliabilityTester clear_domain_reliability_tester_; |
| 1188 | 1166 |
| 1189 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); | 1167 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); |
| 1190 }; | 1168 }; |
| 1191 | 1169 |
| 1192 // Tests --------------------------------------------------------------------- | 1170 // Tests --------------------------------------------------------------------- |
| 1193 | 1171 |
| 1194 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { | 1172 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { |
| 1195 BlockUntilBrowsingDataRemoved(browsing_data::EVERYTHING, | 1173 BlockUntilBrowsingDataRemoved(browsing_data::EVERYTHING, |
| (...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2167 BlockUntilBrowsingDataRemoved(browsing_data::LAST_HOUR, | 2145 BlockUntilBrowsingDataRemoved(browsing_data::LAST_HOUR, |
| 2168 BrowsingDataRemover::REMOVE_HISTORY, false); | 2146 BrowsingDataRemover::REMOVE_HISTORY, false); |
| 2169 | 2147 |
| 2170 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); | 2148 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); |
| 2171 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask()); | 2149 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask()); |
| 2172 EXPECT_TRUE(tester.HasOrigin(std::string())); | 2150 EXPECT_TRUE(tester.HasOrigin(std::string())); |
| 2173 EXPECT_FALSE(tester.HasOrigin(kWebOrigin)); | 2151 EXPECT_FALSE(tester.HasOrigin(kWebOrigin)); |
| 2174 EXPECT_TRUE(tester.HasOrigin(autofill::kSettingsOrigin)); | 2152 EXPECT_TRUE(tester.HasOrigin(autofill::kSettingsOrigin)); |
| 2175 } | 2153 } |
| 2176 | 2154 |
| 2155 class InspectableCompletionObserver |
| 2156 : public BrowsingDataRemoverCompletionObserver { |
| 2157 public: |
| 2158 explicit InspectableCompletionObserver(BrowsingDataRemover* remover) |
| 2159 : BrowsingDataRemoverCompletionObserver(remover) {} |
| 2160 ~InspectableCompletionObserver() override {} |
| 2161 |
| 2162 bool called() { return called_; } |
| 2163 |
| 2164 protected: |
| 2165 void OnBrowsingDataRemoverDone() override { |
| 2166 BrowsingDataRemoverCompletionObserver::OnBrowsingDataRemoverDone(); |
| 2167 called_ = true; |
| 2168 } |
| 2169 |
| 2170 private: |
| 2171 bool called_ = false; |
| 2172 }; |
| 2173 |
| 2177 TEST_F(BrowsingDataRemoverTest, CompletionInhibition) { | 2174 TEST_F(BrowsingDataRemoverTest, CompletionInhibition) { |
| 2178 // The |completion_inhibitor| on the stack should prevent removal sessions | 2175 // The |completion_inhibitor| on the stack should prevent removal sessions |
| 2179 // from completing until after ContinueToCompletion() is called. | 2176 // from completing until after ContinueToCompletion() is called. |
| 2180 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; | 2177 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; |
| 2181 | 2178 |
| 2182 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | |
| 2183 | |
| 2184 BrowsingDataRemover* remover = | 2179 BrowsingDataRemover* remover = |
| 2185 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); | 2180 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); |
| 2181 InspectableCompletionObserver completion_observer(remover); |
| 2186 remover->Remove(BrowsingDataRemover::Unbounded(), | 2182 remover->Remove(BrowsingDataRemover::Unbounded(), |
| 2187 BrowsingDataRemover::REMOVE_HISTORY, | 2183 BrowsingDataRemover::REMOVE_HISTORY, |
| 2188 BrowsingDataHelper::UNPROTECTED_WEB); | 2184 BrowsingDataHelper::UNPROTECTED_WEB); |
| 2189 | 2185 |
| 2190 // Process messages until the inhibitor is notified, and then some, to make | 2186 // Process messages until the inhibitor is notified, and then some, to make |
| 2191 // sure we do not complete asynchronously before ContinueToCompletion() is | 2187 // sure we do not complete asynchronously before ContinueToCompletion() is |
| 2192 // called. | 2188 // called. |
| 2193 completion_inhibitor.BlockUntilNearCompletion(); | 2189 completion_inhibitor.BlockUntilNearCompletion(); |
| 2194 base::RunLoop().RunUntilIdle(); | 2190 base::RunLoop().RunUntilIdle(); |
| 2195 | 2191 |
| 2196 // Verify that the completion notification has not yet been broadcasted. | 2192 // Verify that the removal has not yet been completed and the observer has |
| 2197 EXPECT_EQ(-1, GetRemovalMask()); | 2193 // not been called. |
| 2198 EXPECT_EQ(-1, GetOriginTypeMask()); | 2194 EXPECT_TRUE(remover->is_removing()); |
| 2195 EXPECT_FALSE(completion_observer.called()); |
| 2199 | 2196 |
| 2200 // Now run the removal process until completion, and verify that observers are | 2197 // Now run the removal process until completion, and verify that observers are |
| 2201 // now notified, and the notifications is sent out. | 2198 // now notified, and the notifications is sent out. |
| 2202 BrowsingDataRemoverCompletionObserver completion_observer(remover); | |
| 2203 completion_inhibitor.ContinueToCompletion(); | 2199 completion_inhibitor.ContinueToCompletion(); |
| 2204 completion_observer.BlockUntilCompletion(); | 2200 completion_observer.BlockUntilCompletion(); |
| 2205 | 2201 |
| 2206 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); | 2202 EXPECT_FALSE(remover->is_removing()); |
| 2207 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask()); | 2203 EXPECT_TRUE(completion_observer.called()); |
| 2208 } | 2204 } |
| 2209 | 2205 |
| 2210 TEST_F(BrowsingDataRemoverTest, EarlyShutdown) { | 2206 TEST_F(BrowsingDataRemoverTest, EarlyShutdown) { |
| 2211 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | |
| 2212 | |
| 2213 BrowsingDataRemover* remover = | 2207 BrowsingDataRemover* remover = |
| 2214 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); | 2208 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); |
| 2215 BrowsingDataRemoverCompletionObserver completion_observer(remover); | 2209 InspectableCompletionObserver completion_observer(remover); |
| 2216 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; | 2210 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; |
| 2217 remover->Remove(BrowsingDataRemover::Unbounded(), | 2211 remover->Remove(BrowsingDataRemover::Unbounded(), |
| 2218 BrowsingDataRemover::REMOVE_HISTORY, | 2212 BrowsingDataRemover::REMOVE_HISTORY, |
| 2219 BrowsingDataHelper::UNPROTECTED_WEB); | 2213 BrowsingDataHelper::UNPROTECTED_WEB); |
| 2220 | 2214 |
| 2221 completion_inhibitor.BlockUntilNearCompletion(); | 2215 completion_inhibitor.BlockUntilNearCompletion(); |
| 2222 | 2216 |
| 2223 // Verify that the completion notification has not yet been broadcasted. | 2217 // Verify that the deletion has not yet been completed and the observer has |
| 2224 EXPECT_EQ(-1, GetRemovalMask()); | 2218 // not been called. |
| 2225 EXPECT_EQ(-1, GetOriginTypeMask()); | 2219 EXPECT_TRUE(remover->is_removing()); |
| 2220 EXPECT_FALSE(completion_observer.called()); |
| 2226 | 2221 |
| 2227 // Destroying the profile should trigger the notification. | 2222 // Destroying the profile should trigger the notification. |
| 2228 DestroyProfile(); | 2223 DestroyProfile(); |
| 2229 | 2224 |
| 2230 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); | 2225 EXPECT_TRUE(completion_observer.called()); |
| 2231 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask()); | |
| 2232 | 2226 |
| 2233 // Finishing after shutdown shouldn't break anything. | 2227 // Finishing after shutdown shouldn't break anything. |
| 2234 completion_inhibitor.ContinueToCompletion(); | 2228 completion_inhibitor.ContinueToCompletion(); |
| 2235 completion_observer.BlockUntilCompletion(); | 2229 completion_observer.BlockUntilCompletion(); |
| 2236 } | 2230 } |
| 2237 | 2231 |
| 2238 TEST_F(BrowsingDataRemoverTest, ZeroSuggestCacheClear) { | 2232 TEST_F(BrowsingDataRemoverTest, ZeroSuggestCacheClear) { |
| 2239 PrefService* prefs = GetProfile()->GetPrefs(); | 2233 PrefService* prefs = GetProfile()->GetPrefs(); |
| 2240 prefs->SetString(omnibox::kZeroSuggestCachedResults, | 2234 prefs->SetString(omnibox::kZeroSuggestCachedResults, |
| 2241 "[\"\", [\"foo\", \"bar\"]]"); | 2235 "[\"\", [\"foo\", \"bar\"]]"); |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2591 BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( | 2585 BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( |
| 2592 host_content_settings_map, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, | 2586 host_content_settings_map, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, |
| 2593 base::Bind(&MatchPrimaryPattern, http_pattern)); | 2587 base::Bind(&MatchPrimaryPattern, http_pattern)); |
| 2594 // Verify we only have one, and it's url1. | 2588 // Verify we only have one, and it's url1. |
| 2595 host_content_settings_map->GetSettingsForOneType( | 2589 host_content_settings_map->GetSettingsForOneType( |
| 2596 CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings); | 2590 CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings); |
| 2597 EXPECT_EQ(1u, host_settings.size()); | 2591 EXPECT_EQ(1u, host_settings.size()); |
| 2598 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(url1), | 2592 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(url1), |
| 2599 host_settings[0].primary_pattern); | 2593 host_settings[0].primary_pattern); |
| 2600 } | 2594 } |
| OLD | NEW |