| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/prefs/mock_pref_change_callback.h" | 9 #include "base/prefs/mock_pref_change_callback.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 prefs()->OnExtensionUninstalled(extension_id, Manifest::INTERNAL, false); | 177 prefs()->OnExtensionUninstalled(extension_id, Manifest::INTERNAL, false); |
| 178 } | 178 } |
| 179 | 179 |
| 180 class ControlledPrefsInstallOneExtension | 180 class ControlledPrefsInstallOneExtension |
| 181 : public ExtensionControlledPrefsTest { | 181 : public ExtensionControlledPrefsTest { |
| 182 virtual void Initialize() OVERRIDE { | 182 virtual void Initialize() OVERRIDE { |
| 183 InstallExtensionControlledPref(extension1(), | 183 InstallExtensionControlledPref(extension1(), |
| 184 kPref1, | 184 kPref1, |
| 185 Value::CreateStringValue("val1")); | 185 new base::StringValue("val1")); |
| 186 } | 186 } |
| 187 virtual void Verify() OVERRIDE { | 187 virtual void Verify() OVERRIDE { |
| 188 std::string actual = prefs()->pref_service()->GetString(kPref1); | 188 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 189 EXPECT_EQ("val1", actual); | 189 EXPECT_EQ("val1", actual); |
| 190 } | 190 } |
| 191 }; | 191 }; |
| 192 TEST_F(ControlledPrefsInstallOneExtension, | 192 TEST_F(ControlledPrefsInstallOneExtension, |
| 193 ControlledPrefsInstallOneExtension) { } | 193 ControlledPrefsInstallOneExtension) { } |
| 194 | 194 |
| 195 // Check that we do not forget persistent incognito values after a reload. | 195 // Check that we do not forget persistent incognito values after a reload. |
| 196 class ControlledPrefsInstallIncognitoPersistent | 196 class ControlledPrefsInstallIncognitoPersistent |
| 197 : public ExtensionControlledPrefsTest { | 197 : public ExtensionControlledPrefsTest { |
| 198 public: | 198 public: |
| 199 virtual void Initialize() OVERRIDE { | 199 virtual void Initialize() OVERRIDE { |
| 200 InstallExtensionControlledPref( | 200 InstallExtensionControlledPref( |
| 201 extension1(), kPref1, Value::CreateStringValue("val1")); | 201 extension1(), kPref1, new base::StringValue("val1")); |
| 202 InstallExtensionControlledPrefIncognito( | 202 InstallExtensionControlledPrefIncognito( |
| 203 extension1(), kPref1, Value::CreateStringValue("val2")); | 203 extension1(), kPref1, new base::StringValue("val2")); |
| 204 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | 204 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); |
| 205 std::string actual = incog_prefs->GetString(kPref1); | 205 std::string actual = incog_prefs->GetString(kPref1); |
| 206 EXPECT_EQ("val2", actual); | 206 EXPECT_EQ("val2", actual); |
| 207 } | 207 } |
| 208 | 208 |
| 209 virtual void Verify() OVERRIDE { | 209 virtual void Verify() OVERRIDE { |
| 210 // Main pref service shall see only non-incognito settings. | 210 // Main pref service shall see only non-incognito settings. |
| 211 std::string actual = prefs()->pref_service()->GetString(kPref1); | 211 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 212 EXPECT_EQ("val1", actual); | 212 EXPECT_EQ("val1", actual); |
| 213 // Incognito pref service shall see incognito values. | 213 // Incognito pref service shall see incognito values. |
| 214 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | 214 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); |
| 215 actual = incog_prefs->GetString(kPref1); | 215 actual = incog_prefs->GetString(kPref1); |
| 216 EXPECT_EQ("val2", actual); | 216 EXPECT_EQ("val2", actual); |
| 217 } | 217 } |
| 218 }; | 218 }; |
| 219 TEST_F(ControlledPrefsInstallIncognitoPersistent, | 219 TEST_F(ControlledPrefsInstallIncognitoPersistent, |
| 220 ControlledPrefsInstallIncognitoPersistent) { } | 220 ControlledPrefsInstallIncognitoPersistent) { } |
| 221 | 221 |
| 222 // Check that we forget 'session only' incognito values after a reload. | 222 // Check that we forget 'session only' incognito values after a reload. |
| 223 class ControlledPrefsInstallIncognitoSessionOnly | 223 class ControlledPrefsInstallIncognitoSessionOnly |
| 224 : public ExtensionControlledPrefsTest { | 224 : public ExtensionControlledPrefsTest { |
| 225 public: | 225 public: |
| 226 ControlledPrefsInstallIncognitoSessionOnly() : iteration_(0) {} | 226 ControlledPrefsInstallIncognitoSessionOnly() : iteration_(0) {} |
| 227 | 227 |
| 228 virtual void Initialize() OVERRIDE { | 228 virtual void Initialize() OVERRIDE { |
| 229 InstallExtensionControlledPref( | 229 InstallExtensionControlledPref( |
| 230 extension1(), kPref1, Value::CreateStringValue("val1")); | 230 extension1(), kPref1, new base::StringValue("val1")); |
| 231 InstallExtensionControlledPrefIncognitoSessionOnly( | 231 InstallExtensionControlledPrefIncognitoSessionOnly( |
| 232 extension1(), kPref1, Value::CreateStringValue("val2")); | 232 extension1(), kPref1, new base::StringValue("val2")); |
| 233 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | 233 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); |
| 234 std::string actual = incog_prefs->GetString(kPref1); | 234 std::string actual = incog_prefs->GetString(kPref1); |
| 235 EXPECT_EQ("val2", actual); | 235 EXPECT_EQ("val2", actual); |
| 236 } | 236 } |
| 237 virtual void Verify() OVERRIDE { | 237 virtual void Verify() OVERRIDE { |
| 238 // Main pref service shall see only non-incognito settings. | 238 // Main pref service shall see only non-incognito settings. |
| 239 std::string actual = prefs()->pref_service()->GetString(kPref1); | 239 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 240 EXPECT_EQ("val1", actual); | 240 EXPECT_EQ("val1", actual); |
| 241 // Incognito pref service shall see session-only incognito values only | 241 // Incognito pref service shall see session-only incognito values only |
| 242 // during first run. Once the pref service was reloaded, all values shall be | 242 // during first run. Once the pref service was reloaded, all values shall be |
| 243 // discarded. | 243 // discarded. |
| 244 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | 244 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); |
| 245 actual = incog_prefs->GetString(kPref1); | 245 actual = incog_prefs->GetString(kPref1); |
| 246 if (iteration_ == 0) { | 246 if (iteration_ == 0) { |
| 247 EXPECT_EQ("val2", actual); | 247 EXPECT_EQ("val2", actual); |
| 248 } else { | 248 } else { |
| 249 EXPECT_EQ("val1", actual); | 249 EXPECT_EQ("val1", actual); |
| 250 } | 250 } |
| 251 ++iteration_; | 251 ++iteration_; |
| 252 } | 252 } |
| 253 int iteration_; | 253 int iteration_; |
| 254 }; | 254 }; |
| 255 TEST_F(ControlledPrefsInstallIncognitoSessionOnly, | 255 TEST_F(ControlledPrefsInstallIncognitoSessionOnly, |
| 256 ControlledPrefsInstallIncognitoSessionOnly) { } | 256 ControlledPrefsInstallIncognitoSessionOnly) { } |
| 257 | 257 |
| 258 class ControlledPrefsUninstallExtension : public ExtensionControlledPrefsTest { | 258 class ControlledPrefsUninstallExtension : public ExtensionControlledPrefsTest { |
| 259 virtual void Initialize() OVERRIDE { | 259 virtual void Initialize() OVERRIDE { |
| 260 InstallExtensionControlledPref( | 260 InstallExtensionControlledPref( |
| 261 extension1(), kPref1, Value::CreateStringValue("val1")); | 261 extension1(), kPref1, new base::StringValue("val1")); |
| 262 InstallExtensionControlledPref( | 262 InstallExtensionControlledPref( |
| 263 extension1(), kPref2, Value::CreateStringValue("val2")); | 263 extension1(), kPref2, new base::StringValue("val2")); |
| 264 ContentSettingsStore* store = prefs()->content_settings_store(); | 264 ContentSettingsStore* store = prefs()->content_settings_store(); |
| 265 ContentSettingsPattern pattern = | 265 ContentSettingsPattern pattern = |
| 266 ContentSettingsPattern::FromString("http://[*.]example.com"); | 266 ContentSettingsPattern::FromString("http://[*.]example.com"); |
| 267 store->SetExtensionContentSetting(extension1()->id(), | 267 store->SetExtensionContentSetting(extension1()->id(), |
| 268 pattern, pattern, | 268 pattern, pattern, |
| 269 CONTENT_SETTINGS_TYPE_IMAGES, | 269 CONTENT_SETTINGS_TYPE_IMAGES, |
| 270 std::string(), | 270 std::string(), |
| 271 CONTENT_SETTING_BLOCK, | 271 CONTENT_SETTING_BLOCK, |
| 272 kExtensionPrefsScopeRegular); | 272 kExtensionPrefsScopeRegular); |
| 273 | 273 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 301 MockPrefChangeCallback incognito_observer(prefs()->pref_service()); | 301 MockPrefChangeCallback incognito_observer(prefs()->pref_service()); |
| 302 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | 302 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); |
| 303 PrefChangeRegistrar incognito_registrar; | 303 PrefChangeRegistrar incognito_registrar; |
| 304 incognito_registrar.Init(incog_prefs.get()); | 304 incognito_registrar.Init(incog_prefs.get()); |
| 305 incognito_registrar.Add(kPref1, incognito_observer.GetCallback()); | 305 incognito_registrar.Add(kPref1, incognito_observer.GetCallback()); |
| 306 | 306 |
| 307 // Write value and check notification. | 307 // Write value and check notification. |
| 308 EXPECT_CALL(observer, OnPreferenceChanged(_)); | 308 EXPECT_CALL(observer, OnPreferenceChanged(_)); |
| 309 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); | 309 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); |
| 310 InstallExtensionControlledPref(extension1(), kPref1, | 310 InstallExtensionControlledPref(extension1(), kPref1, |
| 311 Value::CreateStringValue("https://www.chromium.org")); | 311 new base::StringValue("https://www.chromium.org")); |
| 312 Mock::VerifyAndClearExpectations(&observer); | 312 Mock::VerifyAndClearExpectations(&observer); |
| 313 Mock::VerifyAndClearExpectations(&incognito_observer); | 313 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 314 | 314 |
| 315 // Write same value. | 315 // Write same value. |
| 316 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); | 316 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); |
| 317 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)).Times(0); | 317 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)).Times(0); |
| 318 InstallExtensionControlledPref(extension1(), kPref1, | 318 InstallExtensionControlledPref(extension1(), kPref1, |
| 319 Value::CreateStringValue("https://www.chromium.org")); | 319 new base::StringValue("https://www.chromium.org")); |
| 320 Mock::VerifyAndClearExpectations(&observer); | 320 Mock::VerifyAndClearExpectations(&observer); |
| 321 Mock::VerifyAndClearExpectations(&incognito_observer); | 321 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 322 | 322 |
| 323 // Change value. | 323 // Change value. |
| 324 EXPECT_CALL(observer, OnPreferenceChanged(_)); | 324 EXPECT_CALL(observer, OnPreferenceChanged(_)); |
| 325 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); | 325 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); |
| 326 InstallExtensionControlledPref(extension1(), kPref1, | 326 InstallExtensionControlledPref(extension1(), kPref1, |
| 327 Value::CreateStringValue("chrome://newtab")); | 327 new base::StringValue("chrome://newtab")); |
| 328 Mock::VerifyAndClearExpectations(&observer); | 328 Mock::VerifyAndClearExpectations(&observer); |
| 329 Mock::VerifyAndClearExpectations(&incognito_observer); | 329 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 330 // Change only incognito persistent value. | 330 // Change only incognito persistent value. |
| 331 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); | 331 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); |
| 332 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); | 332 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); |
| 333 InstallExtensionControlledPrefIncognito(extension1(), kPref1, | 333 InstallExtensionControlledPrefIncognito(extension1(), kPref1, |
| 334 Value::CreateStringValue("chrome://newtab2")); | 334 new base::StringValue("chrome://newtab2")); |
| 335 Mock::VerifyAndClearExpectations(&observer); | 335 Mock::VerifyAndClearExpectations(&observer); |
| 336 Mock::VerifyAndClearExpectations(&incognito_observer); | 336 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 337 | 337 |
| 338 // Change only incognito session-only value. | 338 // Change only incognito session-only value. |
| 339 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); | 339 EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); |
| 340 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); | 340 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); |
| 341 InstallExtensionControlledPrefIncognito(extension1(), kPref1, | 341 InstallExtensionControlledPrefIncognito(extension1(), kPref1, |
| 342 Value::CreateStringValue("chrome://newtab3")); | 342 new base::StringValue("chrome://newtab3")); |
| 343 Mock::VerifyAndClearExpectations(&observer); | 343 Mock::VerifyAndClearExpectations(&observer); |
| 344 Mock::VerifyAndClearExpectations(&incognito_observer); | 344 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 345 | 345 |
| 346 // Uninstall. | 346 // Uninstall. |
| 347 EXPECT_CALL(observer, OnPreferenceChanged(_)); | 347 EXPECT_CALL(observer, OnPreferenceChanged(_)); |
| 348 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); | 348 EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)); |
| 349 UninstallExtension(extension1()->id()); | 349 UninstallExtension(extension1()->id()); |
| 350 Mock::VerifyAndClearExpectations(&observer); | 350 Mock::VerifyAndClearExpectations(&observer); |
| 351 Mock::VerifyAndClearExpectations(&incognito_observer); | 351 Mock::VerifyAndClearExpectations(&incognito_observer); |
| 352 | 352 |
| 353 registrar.Remove(kPref1); | 353 registrar.Remove(kPref1); |
| 354 incognito_registrar.Remove(kPref1); | 354 incognito_registrar.Remove(kPref1); |
| 355 } | 355 } |
| 356 virtual void Verify() OVERRIDE { | 356 virtual void Verify() OVERRIDE { |
| 357 std::string actual = prefs()->pref_service()->GetString(kPref1); | 357 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 358 EXPECT_EQ(kDefaultPref1, actual); | 358 EXPECT_EQ(kDefaultPref1, actual); |
| 359 } | 359 } |
| 360 }; | 360 }; |
| 361 TEST_F(ControlledPrefsNotifyWhenNeeded, | 361 TEST_F(ControlledPrefsNotifyWhenNeeded, |
| 362 ControlledPrefsNotifyWhenNeeded) { } | 362 ControlledPrefsNotifyWhenNeeded) { } |
| 363 | 363 |
| 364 // Tests disabling an extension. | 364 // Tests disabling an extension. |
| 365 class ControlledPrefsDisableExtension : public ExtensionControlledPrefsTest { | 365 class ControlledPrefsDisableExtension : public ExtensionControlledPrefsTest { |
| 366 virtual void Initialize() OVERRIDE { | 366 virtual void Initialize() OVERRIDE { |
| 367 InstallExtensionControlledPref( | 367 InstallExtensionControlledPref( |
| 368 extension1(), kPref1, Value::CreateStringValue("val1")); | 368 extension1(), kPref1, new base::StringValue("val1")); |
| 369 std::string actual = prefs()->pref_service()->GetString(kPref1); | 369 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 370 EXPECT_EQ("val1", actual); | 370 EXPECT_EQ("val1", actual); |
| 371 prefs()->SetExtensionState(extension1()->id(), Extension::DISABLED); | 371 prefs()->SetExtensionState(extension1()->id(), Extension::DISABLED); |
| 372 } | 372 } |
| 373 virtual void Verify() OVERRIDE { | 373 virtual void Verify() OVERRIDE { |
| 374 std::string actual = prefs()->pref_service()->GetString(kPref1); | 374 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 375 EXPECT_EQ(kDefaultPref1, actual); | 375 EXPECT_EQ(kDefaultPref1, actual); |
| 376 } | 376 } |
| 377 }; | 377 }; |
| 378 TEST_F(ControlledPrefsDisableExtension, ControlledPrefsDisableExtension) { } | 378 TEST_F(ControlledPrefsDisableExtension, ControlledPrefsDisableExtension) { } |
| 379 | 379 |
| 380 // Tests disabling and reenabling an extension. | 380 // Tests disabling and reenabling an extension. |
| 381 class ControlledPrefsReenableExtension : public ExtensionControlledPrefsTest { | 381 class ControlledPrefsReenableExtension : public ExtensionControlledPrefsTest { |
| 382 virtual void Initialize() OVERRIDE { | 382 virtual void Initialize() OVERRIDE { |
| 383 InstallExtensionControlledPref( | 383 InstallExtensionControlledPref( |
| 384 extension1(), kPref1, Value::CreateStringValue("val1")); | 384 extension1(), kPref1, new base::StringValue("val1")); |
| 385 prefs()->SetExtensionState(extension1()->id(), Extension::DISABLED); | 385 prefs()->SetExtensionState(extension1()->id(), Extension::DISABLED); |
| 386 prefs()->SetExtensionState(extension1()->id(), Extension::ENABLED); | 386 prefs()->SetExtensionState(extension1()->id(), Extension::ENABLED); |
| 387 } | 387 } |
| 388 virtual void Verify() OVERRIDE { | 388 virtual void Verify() OVERRIDE { |
| 389 std::string actual = prefs()->pref_service()->GetString(kPref1); | 389 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 390 EXPECT_EQ("val1", actual); | 390 EXPECT_EQ("val1", actual); |
| 391 } | 391 } |
| 392 }; | 392 }; |
| 393 TEST_F(ControlledPrefsDisableExtension, ControlledPrefsReenableExtension) { } | 393 TEST_F(ControlledPrefsDisableExtension, ControlledPrefsReenableExtension) { } |
| 394 | 394 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 | 441 |
| 442 // Tests that the switches::kDisableExtensions command-line flag prevents | 442 // Tests that the switches::kDisableExtensions command-line flag prevents |
| 443 // extension controlled preferences from being enacted. | 443 // extension controlled preferences from being enacted. |
| 444 class ControlledPrefsDisableExtensions : public ExtensionControlledPrefsTest { | 444 class ControlledPrefsDisableExtensions : public ExtensionControlledPrefsTest { |
| 445 public: | 445 public: |
| 446 ControlledPrefsDisableExtensions() | 446 ControlledPrefsDisableExtensions() |
| 447 : iteration_(0) {} | 447 : iteration_(0) {} |
| 448 virtual ~ControlledPrefsDisableExtensions() {} | 448 virtual ~ControlledPrefsDisableExtensions() {} |
| 449 virtual void Initialize() OVERRIDE { | 449 virtual void Initialize() OVERRIDE { |
| 450 InstallExtensionControlledPref( | 450 InstallExtensionControlledPref( |
| 451 extension1(), kPref1, Value::CreateStringValue("val1")); | 451 extension1(), kPref1, new base::StringValue("val1")); |
| 452 // This becomes only active in the second verification phase. | 452 // This becomes only active in the second verification phase. |
| 453 prefs_.set_extensions_disabled(true); | 453 prefs_.set_extensions_disabled(true); |
| 454 } | 454 } |
| 455 virtual void Verify() OVERRIDE { | 455 virtual void Verify() OVERRIDE { |
| 456 std::string actual = prefs()->pref_service()->GetString(kPref1); | 456 std::string actual = prefs()->pref_service()->GetString(kPref1); |
| 457 if (iteration_ == 0) { | 457 if (iteration_ == 0) { |
| 458 EXPECT_EQ("val1", actual); | 458 EXPECT_EQ("val1", actual); |
| 459 ++iteration_; | 459 ++iteration_; |
| 460 } else { | 460 } else { |
| 461 EXPECT_EQ(kDefaultPref1, actual); | 461 EXPECT_EQ(kDefaultPref1, actual); |
| 462 } | 462 } |
| 463 } | 463 } |
| 464 | 464 |
| 465 private: | 465 private: |
| 466 int iteration_; | 466 int iteration_; |
| 467 }; | 467 }; |
| 468 TEST_F(ControlledPrefsDisableExtensions, ControlledPrefsDisableExtensions) { } | 468 TEST_F(ControlledPrefsDisableExtensions, ControlledPrefsDisableExtensions) { } |
| 469 | 469 |
| 470 } // namespace extensions | 470 } // namespace extensions |
| OLD | NEW |