| 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 "components/content_settings/core/browser/content_settings_pref_provide
r.h" | 5 #include "components/content_settings/core/browser/content_settings_pref_provide
r.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 content::TestBrowserThreadBundle thread_bundle_; | 111 content::TestBrowserThreadBundle thread_bundle_; |
| 112 }; | 112 }; |
| 113 | 113 |
| 114 TEST_F(PrefProviderTest, Observer) { | 114 TEST_F(PrefProviderTest, Observer) { |
| 115 TestingProfile profile; | 115 TestingProfile profile; |
| 116 PrefProvider pref_content_settings_provider(profile.GetPrefs(), false); | 116 PrefProvider pref_content_settings_provider(profile.GetPrefs(), false); |
| 117 | 117 |
| 118 ContentSettingsPattern pattern = | 118 ContentSettingsPattern pattern = |
| 119 ContentSettingsPattern::FromString("[*.]example.com"); | 119 ContentSettingsPattern::FromString("[*.]example.com"); |
| 120 MockObserver mock_observer; | 120 MockObserver mock_observer; |
| 121 EXPECT_CALL(mock_observer, | 121 EXPECT_CALL(mock_observer, OnContentSettingChanged( |
| 122 OnContentSettingChanged(pattern, | 122 pattern, ContentSettingsPattern::Wildcard(), |
| 123 ContentSettingsPattern::Wildcard(), | 123 CONTENT_SETTINGS_TYPE_COOKIES, "")); |
| 124 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 125 "")); | |
| 126 | 124 |
| 127 pref_content_settings_provider.AddObserver(&mock_observer); | 125 pref_content_settings_provider.AddObserver(&mock_observer); |
| 128 | 126 |
| 129 pref_content_settings_provider.SetWebsiteSetting( | 127 pref_content_settings_provider.SetWebsiteSetting( |
| 130 pattern, | 128 pattern, ContentSettingsPattern::Wildcard(), |
| 131 ContentSettingsPattern::Wildcard(), | 129 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 132 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 133 std::string(), | |
| 134 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); | 130 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); |
| 135 | 131 |
| 136 pref_content_settings_provider.ShutdownOnUIThread(); | 132 pref_content_settings_provider.ShutdownOnUIThread(); |
| 137 } | 133 } |
| 138 | 134 |
| 139 // Test for regression in which the PrefProvider modified the user pref store | 135 // Test for regression in which the PrefProvider modified the user pref store |
| 140 // of the OTR unintentionally: http://crbug.com/74466. | 136 // of the OTR unintentionally: http://crbug.com/74466. |
| 141 TEST_F(PrefProviderTest, Incognito) { | 137 TEST_F(PrefProviderTest, Incognito) { |
| 142 PersistentPrefStore* user_prefs = new TestingPrefStore(); | 138 PersistentPrefStore* user_prefs = new TestingPrefStore(); |
| 143 OverlayUserPrefStore* otr_user_prefs = | 139 OverlayUserPrefStore* otr_user_prefs = |
| (...skipping 23 matching lines...) Expand all Loading... |
| 167 | 163 |
| 168 TestingProfile::Builder otr_profile_builder; | 164 TestingProfile::Builder otr_profile_builder; |
| 169 otr_profile_builder.SetPrefService(base::WrapUnique(otr_prefs)); | 165 otr_profile_builder.SetPrefService(base::WrapUnique(otr_prefs)); |
| 170 otr_profile_builder.BuildIncognito(profile.get()); | 166 otr_profile_builder.BuildIncognito(profile.get()); |
| 171 | 167 |
| 172 PrefProvider pref_content_settings_provider(regular_prefs, false); | 168 PrefProvider pref_content_settings_provider(regular_prefs, false); |
| 173 PrefProvider pref_content_settings_provider_incognito(otr_prefs, true); | 169 PrefProvider pref_content_settings_provider_incognito(otr_prefs, true); |
| 174 ContentSettingsPattern pattern = | 170 ContentSettingsPattern pattern = |
| 175 ContentSettingsPattern::FromString("[*.]example.com"); | 171 ContentSettingsPattern::FromString("[*.]example.com"); |
| 176 pref_content_settings_provider.SetWebsiteSetting( | 172 pref_content_settings_provider.SetWebsiteSetting( |
| 177 pattern, | 173 pattern, pattern, CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 178 pattern, | |
| 179 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 180 std::string(), | |
| 181 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); | 174 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); |
| 182 | 175 |
| 183 GURL host("http://example.com/"); | 176 GURL host("http://example.com/"); |
| 184 // The value should of course be visible in the regular PrefProvider. | 177 // The value should of course be visible in the regular PrefProvider. |
| 185 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 178 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 186 TestUtils::GetContentSetting(&pref_content_settings_provider, host, | 179 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 187 host, CONTENT_SETTINGS_TYPE_IMAGES, | 180 host, CONTENT_SETTINGS_TYPE_COOKIES, |
| 188 std::string(), false)); | 181 std::string(), false)); |
| 189 // And also in the OTR version. | 182 // And also in the OTR version. |
| 190 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 183 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 191 TestUtils::GetContentSetting( | 184 TestUtils::GetContentSetting( |
| 192 &pref_content_settings_provider_incognito, host, host, | 185 &pref_content_settings_provider_incognito, host, host, |
| 193 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); | 186 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false)); |
| 194 const WebsiteSettingsInfo* info = | 187 const WebsiteSettingsInfo* info = WebsiteSettingsRegistry::GetInstance()->Get( |
| 195 WebsiteSettingsRegistry::GetInstance()->Get(CONTENT_SETTINGS_TYPE_IMAGES); | 188 CONTENT_SETTINGS_TYPE_COOKIES); |
| 196 // But the value should not be overridden in the OTR user prefs accidentally. | 189 // But the value should not be overridden in the OTR user prefs accidentally. |
| 197 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(info->pref_name())); | 190 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(info->pref_name())); |
| 198 | 191 |
| 199 pref_content_settings_provider.ShutdownOnUIThread(); | 192 pref_content_settings_provider.ShutdownOnUIThread(); |
| 200 pref_content_settings_provider_incognito.ShutdownOnUIThread(); | 193 pref_content_settings_provider_incognito.ShutdownOnUIThread(); |
| 201 } | 194 } |
| 202 | 195 |
| 203 TEST_F(PrefProviderTest, GetContentSettingsValue) { | 196 TEST_F(PrefProviderTest, GetContentSettingsValue) { |
| 204 TestingProfile testing_profile; | 197 TestingProfile testing_profile; |
| 205 PrefProvider provider(testing_profile.GetPrefs(), false); | 198 PrefProvider provider(testing_profile.GetPrefs(), false); |
| 206 | 199 |
| 207 GURL primary_url("http://example.com/"); | 200 GURL primary_url("http://example.com/"); |
| 208 ContentSettingsPattern primary_pattern = | 201 ContentSettingsPattern primary_pattern = |
| 209 ContentSettingsPattern::FromString("[*.]example.com"); | 202 ContentSettingsPattern::FromString("[*.]example.com"); |
| 210 | 203 |
| 211 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 204 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 212 TestUtils::GetContentSetting(&provider, primary_url, primary_url, | 205 TestUtils::GetContentSetting(&provider, primary_url, primary_url, |
| 213 CONTENT_SETTINGS_TYPE_IMAGES, | 206 CONTENT_SETTINGS_TYPE_COOKIES, |
| 214 std::string(), false)); | 207 std::string(), false)); |
| 215 | 208 |
| 216 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( | 209 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( |
| 217 &provider, primary_url, primary_url, | 210 &provider, primary_url, primary_url, |
| 218 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); | 211 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false)); |
| 219 | 212 |
| 220 provider.SetWebsiteSetting(primary_pattern, | 213 provider.SetWebsiteSetting(primary_pattern, primary_pattern, |
| 221 primary_pattern, | 214 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 222 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 223 std::string(), | |
| 224 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 215 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 225 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 216 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 226 TestUtils::GetContentSetting(&provider, primary_url, primary_url, | 217 TestUtils::GetContentSetting(&provider, primary_url, primary_url, |
| 227 CONTENT_SETTINGS_TYPE_IMAGES, | 218 CONTENT_SETTINGS_TYPE_COOKIES, |
| 228 std::string(), false)); | 219 std::string(), false)); |
| 229 std::unique_ptr<base::Value> value_ptr(TestUtils::GetContentSettingValue( | 220 std::unique_ptr<base::Value> value_ptr(TestUtils::GetContentSettingValue( |
| 230 &provider, primary_url, primary_url, CONTENT_SETTINGS_TYPE_IMAGES, | 221 &provider, primary_url, primary_url, CONTENT_SETTINGS_TYPE_COOKIES, |
| 231 std::string(), false)); | 222 std::string(), false)); |
| 232 int int_value = -1; | 223 int int_value = -1; |
| 233 value_ptr->GetAsInteger(&int_value); | 224 value_ptr->GetAsInteger(&int_value); |
| 234 EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value)); | 225 EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value)); |
| 235 | 226 |
| 236 provider.SetWebsiteSetting(primary_pattern, | 227 provider.SetWebsiteSetting(primary_pattern, primary_pattern, |
| 237 primary_pattern, | 228 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 238 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 239 std::string(), | |
| 240 NULL); | 229 NULL); |
| 241 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( | 230 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( |
| 242 &provider, primary_url, primary_url, | 231 &provider, primary_url, primary_url, |
| 243 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); | 232 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false)); |
| 244 provider.ShutdownOnUIThread(); | 233 provider.ShutdownOnUIThread(); |
| 245 } | 234 } |
| 246 | 235 |
| 247 TEST_F(PrefProviderTest, Patterns) { | 236 TEST_F(PrefProviderTest, Patterns) { |
| 248 TestingProfile testing_profile; | 237 TestingProfile testing_profile; |
| 249 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), | 238 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), |
| 250 false); | 239 false); |
| 251 | 240 |
| 252 GURL host1("http://example.com/"); | 241 GURL host1("http://example.com/"); |
| 253 GURL host2("http://www.example.com/"); | 242 GURL host2("http://www.example.com/"); |
| 254 GURL host3("http://example.org/"); | 243 GURL host3("http://example.org/"); |
| 255 GURL host4("file:///tmp/test.html"); | 244 GURL host4("file:///tmp/test.html"); |
| 256 ContentSettingsPattern pattern1 = | 245 ContentSettingsPattern pattern1 = |
| 257 ContentSettingsPattern::FromString("[*.]example.com"); | 246 ContentSettingsPattern::FromString("[*.]example.com"); |
| 258 ContentSettingsPattern pattern2 = | 247 ContentSettingsPattern pattern2 = |
| 259 ContentSettingsPattern::FromString("example.org"); | 248 ContentSettingsPattern::FromString("example.org"); |
| 260 ContentSettingsPattern pattern3 = | 249 ContentSettingsPattern pattern3 = |
| 261 ContentSettingsPattern::FromString("file:///tmp/test.html"); | 250 ContentSettingsPattern::FromString("file:///tmp/test.html"); |
| 262 | 251 |
| 263 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 252 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 264 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, | 253 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, |
| 265 host1, CONTENT_SETTINGS_TYPE_IMAGES, | 254 host1, CONTENT_SETTINGS_TYPE_COOKIES, |
| 266 std::string(), false)); | 255 std::string(), false)); |
| 267 pref_content_settings_provider.SetWebsiteSetting( | 256 pref_content_settings_provider.SetWebsiteSetting( |
| 268 pattern1, | 257 pattern1, pattern1, CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 269 pattern1, | |
| 270 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 271 std::string(), | |
| 272 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 258 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 273 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 259 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 274 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, | 260 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, |
| 275 host1, CONTENT_SETTINGS_TYPE_IMAGES, | 261 host1, CONTENT_SETTINGS_TYPE_COOKIES, |
| 276 std::string(), false)); | 262 std::string(), false)); |
| 277 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 263 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 278 TestUtils::GetContentSetting(&pref_content_settings_provider, host2, | 264 TestUtils::GetContentSetting(&pref_content_settings_provider, host2, |
| 279 host2, CONTENT_SETTINGS_TYPE_IMAGES, | 265 host2, CONTENT_SETTINGS_TYPE_COOKIES, |
| 280 std::string(), false)); | 266 std::string(), false)); |
| 281 | 267 |
| 282 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 268 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 283 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, | 269 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, |
| 284 host3, CONTENT_SETTINGS_TYPE_IMAGES, | 270 host3, CONTENT_SETTINGS_TYPE_COOKIES, |
| 285 std::string(), false)); | 271 std::string(), false)); |
| 286 pref_content_settings_provider.SetWebsiteSetting( | 272 pref_content_settings_provider.SetWebsiteSetting( |
| 287 pattern2, | 273 pattern2, pattern2, CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 288 pattern2, | |
| 289 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 290 std::string(), | |
| 291 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 274 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 292 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 275 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 293 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, | 276 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, |
| 294 host3, CONTENT_SETTINGS_TYPE_IMAGES, | 277 host3, CONTENT_SETTINGS_TYPE_COOKIES, |
| 295 std::string(), false)); | 278 std::string(), false)); |
| 296 | 279 |
| 297 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 280 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 298 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, | 281 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, |
| 299 host4, CONTENT_SETTINGS_TYPE_IMAGES, | 282 host4, CONTENT_SETTINGS_TYPE_COOKIES, |
| 300 std::string(), false)); | 283 std::string(), false)); |
| 301 pref_content_settings_provider.SetWebsiteSetting( | 284 pref_content_settings_provider.SetWebsiteSetting( |
| 302 pattern3, | 285 pattern3, pattern3, CONTENT_SETTINGS_TYPE_COOKIES, std::string(), |
| 303 pattern3, | |
| 304 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 305 std::string(), | |
| 306 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 286 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 307 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 287 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 308 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, | 288 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, |
| 309 host4, CONTENT_SETTINGS_TYPE_IMAGES, | 289 host4, CONTENT_SETTINGS_TYPE_COOKIES, |
| 310 std::string(), false)); | 290 std::string(), false)); |
| 311 | 291 |
| 312 pref_content_settings_provider.ShutdownOnUIThread(); | 292 pref_content_settings_provider.ShutdownOnUIThread(); |
| 313 } | 293 } |
| 314 | 294 |
| 295 #if defined(ENABLE_PLUGINS) |
| 315 TEST_F(PrefProviderTest, ResourceIdentifier) { | 296 TEST_F(PrefProviderTest, ResourceIdentifier) { |
| 316 TestingProfile testing_profile; | 297 TestingProfile testing_profile; |
| 317 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), | 298 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), |
| 318 false); | 299 false); |
| 319 | 300 |
| 320 GURL host("http://example.com/"); | 301 GURL host("http://example.com/"); |
| 321 ContentSettingsPattern pattern = | 302 ContentSettingsPattern pattern = |
| 322 ContentSettingsPattern::FromString("[*.]example.com"); | 303 ContentSettingsPattern::FromString("[*.]example.com"); |
| 323 std::string resource1("someplugin"); | 304 std::string resource1("someplugin"); |
| 324 std::string resource2("otherplugin"); | 305 std::string resource2("otherplugin"); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 337 TestUtils::GetContentSetting(&pref_content_settings_provider, host, | 318 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 338 host, CONTENT_SETTINGS_TYPE_PLUGINS, | 319 host, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 339 resource1, false)); | 320 resource1, false)); |
| 340 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 321 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 341 TestUtils::GetContentSetting(&pref_content_settings_provider, host, | 322 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 342 host, CONTENT_SETTINGS_TYPE_PLUGINS, | 323 host, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 343 resource2, false)); | 324 resource2, false)); |
| 344 | 325 |
| 345 pref_content_settings_provider.ShutdownOnUIThread(); | 326 pref_content_settings_provider.ShutdownOnUIThread(); |
| 346 } | 327 } |
| 328 #endif |
| 347 | 329 |
| 348 // http://crosbug.com/17760 | 330 // http://crosbug.com/17760 |
| 349 TEST_F(PrefProviderTest, Deadlock) { | 331 TEST_F(PrefProviderTest, Deadlock) { |
| 350 syncable_prefs::TestingPrefServiceSyncable prefs; | 332 syncable_prefs::TestingPrefServiceSyncable prefs; |
| 351 PrefProvider::RegisterProfilePrefs(prefs.registry()); | 333 PrefProvider::RegisterProfilePrefs(prefs.registry()); |
| 352 | 334 |
| 353 // Chain of events: a preference changes, |PrefProvider| notices it, and reads | 335 // Chain of events: a preference changes, |PrefProvider| notices it, and reads |
| 354 // and writes the preference. When the preference is written, a notification | 336 // and writes the preference. When the preference is written, a notification |
| 355 // is sent, and this used to happen when |PrefProvider| was still holding its | 337 // is sent, and this used to happen when |PrefProvider| was still holding its |
| 356 // lock. | 338 // lock. |
| 357 | 339 |
| 358 const WebsiteSettingsInfo* info = | 340 const WebsiteSettingsInfo* info = WebsiteSettingsRegistry::GetInstance()->Get( |
| 359 WebsiteSettingsRegistry::GetInstance()->Get(CONTENT_SETTINGS_TYPE_IMAGES); | 341 CONTENT_SETTINGS_TYPE_COOKIES); |
| 360 PrefProvider provider(&prefs, false); | 342 PrefProvider provider(&prefs, false); |
| 361 DeadlockCheckerObserver observer(&prefs, &provider); | 343 DeadlockCheckerObserver observer(&prefs, &provider); |
| 362 { | 344 { |
| 363 DictionaryPrefUpdate update(&prefs, info->pref_name()); | 345 DictionaryPrefUpdate update(&prefs, info->pref_name()); |
| 364 base::DictionaryValue* mutable_settings = update.Get(); | 346 base::DictionaryValue* mutable_settings = update.Get(); |
| 365 mutable_settings->SetWithoutPathExpansion("www.example.com,*", | 347 mutable_settings->SetWithoutPathExpansion("www.example.com,*", |
| 366 new base::DictionaryValue()); | 348 new base::DictionaryValue()); |
| 367 } | 349 } |
| 368 EXPECT_TRUE(observer.notification_received()); | 350 EXPECT_TRUE(observer.notification_received()); |
| 369 | 351 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 ContentSettingsPattern::FromString("google.com"); | 395 ContentSettingsPattern::FromString("google.com"); |
| 414 ContentSettingsPattern pattern_2 = | 396 ContentSettingsPattern pattern_2 = |
| 415 ContentSettingsPattern::FromString("www.google.com"); | 397 ContentSettingsPattern::FromString("www.google.com"); |
| 416 ContentSettingsPattern wildcard = | 398 ContentSettingsPattern wildcard = |
| 417 ContentSettingsPattern::FromString("*"); | 399 ContentSettingsPattern::FromString("*"); |
| 418 std::unique_ptr<base::Value> value( | 400 std::unique_ptr<base::Value> value( |
| 419 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); | 401 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); |
| 420 | 402 |
| 421 // Create a normal provider and set a setting. | 403 // Create a normal provider and set a setting. |
| 422 PrefProvider normal_provider(&prefs, false); | 404 PrefProvider normal_provider(&prefs, false); |
| 423 normal_provider.SetWebsiteSetting(pattern_1, | 405 normal_provider.SetWebsiteSetting(pattern_1, wildcard, |
| 424 wildcard, | 406 CONTENT_SETTINGS_TYPE_COOKIES, |
| 425 CONTENT_SETTINGS_TYPE_IMAGES, | 407 std::string(), value->DeepCopy()); |
| 426 std::string(), | |
| 427 value->DeepCopy()); | |
| 428 | 408 |
| 429 // Non-OTR provider, Non-OTR iterator has one setting (pattern 1). | 409 // Non-OTR provider, Non-OTR iterator has one setting (pattern 1). |
| 430 { | 410 { |
| 431 std::unique_ptr<RuleIterator> it(normal_provider.GetRuleIterator( | 411 std::unique_ptr<RuleIterator> it(normal_provider.GetRuleIterator( |
| 432 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); | 412 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false)); |
| 433 EXPECT_TRUE(it->HasNext()); | 413 EXPECT_TRUE(it->HasNext()); |
| 434 EXPECT_EQ(pattern_1, it->Next().primary_pattern); | 414 EXPECT_EQ(pattern_1, it->Next().primary_pattern); |
| 435 EXPECT_FALSE(it->HasNext()); | 415 EXPECT_FALSE(it->HasNext()); |
| 436 } | 416 } |
| 437 | 417 |
| 438 // Non-OTR provider, OTR iterator has no settings. | 418 // Non-OTR provider, OTR iterator has no settings. |
| 439 { | 419 { |
| 440 std::unique_ptr<RuleIterator> it(normal_provider.GetRuleIterator( | 420 std::unique_ptr<RuleIterator> it(normal_provider.GetRuleIterator( |
| 441 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), true)); | 421 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), true)); |
| 442 EXPECT_FALSE(it->HasNext()); | 422 EXPECT_FALSE(it->HasNext()); |
| 443 } | 423 } |
| 444 | 424 |
| 445 // Create an incognito provider and set a setting. | 425 // Create an incognito provider and set a setting. |
| 446 PrefProvider incognito_provider(&prefs, true); | 426 PrefProvider incognito_provider(&prefs, true); |
| 447 incognito_provider.SetWebsiteSetting(pattern_2, | 427 incognito_provider.SetWebsiteSetting(pattern_2, wildcard, |
| 448 wildcard, | 428 CONTENT_SETTINGS_TYPE_COOKIES, |
| 449 CONTENT_SETTINGS_TYPE_IMAGES, | 429 std::string(), value->DeepCopy()); |
| 450 std::string(), | |
| 451 value->DeepCopy()); | |
| 452 | 430 |
| 453 // OTR provider, non-OTR iterator has one setting (pattern 1). | 431 // OTR provider, non-OTR iterator has one setting (pattern 1). |
| 454 { | 432 { |
| 455 std::unique_ptr<RuleIterator> it(incognito_provider.GetRuleIterator( | 433 std::unique_ptr<RuleIterator> it(incognito_provider.GetRuleIterator( |
| 456 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); | 434 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false)); |
| 457 EXPECT_TRUE(it->HasNext()); | 435 EXPECT_TRUE(it->HasNext()); |
| 458 EXPECT_EQ(pattern_1, it->Next().primary_pattern); | 436 EXPECT_EQ(pattern_1, it->Next().primary_pattern); |
| 459 EXPECT_FALSE(it->HasNext()); | 437 EXPECT_FALSE(it->HasNext()); |
| 460 } | 438 } |
| 461 | 439 |
| 462 // OTR provider, OTR iterator has one setting (pattern 2). | 440 // OTR provider, OTR iterator has one setting (pattern 2). |
| 463 { | 441 { |
| 464 std::unique_ptr<RuleIterator> it(incognito_provider.GetRuleIterator( | 442 std::unique_ptr<RuleIterator> it(incognito_provider.GetRuleIterator( |
| 465 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), true)); | 443 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), true)); |
| 466 EXPECT_TRUE(it->HasNext()); | 444 EXPECT_TRUE(it->HasNext()); |
| 467 EXPECT_EQ(pattern_2, it->Next().primary_pattern); | 445 EXPECT_EQ(pattern_2, it->Next().primary_pattern); |
| 468 EXPECT_FALSE(it->HasNext()); | 446 EXPECT_FALSE(it->HasNext()); |
| 469 } | 447 } |
| 470 | 448 |
| 471 incognito_provider.ShutdownOnUIThread(); | 449 incognito_provider.ShutdownOnUIThread(); |
| 472 normal_provider.ShutdownOnUIThread(); | 450 normal_provider.ShutdownOnUIThread(); |
| 473 } | 451 } |
| 474 | 452 |
| 475 TEST_F(PrefProviderTest, ClearAllContentSettingsRules) { | 453 TEST_F(PrefProviderTest, ClearAllContentSettingsRules) { |
| 476 syncable_prefs::TestingPrefServiceSyncable prefs; | 454 syncable_prefs::TestingPrefServiceSyncable prefs; |
| 477 PrefProvider::RegisterProfilePrefs(prefs.registry()); | 455 PrefProvider::RegisterProfilePrefs(prefs.registry()); |
| 478 | 456 |
| 479 ContentSettingsPattern pattern = | 457 ContentSettingsPattern pattern = |
| 480 ContentSettingsPattern::FromString("google.com"); | 458 ContentSettingsPattern::FromString("google.com"); |
| 481 ContentSettingsPattern wildcard = | 459 ContentSettingsPattern wildcard = |
| 482 ContentSettingsPattern::FromString("*"); | 460 ContentSettingsPattern::FromString("*"); |
| 483 std::unique_ptr<base::Value> value( | 461 std::unique_ptr<base::Value> value( |
| 484 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); | 462 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); |
| 485 ResourceIdentifier res_id("abcde"); | 463 ResourceIdentifier res_id("abcde"); |
| 486 | 464 |
| 487 PrefProvider provider(&prefs, false); | 465 PrefProvider provider(&prefs, false); |
| 488 | 466 |
| 489 // Non-empty pattern, syncable, empty resource identifier. | 467 // Non-empty pattern, syncable, empty resource identifier. |
| 490 provider.SetWebsiteSetting(pattern, wildcard, CONTENT_SETTINGS_TYPE_IMAGES, | 468 provider.SetWebsiteSetting(pattern, wildcard, |
| 469 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 491 ResourceIdentifier(), value->DeepCopy()); | 470 ResourceIdentifier(), value->DeepCopy()); |
| 492 | 471 |
| 493 // Non-empty pattern, non-syncable, empty resource identifier. | 472 // Non-empty pattern, non-syncable, empty resource identifier. |
| 494 provider.SetWebsiteSetting(pattern, wildcard, | 473 provider.SetWebsiteSetting(pattern, wildcard, |
| 495 CONTENT_SETTINGS_TYPE_GEOLOCATION, | 474 CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 496 ResourceIdentifier(), value->DeepCopy()); | 475 ResourceIdentifier(), value->DeepCopy()); |
| 497 | 476 #if defined(ENABLE_PLUGINS) |
| 498 // Non-empty pattern, plugins, non-empty resource identifier. | 477 // Non-empty pattern, plugins, non-empty resource identifier. |
| 499 provider.SetWebsiteSetting(pattern, wildcard, CONTENT_SETTINGS_TYPE_PLUGINS, | 478 provider.SetWebsiteSetting(pattern, wildcard, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 500 res_id, value->DeepCopy()); | 479 res_id, value->DeepCopy()); |
| 501 | 480 |
| 502 // Empty pattern, plugins, non-empty resource identifier. | 481 // Empty pattern, plugins, non-empty resource identifier. |
| 503 provider.SetWebsiteSetting(wildcard, wildcard, CONTENT_SETTINGS_TYPE_PLUGINS, | 482 provider.SetWebsiteSetting(wildcard, wildcard, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 504 res_id, value->DeepCopy()); | 483 res_id, value->DeepCopy()); |
| 505 | 484 #endif |
| 506 // Non-empty pattern, syncable, empty resource identifier. | 485 // Non-empty pattern, syncable, empty resource identifier. |
| 507 provider.SetWebsiteSetting(pattern, wildcard, CONTENT_SETTINGS_TYPE_COOKIES, | 486 provider.SetWebsiteSetting(pattern, wildcard, CONTENT_SETTINGS_TYPE_COOKIES, |
| 508 ResourceIdentifier(), value->DeepCopy()); | 487 ResourceIdentifier(), value->DeepCopy()); |
| 509 | 488 |
| 510 // Non-empty pattern, non-syncable, empty resource identifier. | 489 // Non-empty pattern, non-syncable, empty resource identifier. |
| 511 provider.SetWebsiteSetting(pattern, wildcard, | 490 provider.SetWebsiteSetting(pattern, wildcard, |
| 512 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 491 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 513 ResourceIdentifier(), value->DeepCopy()); | 492 ResourceIdentifier(), value->DeepCopy()); |
| 514 | 493 |
| 515 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_IMAGES); | 494 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_JAVASCRIPT); |
| 516 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 495 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 496 #if defined(ENABLE_PLUGINS) |
| 517 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_PLUGINS); | 497 provider.ClearAllContentSettingsRules(CONTENT_SETTINGS_TYPE_PLUGINS); |
| 498 #endif |
| 518 | 499 |
| 519 WebsiteSettingsRegistry* registry = WebsiteSettingsRegistry::GetInstance(); | 500 WebsiteSettingsRegistry* registry = WebsiteSettingsRegistry::GetInstance(); |
| 520 // Test that the preferences for images, geolocation and plugins are empty. | 501 // Test that the preferences for images, geolocation and plugins are empty. |
| 521 const char* empty_prefs[] = { | 502 const char* empty_prefs[] = { |
| 522 registry->Get(CONTENT_SETTINGS_TYPE_IMAGES)->pref_name().c_str(), | 503 registry->Get(CONTENT_SETTINGS_TYPE_JAVASCRIPT)->pref_name().c_str(), |
| 523 registry->Get(CONTENT_SETTINGS_TYPE_GEOLOCATION)->pref_name().c_str(), | 504 registry->Get(CONTENT_SETTINGS_TYPE_GEOLOCATION)->pref_name().c_str(), |
| 524 registry->Get(CONTENT_SETTINGS_TYPE_PLUGINS)->pref_name().c_str(), | 505 #if defined(ENABLE_PLUGINS) |
| 506 registry->Get(CONTENT_SETTINGS_TYPE_PLUGINS)->pref_name().c_str(), |
| 507 #endif |
| 525 }; | 508 }; |
| 526 | 509 |
| 527 for (const char* pref : empty_prefs) { | 510 for (const char* pref : empty_prefs) { |
| 528 DictionaryPrefUpdate update(&prefs, pref); | 511 DictionaryPrefUpdate update(&prefs, pref); |
| 529 const base::DictionaryValue* dictionary = update.Get(); | 512 const base::DictionaryValue* dictionary = update.Get(); |
| 530 EXPECT_TRUE(dictionary->empty()); | 513 EXPECT_TRUE(dictionary->empty()); |
| 531 } | 514 } |
| 532 | 515 |
| 533 // Test that the preferences for cookies and notifications are not empty. | 516 // Test that the preferences for cookies and notifications are not empty. |
| 534 const char* nonempty_prefs[] = { | 517 const char* nonempty_prefs[] = { |
| 535 registry->Get(CONTENT_SETTINGS_TYPE_COOKIES)->pref_name().c_str(), | 518 registry->Get(CONTENT_SETTINGS_TYPE_COOKIES)->pref_name().c_str(), |
| 536 registry->Get(CONTENT_SETTINGS_TYPE_NOTIFICATIONS)->pref_name().c_str(), | 519 registry->Get(CONTENT_SETTINGS_TYPE_NOTIFICATIONS)->pref_name().c_str(), |
| 537 }; | 520 }; |
| 538 | 521 |
| 539 for (const char* pref : nonempty_prefs) { | 522 for (const char* pref : nonempty_prefs) { |
| 540 DictionaryPrefUpdate update(&prefs, pref); | 523 DictionaryPrefUpdate update(&prefs, pref); |
| 541 const base::DictionaryValue* dictionary = update.Get(); | 524 const base::DictionaryValue* dictionary = update.Get(); |
| 542 EXPECT_EQ(1u, dictionary->size()); | 525 EXPECT_EQ(1u, dictionary->size()); |
| 543 } | 526 } |
| 544 | 527 |
| 545 provider.ShutdownOnUIThread(); | 528 provider.ShutdownOnUIThread(); |
| 546 } | 529 } |
| 547 | 530 |
| 548 } // namespace content_settings | 531 } // namespace content_settings |
| OLD | NEW |