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 |