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