Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
| 7 #include "base/scoped_temp_dir.h" | 7 #include "base/scoped_temp_dir.h" |
| 8 #include "base/stl_util-inl.h" | 8 #include "base/stl_util-inl.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| 11 #include "chrome/browser/browser_thread.h" | 11 #include "chrome/browser/browser_thread.h" |
| 12 #include "chrome/browser/extensions/extension_prefs.h" | 12 #include "chrome/browser/extensions/extension_prefs.h" |
| 13 #include "chrome/browser/extensions/test_extension_prefs.h" | 13 #include "chrome/browser/extensions/test_extension_prefs.h" |
| 14 #include "chrome/browser/prefs/pref_change_registrar.h" | |
| 14 #include "chrome/browser/prefs/pref_service.h" | 15 #include "chrome/browser/prefs/pref_service.h" |
| 15 #include "chrome/common/chrome_paths.h" | 16 #include "chrome/common/chrome_paths.h" |
| 16 #include "chrome/common/extensions/extension_constants.h" | 17 #include "chrome/common/extensions/extension_constants.h" |
| 18 #include "chrome/test/mock_notification_observer.h" | |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 20 |
| 19 using base::Time; | 21 using base::Time; |
| 20 using base::TimeDelta; | 22 using base::TimeDelta; |
| 21 | 23 |
| 24 const char kPref1[] = "path1.subpath"; | |
| 25 const char kPref2[] = "path2"; | |
| 26 const char kPref3[] = "path3"; | |
| 27 const char kPref4[] = "path4"; | |
| 28 | |
| 29 // Default values in case an extension pref value is not overridden. | |
| 30 const char kDefaultPref1[] = "default pref 1"; | |
| 31 const char kDefaultPref2[] = "default pref 2"; | |
| 32 const char kDefaultPref3[] = "default pref 3"; | |
| 33 const char kDefaultPref4[] = "default pref 4"; | |
| 34 | |
| 22 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { | 35 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { |
| 23 int schemes = URLPattern::SCHEME_ALL; | 36 int schemes = URLPattern::SCHEME_ALL; |
| 24 extent->AddPattern(URLPattern(schemes, pattern)); | 37 extent->AddPattern(URLPattern(schemes, pattern)); |
| 25 } | 38 } |
| 26 | 39 |
| 27 static void AssertEqualExtents(ExtensionExtent* extent1, | 40 static void AssertEqualExtents(ExtensionExtent* extent1, |
| 28 ExtensionExtent* extent2) { | 41 ExtensionExtent* extent2) { |
| 29 std::vector<URLPattern> patterns1 = extent1->patterns(); | 42 std::vector<URLPattern> patterns1 = extent1->patterns(); |
| 30 std::vector<URLPattern> patterns2 = extent2->patterns(); | 43 std::vector<URLPattern> patterns2 = extent2->patterns(); |
| 31 std::set<std::string> strings1; | 44 std::set<std::string> strings1; |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 48 | 61 |
| 49 // This function will get called once, and is the right place to do operations | 62 // This function will get called once, and is the right place to do operations |
| 50 // on ExtensionPrefs that write data. | 63 // on ExtensionPrefs that write data. |
| 51 virtual void Initialize() = 0; | 64 virtual void Initialize() = 0; |
| 52 | 65 |
| 53 // This function will be called twice - once while the original ExtensionPrefs | 66 // This function will be called twice - once while the original ExtensionPrefs |
| 54 // object is still alive, and once after recreation. Thus, it tests that | 67 // object is still alive, and once after recreation. Thus, it tests that |
| 55 // things don't break after any ExtensionPrefs startup work. | 68 // things don't break after any ExtensionPrefs startup work. |
| 56 virtual void Verify() = 0; | 69 virtual void Verify() = 0; |
| 57 | 70 |
| 71 // This function is called to Register preference default values. | |
| 72 virtual void RegisterPreferences() {} | |
| 73 | |
| 58 virtual void SetUp() { | 74 virtual void SetUp() { |
| 75 RegisterPreferences(); | |
| 59 Initialize(); | 76 Initialize(); |
| 60 } | 77 } |
| 61 | 78 |
| 62 virtual void TearDown() { | 79 virtual void TearDown() { |
| 63 Verify(); | 80 Verify(); |
| 64 | 81 |
| 65 // Reset ExtensionPrefs, and re-verify. | 82 // Reset ExtensionPrefs, and re-verify. |
| 66 prefs_.RecreateExtensionPrefs(); | 83 prefs_.RecreateExtensionPrefs(); |
| 84 RegisterPreferences(); | |
| 67 Verify(); | 85 Verify(); |
| 68 } | 86 } |
| 69 | 87 |
| 70 protected: | 88 protected: |
| 71 ExtensionPrefs* prefs() { return prefs_.prefs(); } | 89 ExtensionPrefs* prefs() { return prefs_.prefs(); } |
| 72 | 90 |
| 73 TestExtensionPrefs prefs_; | 91 TestExtensionPrefs prefs_; |
| 74 | 92 |
| 75 private: | 93 private: |
| 76 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); | 94 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 301 EXPECT_EQ(NULL, prefs()->GetInstalledExtensionInfo(not_installed_id_)); | 319 EXPECT_EQ(NULL, prefs()->GetInstalledExtensionInfo(not_installed_id_)); |
| 302 | 320 |
| 303 ExtensionList::const_iterator iter; | 321 ExtensionList::const_iterator iter; |
| 304 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { | 322 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { |
| 305 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); | 323 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); |
| 306 } | 324 } |
| 307 // Blacklist one installed and one not-installed extension id. | 325 // Blacklist one installed and one not-installed extension id. |
| 308 std::set<std::string> blacklisted_ids; | 326 std::set<std::string> blacklisted_ids; |
| 309 blacklisted_ids.insert(extensions_[0]->id()); | 327 blacklisted_ids.insert(extensions_[0]->id()); |
| 310 blacklisted_ids.insert(not_installed_id_); | 328 blacklisted_ids.insert(not_installed_id_); |
| 329 | |
|
Mattias Nissler (ping if slow)
2010/12/01 10:36:36
any reason for the added newline?
battre (please use the other)
2010/12/01 17:44:38
Done.
| |
| 311 prefs()->UpdateBlacklist(blacklisted_ids); | 330 prefs()->UpdateBlacklist(blacklisted_ids); |
| 312 } | 331 } |
| 313 | 332 |
| 314 virtual void Verify() { | 333 virtual void Verify() { |
| 315 // Make sure the two id's we expect to be blacklisted are. | 334 // Make sure the two id's we expect to be blacklisted are. |
| 316 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(extensions_[0]->id())); | 335 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(extensions_[0]->id())); |
| 317 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(not_installed_id_)); | 336 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(not_installed_id_)); |
| 318 | 337 |
| 319 // Make sure the other id's are not blacklisted. | 338 // Make sure the other id's are not blacklisted. |
| 320 ExtensionList::const_iterator iter; | 339 ExtensionList::const_iterator iter; |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 518 EXPECT_EQ(launch_index + 1, new_launch_index); | 537 EXPECT_EQ(launch_index + 1, new_launch_index); |
| 519 | 538 |
| 520 // This extension doesn't exist, so it should return -1. | 539 // This extension doesn't exist, so it should return -1. |
| 521 EXPECT_EQ(-1, prefs()->GetAppLaunchIndex("foo")); | 540 EXPECT_EQ(-1, prefs()->GetAppLaunchIndex("foo")); |
| 522 } | 541 } |
| 523 | 542 |
| 524 private: | 543 private: |
| 525 scoped_refptr<Extension> extension_; | 544 scoped_refptr<Extension> extension_; |
| 526 }; | 545 }; |
| 527 TEST_F(ExtensionPrefsAppLaunchIndex, ExtensionPrefsAppLaunchIndex) {} | 546 TEST_F(ExtensionPrefsAppLaunchIndex, ExtensionPrefsAppLaunchIndex) {} |
| 547 | |
| 548 namespace keys = extension_manifest_keys; | |
| 549 | |
| 550 class ExtensionPrefsPreferencesBase : public ExtensionPrefsTest { | |
| 551 public: | |
| 552 ExtensionPrefsPreferencesBase() | |
| 553 : ExtensionPrefsTest(), | |
| 554 ext1_(NULL), | |
| 555 ext2_(NULL), | |
| 556 ext3_(NULL), | |
| 557 installed() { | |
| 558 DictionaryValue simple_dict; | |
| 559 std::string error; | |
| 560 | |
| 561 simple_dict.SetString(keys::kVersion, "1.0.0.0"); | |
| 562 simple_dict.SetString(keys::kName, "unused"); | |
| 563 | |
| 564 ext1_scoped_ = Extension::Create( | |
| 565 prefs_.temp_dir().AppendASCII("ext1_"), Extension::INVALID, | |
| 566 simple_dict, false, &error); | |
| 567 ext2_scoped_ = Extension::Create( | |
| 568 prefs_.temp_dir().AppendASCII("ext2_"), Extension::INVALID, | |
| 569 simple_dict, false, &error); | |
| 570 ext3_scoped_ = Extension::Create( | |
| 571 prefs_.temp_dir().AppendASCII("ext3_"), Extension::INVALID, | |
| 572 simple_dict, false, &error); | |
| 573 | |
| 574 ext1_ = ext1_scoped_.get(); | |
| 575 ext2_ = ext2_scoped_.get(); | |
| 576 ext3_ = ext3_scoped_.get(); | |
| 577 | |
| 578 for (size_t i = 0; i < arraysize(installed); ++i) | |
| 579 installed[i] = false; | |
| 580 } | |
| 581 | |
| 582 void RegisterPreferences() { | |
| 583 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); | |
| 584 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); | |
| 585 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); | |
| 586 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); | |
| 587 } | |
| 588 | |
| 589 void InstallExtControlledPref(Extension *ext, | |
| 590 const std::string& key, | |
| 591 Value* val) { | |
| 592 // Install extension the first time a preference is set for it. | |
| 593 Extension* extensions[] = {ext1_, ext2_, ext3_}; | |
| 594 for (int i = 0; i < 3; ++i) { | |
| 595 if (ext == extensions[i] && !installed[i]) { | |
| 596 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | |
| 597 installed[i] = true; | |
| 598 break; | |
| 599 } | |
| 600 } | |
| 601 | |
| 602 prefs()->SetExtensionControlledPref(ext->id(), key, val); | |
| 603 } | |
| 604 | |
| 605 void UninstallExtension(const std::string& extension_id) { | |
| 606 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); | |
| 607 } | |
| 608 | |
| 609 // Weak references, for convenience. | |
| 610 Extension* ext1_; | |
| 611 Extension* ext2_; | |
| 612 Extension* ext3_; | |
| 613 | |
| 614 // Flags indicating whether each of the extensions has been installed, yet. | |
| 615 bool installed[3]; | |
| 616 | |
| 617 private: | |
| 618 scoped_refptr<Extension> ext1_scoped_; | |
| 619 scoped_refptr<Extension> ext2_scoped_; | |
| 620 scoped_refptr<Extension> ext3_scoped_; | |
| 621 }; | |
| 622 | |
| 623 class ExtensionPrefsInstallOneExtension | |
| 624 : public ExtensionPrefsPreferencesBase { | |
| 625 virtual void Initialize() { | |
| 626 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 627 } | |
| 628 virtual void Verify() { | |
| 629 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
| 630 EXPECT_EQ("val1", actual); | |
| 631 } | |
| 632 }; | |
| 633 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} | |
| 634 | |
| 635 // Make sure the last-installed extension wins for each preference. | |
| 636 class ExtensionPrefsInstallOverwrittenExtensions | |
| 637 : public ExtensionPrefsPreferencesBase { | |
| 638 virtual void Initialize() { | |
| 639 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 640 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
| 641 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
| 642 | |
| 643 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
| 644 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
| 645 | |
| 646 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val6")); | |
| 647 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val7")); | |
| 648 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val8")); | |
| 649 } | |
| 650 virtual void Verify() { | |
| 651 std::string actual; | |
| 652 actual = prefs()->pref_service()->GetString(kPref1); | |
| 653 EXPECT_EQ("val3", actual); | |
| 654 actual = prefs()->pref_service()->GetString(kPref2); | |
| 655 EXPECT_EQ("val5", actual); | |
| 656 actual = prefs()->pref_service()->GetString(kPref3); | |
| 657 EXPECT_EQ("val8", actual); | |
| 658 } | |
| 659 }; | |
| 660 TEST_F(ExtensionPrefsInstallOverwrittenExtensions, | |
| 661 ExtensionPrefsInstallOverwrittenExtensions) {} | |
| 662 | |
| 663 // Make sure the last-installed extension wins even if other extensions set | |
| 664 // the same or different preferences later. | |
| 665 class ExtensionPrefsInstallInterleavedExtensions | |
| 666 : public ExtensionPrefsPreferencesBase { | |
| 667 virtual void Initialize() { | |
| 668 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 669 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val2")); | |
| 670 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val3")); | |
| 671 | |
| 672 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val4")); | |
| 673 InstallExtControlledPref(ext2_, kPref3, Value::CreateStringValue("val5")); | |
| 674 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
| 675 | |
| 676 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val7")); | |
| 677 } | |
| 678 virtual void Verify() { | |
| 679 std::string actual; | |
| 680 actual = prefs()->pref_service()->GetString(kPref1); | |
| 681 EXPECT_EQ("val7", actual); | |
| 682 actual = prefs()->pref_service()->GetString(kPref2); | |
| 683 EXPECT_EQ("val2", actual); | |
| 684 actual = prefs()->pref_service()->GetString(kPref3); | |
| 685 EXPECT_EQ("val4", actual); | |
| 686 } | |
| 687 }; | |
| 688 TEST_F(ExtensionPrefsInstallInterleavedExtensions, | |
| 689 ExtensionPrefsInstallInterleavedExtensions) {} | |
| 690 | |
| 691 class ExtensionPrefsUninstallOnlyExtension | |
| 692 : public ExtensionPrefsPreferencesBase { | |
| 693 virtual void Initialize() { | |
| 694 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 695 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); | |
| 696 | |
| 697 UninstallExtension(ext1_->id()); | |
| 698 } | |
| 699 virtual void Verify() { | |
| 700 std::string actual; | |
| 701 actual = prefs()->pref_service()->GetString(kPref1); | |
| 702 EXPECT_EQ(kDefaultPref1, actual); | |
| 703 actual = prefs()->pref_service()->GetString(kPref2); | |
| 704 EXPECT_EQ(kDefaultPref2, actual); | |
| 705 } | |
| 706 }; | |
| 707 TEST_F(ExtensionPrefsUninstallOnlyExtension, | |
| 708 ExtensionPrefsUninstallOnlyExtension) {} | |
| 709 | |
| 710 // Tests uninstalling an extension that wasn't winning for any preferences. | |
| 711 class ExtensionPrefsUninstallIrrelevantExtension | |
| 712 : public ExtensionPrefsPreferencesBase { | |
| 713 virtual void Initialize() { | |
| 714 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 715 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
| 716 | |
| 717 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val3")); | |
| 718 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val4")); | |
| 719 | |
| 720 UninstallExtension(ext1_->id()); | |
| 721 } | |
| 722 virtual void Verify() { | |
| 723 std::string actual; | |
| 724 actual = prefs()->pref_service()->GetString(kPref1); | |
| 725 EXPECT_EQ("val2", actual); | |
| 726 actual = prefs()->pref_service()->GetString(kPref2); | |
| 727 EXPECT_EQ("val4", actual); | |
| 728 } | |
| 729 }; | |
| 730 TEST_F(ExtensionPrefsUninstallIrrelevantExtension, | |
| 731 ExtensionPrefsUninstallIrrelevantExtension) {} | |
| 732 | |
| 733 // Tests uninstalling an extension that was winning for all preferences. | |
| 734 class ExtensionPrefsUninstallExtensionFromTop | |
| 735 : public ExtensionPrefsPreferencesBase { | |
| 736 virtual void Initialize() { | |
| 737 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 738 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
| 739 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
| 740 | |
| 741 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
| 742 InstallExtControlledPref(ext3_, kPref2, Value::CreateStringValue("val5")); | |
| 743 | |
| 744 UninstallExtension(ext3_->id()); | |
| 745 } | |
| 746 virtual void Verify() { | |
| 747 std::string actual; | |
| 748 actual = prefs()->pref_service()->GetString(kPref1); | |
| 749 EXPECT_EQ("val2", actual); | |
| 750 actual = prefs()->pref_service()->GetString(kPref2); | |
| 751 EXPECT_EQ("val4", actual); | |
| 752 } | |
| 753 }; | |
| 754 TEST_F(ExtensionPrefsUninstallExtensionFromTop, | |
| 755 ExtensionPrefsUninstallExtensionFromTop) {} | |
| 756 | |
| 757 // Tests uninstalling an extension that was winning for only some preferences. | |
| 758 class ExtensionPrefsUninstallExtensionFromMiddle | |
| 759 : public ExtensionPrefsPreferencesBase { | |
| 760 virtual void Initialize() { | |
| 761 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 762 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
| 763 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
| 764 | |
| 765 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
| 766 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
| 767 | |
| 768 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
| 769 | |
| 770 InstallExtControlledPref(ext2_, kPref4, Value::CreateStringValue("val7")); | |
| 771 | |
| 772 UninstallExtension(ext2_->id()); | |
| 773 } | |
| 774 virtual void Verify() { | |
| 775 std::string actual; | |
| 776 actual = prefs()->pref_service()->GetString(kPref1); | |
| 777 EXPECT_EQ("val3", actual); | |
| 778 actual = prefs()->pref_service()->GetString(kPref2); | |
| 779 EXPECT_EQ("val4", actual); | |
| 780 actual = prefs()->pref_service()->GetString(kPref3); | |
| 781 EXPECT_EQ("val6", actual); | |
| 782 actual = prefs()->pref_service()->GetString(kPref4); | |
| 783 EXPECT_EQ(kDefaultPref4, actual); | |
| 784 } | |
| 785 }; | |
| 786 TEST_F(ExtensionPrefsUninstallExtensionFromMiddle, | |
| 787 ExtensionPrefsUninstallExtensionFromMiddle) {} | |
| 788 | |
| 789 // Tests triggering of notifications to registered observers | |
| 790 class ExtensionPrefsNotifyWhenNeeded | |
| 791 : public ExtensionPrefsPreferencesBase { | |
| 792 virtual void Initialize() { | |
| 793 using testing::_; | |
| 794 using testing::Mock; | |
| 795 using testing::StrEq; | |
| 796 | |
| 797 scoped_ptr<MockNotificationObserver> observer( | |
| 798 new MockNotificationObserver()); | |
| 799 PrefChangeRegistrar registrar; | |
| 800 registrar.Init(prefs()->pref_service()); | |
| 801 registrar.Add(kPref1, observer.get()); | |
| 802 | |
| 803 EXPECT_CALL(*observer, Observe(_, _, _)); | |
| 804 InstallExtControlledPref(ext1_, kPref1, | |
| 805 Value::CreateStringValue("https://www.chromium.org")); | |
| 806 Mock::VerifyAndClearExpectations(observer.get()); | |
| 807 | |
| 808 EXPECT_CALL(*observer, Observe(_, _, _)).Times(0); | |
| 809 InstallExtControlledPref(ext1_, kPref1, | |
| 810 Value::CreateStringValue("https://www.chromium.org")); | |
| 811 Mock::VerifyAndClearExpectations(observer.get()); | |
| 812 | |
| 813 EXPECT_CALL(*observer, Observe(_, _, _)).Times(2); | |
| 814 InstallExtControlledPref(ext1_, kPref1, | |
| 815 Value::CreateStringValue("chrome://newtab")); | |
| 816 | |
| 817 UninstallExtension(ext1_->id()); | |
| 818 registrar.Remove(kPref1, observer.get()); | |
| 819 } | |
| 820 virtual void Verify() { | |
| 821 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
| 822 EXPECT_EQ(kDefaultPref1, actual); | |
| 823 } | |
| 824 }; | |
| 825 TEST_F(ExtensionPrefsNotifyWhenNeeded, | |
| 826 ExtensionPrefsNotifyWhenNeeded) {} | |
| 827 | |
| 828 // Tests disabling an extension | |
| 829 class ExtensionPrefsDisableExt | |
| 830 : public ExtensionPrefsPreferencesBase { | |
| 831 virtual void Initialize() { | |
| 832 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 833 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
| 834 EXPECT_EQ("val1", actual); | |
| 835 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | |
| 836 } | |
| 837 virtual void Verify() { | |
| 838 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
| 839 EXPECT_EQ(kDefaultPref1, actual); | |
| 840 } | |
| 841 }; | |
| 842 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} | |
| 843 | |
| 844 // Tests disabling and reenabling an extension | |
| 845 class ExtensionPrefsReenableExt | |
| 846 : public ExtensionPrefsPreferencesBase { | |
| 847 virtual void Initialize() { | |
| 848 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
| 849 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | |
| 850 prefs()->SetExtensionState(ext1_, Extension::ENABLED); | |
| 851 } | |
| 852 virtual void Verify() { | |
| 853 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
| 854 EXPECT_EQ("val1", actual); | |
| 855 } | |
| 856 }; | |
| 857 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsReenableExt) {} | |
| OLD | NEW |