| 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 "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 pref_content_settings_provider.SetWebsiteSetting( | 173 pref_content_settings_provider.SetWebsiteSetting( |
| 174 pattern, | 174 pattern, |
| 175 pattern, | 175 pattern, |
| 176 CONTENT_SETTINGS_TYPE_IMAGES, | 176 CONTENT_SETTINGS_TYPE_IMAGES, |
| 177 std::string(), | 177 std::string(), |
| 178 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); | 178 new base::FundamentalValue(CONTENT_SETTING_ALLOW)); |
| 179 | 179 |
| 180 GURL host("http://example.com/"); | 180 GURL host("http://example.com/"); |
| 181 // The value should of course be visible in the regular PrefProvider. | 181 // The value should of course be visible in the regular PrefProvider. |
| 182 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 182 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 183 GetContentSetting(&pref_content_settings_provider, | 183 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 184 host, | 184 host, CONTENT_SETTINGS_TYPE_IMAGES, |
| 185 host, | 185 std::string(), false)); |
| 186 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 187 std::string(), | |
| 188 false)); | |
| 189 // And also in the OTR version. | 186 // And also in the OTR version. |
| 190 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 187 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 191 GetContentSetting(&pref_content_settings_provider_incognito, | 188 TestUtils::GetContentSetting( |
| 192 host, | 189 &pref_content_settings_provider_incognito, host, host, |
| 193 host, | 190 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); |
| 194 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 195 std::string(), | |
| 196 false)); | |
| 197 const WebsiteSettingsInfo* info = | 191 const WebsiteSettingsInfo* info = |
| 198 WebsiteSettingsRegistry::GetInstance()->Get(CONTENT_SETTINGS_TYPE_IMAGES); | 192 WebsiteSettingsRegistry::GetInstance()->Get(CONTENT_SETTINGS_TYPE_IMAGES); |
| 199 // But the value should not be overridden in the OTR user prefs accidentally. | 193 // But the value should not be overridden in the OTR user prefs accidentally. |
| 200 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(info->pref_name())); | 194 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(info->pref_name())); |
| 201 | 195 |
| 202 pref_content_settings_provider.ShutdownOnUIThread(); | 196 pref_content_settings_provider.ShutdownOnUIThread(); |
| 203 pref_content_settings_provider_incognito.ShutdownOnUIThread(); | 197 pref_content_settings_provider_incognito.ShutdownOnUIThread(); |
| 204 } | 198 } |
| 205 | 199 |
| 206 TEST_F(PrefProviderTest, GetContentSettingsValue) { | 200 TEST_F(PrefProviderTest, GetContentSettingsValue) { |
| 207 TestingProfile testing_profile; | 201 TestingProfile testing_profile; |
| 208 PrefProvider provider(testing_profile.GetPrefs(), false); | 202 PrefProvider provider(testing_profile.GetPrefs(), false); |
| 209 | 203 |
| 210 GURL primary_url("http://example.com/"); | 204 GURL primary_url("http://example.com/"); |
| 211 ContentSettingsPattern primary_pattern = | 205 ContentSettingsPattern primary_pattern = |
| 212 ContentSettingsPattern::FromString("[*.]example.com"); | 206 ContentSettingsPattern::FromString("[*.]example.com"); |
| 213 | 207 |
| 214 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 208 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 215 GetContentSetting(&provider, | 209 TestUtils::GetContentSetting(&provider, primary_url, primary_url, |
| 216 primary_url, | 210 CONTENT_SETTINGS_TYPE_IMAGES, |
| 217 primary_url, | 211 std::string(), false)); |
| 218 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 219 std::string(), | |
| 220 false)); | |
| 221 | 212 |
| 222 EXPECT_EQ(NULL, | 213 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( |
| 223 GetContentSettingValue(&provider, | 214 &provider, primary_url, primary_url, |
| 224 primary_url, | 215 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); |
| 225 primary_url, | |
| 226 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 227 std::string(), | |
| 228 false)); | |
| 229 | 216 |
| 230 provider.SetWebsiteSetting(primary_pattern, | 217 provider.SetWebsiteSetting(primary_pattern, |
| 231 primary_pattern, | 218 primary_pattern, |
| 232 CONTENT_SETTINGS_TYPE_IMAGES, | 219 CONTENT_SETTINGS_TYPE_IMAGES, |
| 233 std::string(), | 220 std::string(), |
| 234 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 221 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 235 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 222 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 236 GetContentSetting(&provider, | 223 TestUtils::GetContentSetting(&provider, primary_url, primary_url, |
| 237 primary_url, | 224 CONTENT_SETTINGS_TYPE_IMAGES, |
| 238 primary_url, | 225 std::string(), false)); |
| 239 CONTENT_SETTINGS_TYPE_IMAGES, | 226 scoped_ptr<base::Value> value_ptr(TestUtils::GetContentSettingValue( |
| 240 std::string(), | 227 &provider, primary_url, primary_url, CONTENT_SETTINGS_TYPE_IMAGES, |
| 241 false)); | 228 std::string(), false)); |
| 242 scoped_ptr<base::Value> value_ptr( | |
| 243 GetContentSettingValue(&provider, | |
| 244 primary_url, | |
| 245 primary_url, | |
| 246 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 247 std::string(), | |
| 248 false)); | |
| 249 int int_value = -1; | 229 int int_value = -1; |
| 250 value_ptr->GetAsInteger(&int_value); | 230 value_ptr->GetAsInteger(&int_value); |
| 251 EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value)); | 231 EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value)); |
| 252 | 232 |
| 253 provider.SetWebsiteSetting(primary_pattern, | 233 provider.SetWebsiteSetting(primary_pattern, |
| 254 primary_pattern, | 234 primary_pattern, |
| 255 CONTENT_SETTINGS_TYPE_IMAGES, | 235 CONTENT_SETTINGS_TYPE_IMAGES, |
| 256 std::string(), | 236 std::string(), |
| 257 NULL); | 237 NULL); |
| 258 EXPECT_EQ(NULL, | 238 EXPECT_EQ(NULL, TestUtils::GetContentSettingValue( |
| 259 GetContentSettingValue(&provider, | 239 &provider, primary_url, primary_url, |
| 260 primary_url, | 240 CONTENT_SETTINGS_TYPE_IMAGES, std::string(), false)); |
| 261 primary_url, | |
| 262 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 263 std::string(), | |
| 264 false)); | |
| 265 provider.ShutdownOnUIThread(); | 241 provider.ShutdownOnUIThread(); |
| 266 } | 242 } |
| 267 | 243 |
| 268 TEST_F(PrefProviderTest, Patterns) { | 244 TEST_F(PrefProviderTest, Patterns) { |
| 269 TestingProfile testing_profile; | 245 TestingProfile testing_profile; |
| 270 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), | 246 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), |
| 271 false); | 247 false); |
| 272 | 248 |
| 273 GURL host1("http://example.com/"); | 249 GURL host1("http://example.com/"); |
| 274 GURL host2("http://www.example.com/"); | 250 GURL host2("http://www.example.com/"); |
| 275 GURL host3("http://example.org/"); | 251 GURL host3("http://example.org/"); |
| 276 GURL host4("file:///tmp/test.html"); | 252 GURL host4("file:///tmp/test.html"); |
| 277 ContentSettingsPattern pattern1 = | 253 ContentSettingsPattern pattern1 = |
| 278 ContentSettingsPattern::FromString("[*.]example.com"); | 254 ContentSettingsPattern::FromString("[*.]example.com"); |
| 279 ContentSettingsPattern pattern2 = | 255 ContentSettingsPattern pattern2 = |
| 280 ContentSettingsPattern::FromString("example.org"); | 256 ContentSettingsPattern::FromString("example.org"); |
| 281 ContentSettingsPattern pattern3 = | 257 ContentSettingsPattern pattern3 = |
| 282 ContentSettingsPattern::FromString("file:///tmp/test.html"); | 258 ContentSettingsPattern::FromString("file:///tmp/test.html"); |
| 283 | 259 |
| 284 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 260 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 285 GetContentSetting(&pref_content_settings_provider, | 261 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, |
| 286 host1, | 262 host1, CONTENT_SETTINGS_TYPE_IMAGES, |
| 287 host1, | 263 std::string(), false)); |
| 288 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 289 std::string(), | |
| 290 false)); | |
| 291 pref_content_settings_provider.SetWebsiteSetting( | 264 pref_content_settings_provider.SetWebsiteSetting( |
| 292 pattern1, | 265 pattern1, |
| 293 pattern1, | 266 pattern1, |
| 294 CONTENT_SETTINGS_TYPE_IMAGES, | 267 CONTENT_SETTINGS_TYPE_IMAGES, |
| 295 std::string(), | 268 std::string(), |
| 296 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 269 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 297 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 270 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 298 GetContentSetting(&pref_content_settings_provider, | 271 TestUtils::GetContentSetting(&pref_content_settings_provider, host1, |
| 299 host1, | 272 host1, CONTENT_SETTINGS_TYPE_IMAGES, |
| 300 host1, | 273 std::string(), false)); |
| 301 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 302 std::string(), | |
| 303 false)); | |
| 304 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 274 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 305 GetContentSetting(&pref_content_settings_provider, | 275 TestUtils::GetContentSetting(&pref_content_settings_provider, host2, |
| 306 host2, | 276 host2, CONTENT_SETTINGS_TYPE_IMAGES, |
| 307 host2, | 277 std::string(), false)); |
| 308 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 309 std::string(), | |
| 310 false)); | |
| 311 | 278 |
| 312 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 279 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 313 GetContentSetting(&pref_content_settings_provider, | 280 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, |
| 314 host3, | 281 host3, CONTENT_SETTINGS_TYPE_IMAGES, |
| 315 host3, | 282 std::string(), false)); |
| 316 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 317 std::string(), | |
| 318 false)); | |
| 319 pref_content_settings_provider.SetWebsiteSetting( | 283 pref_content_settings_provider.SetWebsiteSetting( |
| 320 pattern2, | 284 pattern2, |
| 321 pattern2, | 285 pattern2, |
| 322 CONTENT_SETTINGS_TYPE_IMAGES, | 286 CONTENT_SETTINGS_TYPE_IMAGES, |
| 323 std::string(), | 287 std::string(), |
| 324 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 288 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 325 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 289 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 326 GetContentSetting(&pref_content_settings_provider, | 290 TestUtils::GetContentSetting(&pref_content_settings_provider, host3, |
| 327 host3, | 291 host3, CONTENT_SETTINGS_TYPE_IMAGES, |
| 328 host3, | 292 std::string(), false)); |
| 329 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 330 std::string(), | |
| 331 false)); | |
| 332 | 293 |
| 333 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 294 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 334 GetContentSetting(&pref_content_settings_provider, | 295 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, |
| 335 host4, | 296 host4, CONTENT_SETTINGS_TYPE_IMAGES, |
| 336 host4, | 297 std::string(), false)); |
| 337 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 338 std::string(), | |
| 339 false)); | |
| 340 pref_content_settings_provider.SetWebsiteSetting( | 298 pref_content_settings_provider.SetWebsiteSetting( |
| 341 pattern3, | 299 pattern3, |
| 342 pattern3, | 300 pattern3, |
| 343 CONTENT_SETTINGS_TYPE_IMAGES, | 301 CONTENT_SETTINGS_TYPE_IMAGES, |
| 344 std::string(), | 302 std::string(), |
| 345 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 303 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 346 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 304 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 347 GetContentSetting(&pref_content_settings_provider, | 305 TestUtils::GetContentSetting(&pref_content_settings_provider, host4, |
| 348 host4, | 306 host4, CONTENT_SETTINGS_TYPE_IMAGES, |
| 349 host4, | 307 std::string(), false)); |
| 350 CONTENT_SETTINGS_TYPE_IMAGES, | |
| 351 std::string(), | |
| 352 false)); | |
| 353 | 308 |
| 354 pref_content_settings_provider.ShutdownOnUIThread(); | 309 pref_content_settings_provider.ShutdownOnUIThread(); |
| 355 } | 310 } |
| 356 | 311 |
| 357 TEST_F(PrefProviderTest, ResourceIdentifier) { | 312 TEST_F(PrefProviderTest, ResourceIdentifier) { |
| 358 TestingProfile testing_profile; | 313 TestingProfile testing_profile; |
| 359 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), | 314 PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(), |
| 360 false); | 315 false); |
| 361 | 316 |
| 362 GURL host("http://example.com/"); | 317 GURL host("http://example.com/"); |
| 363 ContentSettingsPattern pattern = | 318 ContentSettingsPattern pattern = |
| 364 ContentSettingsPattern::FromString("[*.]example.com"); | 319 ContentSettingsPattern::FromString("[*.]example.com"); |
| 365 std::string resource1("someplugin"); | 320 std::string resource1("someplugin"); |
| 366 std::string resource2("otherplugin"); | 321 std::string resource2("otherplugin"); |
| 367 | 322 |
| 368 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 323 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 369 GetContentSetting( | 324 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 370 &pref_content_settings_provider, | 325 host, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 371 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, | 326 resource1, false)); |
| 372 resource1, false)); | |
| 373 pref_content_settings_provider.SetWebsiteSetting( | 327 pref_content_settings_provider.SetWebsiteSetting( |
| 374 pattern, | 328 pattern, |
| 375 pattern, | 329 pattern, |
| 376 CONTENT_SETTINGS_TYPE_PLUGINS, | 330 CONTENT_SETTINGS_TYPE_PLUGINS, |
| 377 resource1, | 331 resource1, |
| 378 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); | 332 new base::FundamentalValue(CONTENT_SETTING_BLOCK)); |
| 379 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 333 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 380 GetContentSetting( | 334 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 381 &pref_content_settings_provider, | 335 host, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 382 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, | 336 resource1, false)); |
| 383 resource1, false)); | |
| 384 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 337 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 385 GetContentSetting( | 338 TestUtils::GetContentSetting(&pref_content_settings_provider, host, |
| 386 &pref_content_settings_provider, | 339 host, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 387 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, | 340 resource2, false)); |
| 388 resource2, false)); | |
| 389 | 341 |
| 390 pref_content_settings_provider.ShutdownOnUIThread(); | 342 pref_content_settings_provider.ShutdownOnUIThread(); |
| 391 } | 343 } |
| 392 | 344 |
| 393 // http://crosbug.com/17760 | 345 // http://crosbug.com/17760 |
| 394 TEST_F(PrefProviderTest, Deadlock) { | 346 TEST_F(PrefProviderTest, Deadlock) { |
| 395 syncable_prefs::TestingPrefServiceSyncable prefs; | 347 syncable_prefs::TestingPrefServiceSyncable prefs; |
| 396 PrefProvider::RegisterProfilePrefs(prefs.registry()); | 348 PrefProvider::RegisterProfilePrefs(prefs.registry()); |
| 397 | 349 |
| 398 // Chain of events: a preference changes, |PrefProvider| notices it, and reads | 350 // Chain of events: a preference changes, |PrefProvider| notices it, and reads |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 for (const char* pref : nonempty_prefs) { | 536 for (const char* pref : nonempty_prefs) { |
| 585 DictionaryPrefUpdate update(&prefs, pref); | 537 DictionaryPrefUpdate update(&prefs, pref); |
| 586 const base::DictionaryValue* dictionary = update.Get(); | 538 const base::DictionaryValue* dictionary = update.Get(); |
| 587 EXPECT_EQ(1u, dictionary->size()); | 539 EXPECT_EQ(1u, dictionary->size()); |
| 588 } | 540 } |
| 589 | 541 |
| 590 provider.ShutdownOnUIThread(); | 542 provider.ShutdownOnUIThread(); |
| 591 } | 543 } |
| 592 | 544 |
| 593 } // namespace content_settings | 545 } // namespace content_settings |
| OLD | NEW |