OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/extensions/extension_prefs.h" | 11 #include "chrome/browser/extensions/extension_prefs.h" |
12 #include "chrome/browser/extensions/test_extension_prefs.h" | 12 #include "chrome/browser/extensions/test_extension_prefs.h" |
13 #include "chrome/browser/prefs/pref_change_registrar.h" | 13 #include "chrome/browser/prefs/pref_change_registrar.h" |
14 #include "chrome/browser/prefs/pref_service.h" | 14 #include "chrome/browser/prefs/pref_service.h" |
15 #include "chrome/common/chrome_paths.h" | 15 #include "chrome/common/chrome_paths.h" |
16 #include "chrome/common/extensions/extension_constants.h" | 16 #include "chrome/common/extensions/extension_constants.h" |
17 #include "chrome/common/notification_details.h" | 17 #include "chrome/common/notification_details.h" |
18 #include "chrome/common/notification_observer_mock.h" | 18 #include "chrome/common/notification_observer_mock.h" |
19 #include "chrome/common/notification_source.h" | 19 #include "chrome/common/notification_source.h" |
20 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
21 | 21 |
22 using base::Time; | 22 using base::Time; |
23 using base::TimeDelta; | 23 using base::TimeDelta; |
24 | 24 |
25 namespace { | |
26 | |
25 const char kPref1[] = "path1.subpath"; | 27 const char kPref1[] = "path1.subpath"; |
26 const char kPref2[] = "path2"; | 28 const char kPref2[] = "path2"; |
27 const char kPref3[] = "path3"; | 29 const char kPref3[] = "path3"; |
28 const char kPref4[] = "path4"; | 30 const char kPref4[] = "path4"; |
29 | 31 |
30 // Default values in case an extension pref value is not overridden. | 32 // Default values in case an extension pref value is not overridden. |
31 const char kDefaultPref1[] = "default pref 1"; | 33 const char kDefaultPref1[] = "default pref 1"; |
32 const char kDefaultPref2[] = "default pref 2"; | 34 const char kDefaultPref2[] = "default pref 2"; |
33 const char kDefaultPref3[] = "default pref 3"; | 35 const char kDefaultPref3[] = "default pref 3"; |
34 const char kDefaultPref4[] = "default pref 4"; | 36 const char kDefaultPref4[] = "default pref 4"; |
35 | 37 |
38 } // namespace | |
39 | |
36 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { | 40 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { |
danno
2011/01/14 13:05:09
maybe an anon namespace because of the generic nam
battre
2011/01/20 17:59:29
Is already static.
| |
37 int schemes = URLPattern::SCHEME_ALL; | 41 int schemes = URLPattern::SCHEME_ALL; |
38 extent->AddPattern(URLPattern(schemes, pattern)); | 42 extent->AddPattern(URLPattern(schemes, pattern)); |
39 } | 43 } |
40 | 44 |
41 static void AssertEqualExtents(ExtensionExtent* extent1, | 45 static void AssertEqualExtents(ExtensionExtent* extent1, |
42 ExtensionExtent* extent2) { | 46 ExtensionExtent* extent2) { |
43 std::vector<URLPattern> patterns1 = extent1->patterns(); | 47 std::vector<URLPattern> patterns1 = extent1->patterns(); |
44 std::vector<URLPattern> patterns2 = extent2->patterns(); | 48 std::vector<URLPattern> patterns2 = extent2->patterns(); |
45 std::set<std::string> strings1; | 49 std::set<std::string> strings1; |
46 EXPECT_EQ(patterns1.size(), patterns2.size()); | 50 EXPECT_EQ(patterns1.size(), patterns2.size()); |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
584 void RegisterPreferences() { | 588 void RegisterPreferences() { |
585 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); | 589 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); |
586 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); | 590 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); |
587 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); | 591 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); |
588 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); | 592 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); |
589 } | 593 } |
590 | 594 |
591 void InstallExtControlledPref(Extension *ext, | 595 void InstallExtControlledPref(Extension *ext, |
592 const std::string& key, | 596 const std::string& key, |
593 Value* val) { | 597 Value* val) { |
594 // Install extension the first time a preference is set for it. | 598 EnsureExtensionInstalled(ext); |
595 Extension* extensions[] = {ext1_, ext2_, ext3_}; | 599 prefs()->SetExtensionControlledPref(ext->id(), key, false, val); |
596 for (int i = 0; i < 3; ++i) { | 600 } |
597 if (ext == extensions[i] && !installed[i]) { | |
598 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | |
599 installed[i] = true; | |
600 break; | |
601 } | |
602 } | |
603 | 601 |
604 prefs()->SetExtensionControlledPref(ext->id(), key, val); | 602 void InstallExtControlledPrefIncognito(Extension *ext, |
603 const std::string& key, | |
604 Value* val) { | |
605 EnsureExtensionInstalled(ext); | |
606 prefs()->SetExtensionControlledPref(ext->id(), key, true, val); | |
607 } | |
608 | |
609 void InstallExtension(Extension *ext) { | |
610 EnsureExtensionInstalled(ext); | |
605 } | 611 } |
606 | 612 |
607 void UninstallExtension(const std::string& extension_id) { | 613 void UninstallExtension(const std::string& extension_id) { |
608 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); | 614 EnsureExtensionUninstalled(extension_id); |
609 } | 615 } |
610 | 616 |
611 // Weak references, for convenience. | 617 // Weak references, for convenience. |
612 Extension* ext1_; | 618 Extension* ext1_; |
613 Extension* ext2_; | 619 Extension* ext2_; |
614 Extension* ext3_; | 620 Extension* ext3_; |
615 | 621 |
616 // Flags indicating whether each of the extensions has been installed, yet. | 622 // Flags indicating whether each of the extensions has been installed, yet. |
617 bool installed[3]; | 623 bool installed[3]; |
618 | 624 |
619 private: | 625 private: |
626 void EnsureExtensionInstalled(Extension *ext) { | |
627 // Install extension the first time a preference is set for it. | |
628 Extension* extensions[] = {ext1_, ext2_, ext3_}; | |
629 for (int i = 0; i < 3; ++i) { | |
630 if (ext == extensions[i] && !installed[i]) { | |
631 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | |
632 installed[i] = true; | |
633 break; | |
634 } | |
635 } | |
636 } | |
637 | |
638 void EnsureExtensionUninstalled(const std::string& extension_id) { | |
639 Extension* extensions[] = {ext1_, ext2_, ext3_}; | |
640 for (int i = 0; i < 3; ++i) { | |
641 if (extensions[i]->id() == extension_id) { | |
642 installed[i] = false; | |
643 break; | |
644 } | |
645 } | |
646 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); | |
647 } | |
648 | |
620 scoped_refptr<Extension> ext1_scoped_; | 649 scoped_refptr<Extension> ext1_scoped_; |
621 scoped_refptr<Extension> ext2_scoped_; | 650 scoped_refptr<Extension> ext2_scoped_; |
622 scoped_refptr<Extension> ext3_scoped_; | 651 scoped_refptr<Extension> ext3_scoped_; |
623 }; | 652 }; |
624 | 653 |
625 class ExtensionPrefsInstallOneExtension | 654 class ExtensionPrefsInstallOneExtension |
626 : public ExtensionPrefsPreferencesBase { | 655 : public ExtensionPrefsPreferencesBase { |
627 virtual void Initialize() { | 656 virtual void Initialize() { |
628 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 657 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
629 } | 658 } |
630 virtual void Verify() { | 659 virtual void Verify() { |
631 std::string actual = prefs()->pref_service()->GetString(kPref1); | 660 std::string actual = prefs()->pref_service()->GetString(kPref1); |
632 EXPECT_EQ("val1", actual); | 661 EXPECT_EQ("val1", actual); |
633 } | 662 } |
634 }; | 663 }; |
635 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} | 664 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} |
636 | 665 |
637 // Make sure the last-installed extension wins for each preference. | 666 // Check that we forget incognito values after a reload. |
638 class ExtensionPrefsInstallOverwrittenExtensions | 667 class ExtensionPrefsInstallIncognito |
668 : public ExtensionPrefsPreferencesBase { | |
669 public: | |
670 ExtensionPrefsInstallIncognito() : iteration_(0) {} | |
671 | |
672 virtual void Initialize() { | |
673 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
674 InstallExtControlledPrefIncognito(ext1_, kPref1, | |
675 Value::CreateStringValue("val2")); | |
676 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | |
677 std::string actual = incog_prefs->GetString(kPref1); | |
678 EXPECT_EQ("val2", actual); | |
679 } | |
680 virtual void Verify() { | |
681 // Main pref service shall see only non-incognito settings. | |
682 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
683 EXPECT_EQ("val1", actual); | |
684 // Incognito pref service shall see incognito values only during first run. | |
685 // Once the pref service was reloaded, all values shall be discarded. | |
686 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | |
687 actual = incog_prefs->GetString(kPref1); | |
688 if (iteration_ == 0) { | |
689 EXPECT_EQ("val2", actual); | |
690 } else { | |
691 EXPECT_EQ("val1", actual); | |
692 } | |
693 ++iteration_; | |
694 } | |
695 int iteration_; | |
696 }; | |
697 TEST_F(ExtensionPrefsInstallIncognito, ExtensionPrefsInstallOneExtension) {} | |
698 | |
699 class ExtensionPrefsUninstallExtension | |
639 : public ExtensionPrefsPreferencesBase { | 700 : public ExtensionPrefsPreferencesBase { |
640 virtual void Initialize() { | 701 virtual void Initialize() { |
641 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 702 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
642 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
643 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
644 | |
645 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
646 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
647 | |
648 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val6")); | |
649 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val7")); | |
650 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val8")); | |
651 } | |
652 virtual void Verify() { | |
653 std::string actual; | |
654 actual = prefs()->pref_service()->GetString(kPref1); | |
655 EXPECT_EQ("val3", actual); | |
656 actual = prefs()->pref_service()->GetString(kPref2); | |
657 EXPECT_EQ("val5", actual); | |
658 actual = prefs()->pref_service()->GetString(kPref3); | |
659 EXPECT_EQ("val8", actual); | |
660 } | |
661 }; | |
662 TEST_F(ExtensionPrefsInstallOverwrittenExtensions, | |
663 ExtensionPrefsInstallOverwrittenExtensions) {} | |
664 | |
665 // Make sure the last-installed extension wins even if other extensions set | |
666 // the same or different preferences later. | |
667 class ExtensionPrefsInstallInterleavedExtensions | |
668 : public ExtensionPrefsPreferencesBase { | |
669 virtual void Initialize() { | |
670 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
671 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val2")); | |
672 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val3")); | |
673 | |
674 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val4")); | |
675 InstallExtControlledPref(ext2_, kPref3, Value::CreateStringValue("val5")); | |
676 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
677 | |
678 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val7")); | |
679 } | |
680 virtual void Verify() { | |
681 std::string actual; | |
682 actual = prefs()->pref_service()->GetString(kPref1); | |
683 EXPECT_EQ("val7", actual); | |
684 actual = prefs()->pref_service()->GetString(kPref2); | |
685 EXPECT_EQ("val2", actual); | |
686 actual = prefs()->pref_service()->GetString(kPref3); | |
687 EXPECT_EQ("val4", actual); | |
688 } | |
689 }; | |
690 TEST_F(ExtensionPrefsInstallInterleavedExtensions, | |
691 ExtensionPrefsInstallInterleavedExtensions) {} | |
692 | |
693 class ExtensionPrefsUninstallOnlyExtension | |
694 : public ExtensionPrefsPreferencesBase { | |
695 virtual void Initialize() { | |
696 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
697 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); | 703 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); |
698 | 704 |
699 UninstallExtension(ext1_->id()); | 705 UninstallExtension(ext1_->id()); |
700 } | 706 } |
701 virtual void Verify() { | 707 virtual void Verify() { |
702 std::string actual; | 708 std::string actual; |
703 actual = prefs()->pref_service()->GetString(kPref1); | 709 actual = prefs()->pref_service()->GetString(kPref1); |
704 EXPECT_EQ(kDefaultPref1, actual); | 710 EXPECT_EQ(kDefaultPref1, actual); |
705 actual = prefs()->pref_service()->GetString(kPref2); | 711 actual = prefs()->pref_service()->GetString(kPref2); |
706 EXPECT_EQ(kDefaultPref2, actual); | 712 EXPECT_EQ(kDefaultPref2, actual); |
707 } | 713 } |
708 }; | 714 }; |
709 TEST_F(ExtensionPrefsUninstallOnlyExtension, | 715 TEST_F(ExtensionPrefsUninstallExtension, |
710 ExtensionPrefsUninstallOnlyExtension) {} | 716 ExtensionPrefsUninstallExtension) {} |
711 | 717 |
712 // Tests uninstalling an extension that wasn't winning for any preferences. | 718 // Tests triggering of notifications to registered observers. |
713 class ExtensionPrefsUninstallIrrelevantExtension | |
714 : public ExtensionPrefsPreferencesBase { | |
715 virtual void Initialize() { | |
716 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
717 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
718 | |
719 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val3")); | |
720 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val4")); | |
721 | |
722 UninstallExtension(ext1_->id()); | |
723 } | |
724 virtual void Verify() { | |
725 std::string actual; | |
726 actual = prefs()->pref_service()->GetString(kPref1); | |
727 EXPECT_EQ("val2", actual); | |
728 actual = prefs()->pref_service()->GetString(kPref2); | |
729 EXPECT_EQ("val4", actual); | |
730 } | |
731 }; | |
732 TEST_F(ExtensionPrefsUninstallIrrelevantExtension, | |
733 ExtensionPrefsUninstallIrrelevantExtension) {} | |
734 | |
735 // Tests uninstalling an extension that was winning for all preferences. | |
736 class ExtensionPrefsUninstallExtensionFromTop | |
737 : public ExtensionPrefsPreferencesBase { | |
738 virtual void Initialize() { | |
739 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
740 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
741 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
742 | |
743 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
744 InstallExtControlledPref(ext3_, kPref2, Value::CreateStringValue("val5")); | |
745 | |
746 UninstallExtension(ext3_->id()); | |
747 } | |
748 virtual void Verify() { | |
749 std::string actual; | |
750 actual = prefs()->pref_service()->GetString(kPref1); | |
751 EXPECT_EQ("val2", actual); | |
752 actual = prefs()->pref_service()->GetString(kPref2); | |
753 EXPECT_EQ("val4", actual); | |
754 } | |
755 }; | |
756 TEST_F(ExtensionPrefsUninstallExtensionFromTop, | |
757 ExtensionPrefsUninstallExtensionFromTop) {} | |
758 | |
759 // Tests uninstalling an extension that was winning for only some preferences. | |
760 class ExtensionPrefsUninstallExtensionFromMiddle | |
761 : public ExtensionPrefsPreferencesBase { | |
762 virtual void Initialize() { | |
763 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
764 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
765 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
766 | |
767 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
768 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
769 | |
770 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
771 | |
772 InstallExtControlledPref(ext2_, kPref4, Value::CreateStringValue("val7")); | |
773 | |
774 UninstallExtension(ext2_->id()); | |
775 } | |
776 virtual void Verify() { | |
777 std::string actual; | |
778 actual = prefs()->pref_service()->GetString(kPref1); | |
779 EXPECT_EQ("val3", actual); | |
780 actual = prefs()->pref_service()->GetString(kPref2); | |
781 EXPECT_EQ("val4", actual); | |
782 actual = prefs()->pref_service()->GetString(kPref3); | |
783 EXPECT_EQ("val6", actual); | |
784 actual = prefs()->pref_service()->GetString(kPref4); | |
785 EXPECT_EQ(kDefaultPref4, actual); | |
786 } | |
787 }; | |
788 TEST_F(ExtensionPrefsUninstallExtensionFromMiddle, | |
789 ExtensionPrefsUninstallExtensionFromMiddle) {} | |
790 | |
791 // Tests triggering of notifications to registered observers | |
792 class ExtensionPrefsNotifyWhenNeeded | 719 class ExtensionPrefsNotifyWhenNeeded |
793 : public ExtensionPrefsPreferencesBase { | 720 : public ExtensionPrefsPreferencesBase { |
794 virtual void Initialize() { | 721 virtual void Initialize() { |
795 using testing::_; | 722 using testing::_; |
796 using testing::Mock; | 723 using testing::Mock; |
797 using testing::StrEq; | 724 using testing::StrEq; |
798 | 725 |
799 scoped_ptr<NotificationObserverMock> observer( | 726 NotificationObserverMock observer; |
800 new NotificationObserverMock()); | |
801 PrefChangeRegistrar registrar; | 727 PrefChangeRegistrar registrar; |
802 registrar.Init(prefs()->pref_service()); | 728 registrar.Init(prefs()->pref_service()); |
803 registrar.Add(kPref1, observer.get()); | 729 registrar.Add(kPref1, &observer); |
804 | 730 |
805 EXPECT_CALL(*observer, Observe(_, _, _)); | 731 NotificationObserverMock incognito_observer; |
732 scoped_ptr<PrefService> incog_prefs(prefs_.CreateIncognitoPrefService()); | |
733 PrefChangeRegistrar incognito_registrar; | |
734 incognito_registrar.Init(incog_prefs.get()); | |
735 incognito_registrar.Add(kPref1, &incognito_observer); | |
736 | |
737 // Write value and check notification. | |
738 EXPECT_CALL(observer, Observe(_, _, _)); | |
739 EXPECT_CALL(incognito_observer, Observe(_, _, _)); | |
806 InstallExtControlledPref(ext1_, kPref1, | 740 InstallExtControlledPref(ext1_, kPref1, |
807 Value::CreateStringValue("https://www.chromium.org")); | 741 Value::CreateStringValue("https://www.chromium.org")); |
808 Mock::VerifyAndClearExpectations(observer.get()); | 742 Mock::VerifyAndClearExpectations(&observer); |
743 Mock::VerifyAndClearExpectations(&incognito_observer); | |
809 | 744 |
810 EXPECT_CALL(*observer, Observe(_, _, _)).Times(0); | 745 // Write same value. |
746 EXPECT_CALL(observer, Observe(_, _, _)).Times(0); | |
747 EXPECT_CALL(incognito_observer, Observe(_, _, _)).Times(0); | |
811 InstallExtControlledPref(ext1_, kPref1, | 748 InstallExtControlledPref(ext1_, kPref1, |
812 Value::CreateStringValue("https://www.chromium.org")); | 749 Value::CreateStringValue("https://www.chromium.org")); |
813 Mock::VerifyAndClearExpectations(observer.get()); | 750 Mock::VerifyAndClearExpectations(&observer); |
751 Mock::VerifyAndClearExpectations(&incognito_observer); | |
814 | 752 |
815 EXPECT_CALL(*observer, Observe(_, _, _)).Times(2); | 753 // Change value. |
754 EXPECT_CALL(observer, Observe(_, _, _)); | |
755 EXPECT_CALL(incognito_observer, Observe(_, _, _)); | |
816 InstallExtControlledPref(ext1_, kPref1, | 756 InstallExtControlledPref(ext1_, kPref1, |
817 Value::CreateStringValue("chrome://newtab")); | 757 Value::CreateStringValue("chrome://newtab")); |
758 Mock::VerifyAndClearExpectations(&observer); | |
759 Mock::VerifyAndClearExpectations(&incognito_observer); | |
818 | 760 |
761 // Change only incognito value. | |
762 EXPECT_CALL(observer, Observe(_, _, _)).Times(0); | |
763 EXPECT_CALL(incognito_observer, Observe(_, _, _)); | |
764 InstallExtControlledPrefIncognito(ext1_, kPref1, | |
765 Value::CreateStringValue("chrome://newtab2")); | |
766 Mock::VerifyAndClearExpectations(&observer); | |
767 Mock::VerifyAndClearExpectations(&incognito_observer); | |
768 | |
769 // Uninstall. | |
770 EXPECT_CALL(observer, Observe(_, _, _)); | |
771 EXPECT_CALL(incognito_observer, Observe(_, _, _)); | |
819 UninstallExtension(ext1_->id()); | 772 UninstallExtension(ext1_->id()); |
820 registrar.Remove(kPref1, observer.get()); | 773 Mock::VerifyAndClearExpectations(&observer); |
774 Mock::VerifyAndClearExpectations(&incognito_observer); | |
775 | |
776 registrar.Remove(kPref1, &observer); | |
777 incognito_registrar.Remove(kPref1, &incognito_observer); | |
821 } | 778 } |
822 virtual void Verify() { | 779 virtual void Verify() { |
823 std::string actual = prefs()->pref_service()->GetString(kPref1); | 780 std::string actual = prefs()->pref_service()->GetString(kPref1); |
824 EXPECT_EQ(kDefaultPref1, actual); | 781 EXPECT_EQ(kDefaultPref1, actual); |
825 } | 782 } |
826 }; | 783 }; |
827 TEST_F(ExtensionPrefsNotifyWhenNeeded, | 784 TEST_F(ExtensionPrefsNotifyWhenNeeded, |
828 ExtensionPrefsNotifyWhenNeeded) {} | 785 ExtensionPrefsNotifyWhenNeeded) {} |
829 | 786 |
830 // Tests disabling an extension | 787 // Tests disabling an extension. |
831 class ExtensionPrefsDisableExt | 788 class ExtensionPrefsDisableExt |
832 : public ExtensionPrefsPreferencesBase { | 789 : public ExtensionPrefsPreferencesBase { |
833 virtual void Initialize() { | 790 virtual void Initialize() { |
834 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 791 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
835 std::string actual = prefs()->pref_service()->GetString(kPref1); | 792 std::string actual = prefs()->pref_service()->GetString(kPref1); |
836 EXPECT_EQ("val1", actual); | 793 EXPECT_EQ("val1", actual); |
837 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | 794 prefs()->SetExtensionState(ext1_, Extension::DISABLED); |
838 } | 795 } |
839 virtual void Verify() { | 796 virtual void Verify() { |
840 std::string actual = prefs()->pref_service()->GetString(kPref1); | 797 std::string actual = prefs()->pref_service()->GetString(kPref1); |
841 EXPECT_EQ(kDefaultPref1, actual); | 798 EXPECT_EQ(kDefaultPref1, actual); |
842 } | 799 } |
843 }; | 800 }; |
844 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} | 801 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} |
845 | 802 |
846 // Tests disabling and reenabling an extension | 803 // Tests disabling and reenabling an extension. |
847 class ExtensionPrefsReenableExt | 804 class ExtensionPrefsReenableExt |
848 : public ExtensionPrefsPreferencesBase { | 805 : public ExtensionPrefsPreferencesBase { |
849 virtual void Initialize() { | 806 virtual void Initialize() { |
850 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 807 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
851 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | 808 prefs()->SetExtensionState(ext1_, Extension::DISABLED); |
852 prefs()->SetExtensionState(ext1_, Extension::ENABLED); | 809 prefs()->SetExtensionState(ext1_, Extension::ENABLED); |
853 } | 810 } |
854 virtual void Verify() { | 811 virtual void Verify() { |
855 std::string actual = prefs()->pref_service()->GetString(kPref1); | 812 std::string actual = prefs()->pref_service()->GetString(kPref1); |
856 EXPECT_EQ("val1", actual); | 813 EXPECT_EQ("val1", actual); |
(...skipping 12 matching lines...) Expand all Loading... | |
869 } | 826 } |
870 MOCK_METHOD0(Die, void()); | 827 MOCK_METHOD0(Die, void()); |
871 }; | 828 }; |
872 | 829 |
873 class ExtensionPrefsSetExtensionControlledPref | 830 class ExtensionPrefsSetExtensionControlledPref |
874 : public ExtensionPrefsPreferencesBase { | 831 : public ExtensionPrefsPreferencesBase { |
875 public: | 832 public: |
876 virtual void Initialize() { | 833 virtual void Initialize() { |
877 MockStringValue* v1 = new MockStringValue("https://www.chromium.org"); | 834 MockStringValue* v1 = new MockStringValue("https://www.chromium.org"); |
878 MockStringValue* v2 = new MockStringValue("https://www.chromium.org"); | 835 MockStringValue* v2 = new MockStringValue("https://www.chromium.org"); |
836 MockStringValue* v1i = new MockStringValue("https://www.chromium.org"); | |
837 MockStringValue* v2i = new MockStringValue("https://www.chromium.org"); | |
879 // Ownership is taken, value shall not be deleted. | 838 // Ownership is taken, value shall not be deleted. |
880 EXPECT_CALL(*v1, Die()).Times(0); | 839 EXPECT_CALL(*v1, Die()).Times(0); |
840 EXPECT_CALL(*v1i, Die()).Times(0); | |
881 InstallExtControlledPref(ext1_, kPref1, v1); | 841 InstallExtControlledPref(ext1_, kPref1, v1); |
842 InstallExtControlledPrefIncognito(ext1_, kPref1, v1i); | |
882 testing::Mock::VerifyAndClearExpectations(v1); | 843 testing::Mock::VerifyAndClearExpectations(v1); |
844 testing::Mock::VerifyAndClearExpectations(v1i); | |
883 // Make sure there is no memory leak and both values are deleted. | 845 // Make sure there is no memory leak and both values are deleted. |
846 EXPECT_CALL(*v1, Die()).Times(1); | |
847 EXPECT_CALL(*v1i, Die()).Times(1); | |
884 EXPECT_CALL(*v2, Die()).Times(1); | 848 EXPECT_CALL(*v2, Die()).Times(1); |
885 EXPECT_CALL(*v1, Die()).Times(1); | 849 EXPECT_CALL(*v2i, Die()).Times(1); |
886 InstallExtControlledPref(ext1_, kPref1, v2); | 850 InstallExtControlledPref(ext1_, kPref1, v2); |
851 InstallExtControlledPrefIncognito(ext1_, kPref1, v2i); | |
887 prefs_.RecreateExtensionPrefs(); | 852 prefs_.RecreateExtensionPrefs(); |
853 testing::Mock::VerifyAndClearExpectations(v1); | |
854 testing::Mock::VerifyAndClearExpectations(v1i); | |
855 testing::Mock::VerifyAndClearExpectations(v2); | |
856 testing::Mock::VerifyAndClearExpectations(v2i); | |
888 } | 857 } |
889 | 858 |
890 virtual void Verify() { | 859 virtual void Verify() { |
891 } | 860 } |
892 }; | 861 }; |
893 TEST_F(ExtensionPrefsSetExtensionControlledPref, | 862 TEST_F(ExtensionPrefsSetExtensionControlledPref, |
894 ExtensionPrefsSetExtensionControlledPref) {} | 863 ExtensionPrefsSetExtensionControlledPref) {} |
OLD | NEW |