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 { | |
25 const char kPref1[] = "path1.subpath"; | 26 const char kPref1[] = "path1.subpath"; |
26 const char kPref2[] = "path2"; | 27 const char kPref2[] = "path2"; |
27 const char kPref3[] = "path3"; | 28 const char kPref3[] = "path3"; |
28 const char kPref4[] = "path4"; | 29 const char kPref4[] = "path4"; |
29 | 30 |
30 // Default values in case an extension pref value is not overridden. | 31 // Default values in case an extension pref value is not overridden. |
31 const char kDefaultPref1[] = "default pref 1"; | 32 const char kDefaultPref1[] = "default pref 1"; |
32 const char kDefaultPref2[] = "default pref 2"; | 33 const char kDefaultPref2[] = "default pref 2"; |
33 const char kDefaultPref3[] = "default pref 3"; | 34 const char kDefaultPref3[] = "default pref 3"; |
34 const char kDefaultPref4[] = "default pref 4"; | 35 const char kDefaultPref4[] = "default pref 4"; |
36 } | |
35 | 37 |
36 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { | 38 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { |
37 int schemes = URLPattern::SCHEME_ALL; | 39 int schemes = URLPattern::SCHEME_ALL; |
38 extent->AddPattern(URLPattern(schemes, pattern)); | 40 extent->AddPattern(URLPattern(schemes, pattern)); |
39 } | 41 } |
40 | 42 |
41 static void AssertEqualExtents(ExtensionExtent* extent1, | 43 static void AssertEqualExtents(ExtensionExtent* extent1, |
42 ExtensionExtent* extent2) { | 44 ExtensionExtent* extent2) { |
43 std::vector<URLPattern> patterns1 = extent1->patterns(); | 45 std::vector<URLPattern> patterns1 = extent1->patterns(); |
44 std::vector<URLPattern> patterns2 = extent2->patterns(); | 46 std::vector<URLPattern> patterns2 = extent2->patterns(); |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
584 void RegisterPreferences() { | 586 void RegisterPreferences() { |
585 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); | 587 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); |
586 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); | 588 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); |
587 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); | 589 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); |
588 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); | 590 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); |
589 } | 591 } |
590 | 592 |
591 void InstallExtControlledPref(Extension *ext, | 593 void InstallExtControlledPref(Extension *ext, |
592 const std::string& key, | 594 const std::string& key, |
593 Value* val) { | 595 Value* val) { |
594 // Install extension the first time a preference is set for it. | 596 EnsureExtensionInstalled(ext); |
597 const bool incognito = false; | |
Mattias Nissler (ping if slow)
2011/01/05 12:08:07
that's a very elaborate way of saying false below
battre
2011/01/05 20:23:08
I got the same comment from Danno, so I will chang
| |
598 prefs()->SetExtensionControlledPref(ext->id(), key, incognito, val); | |
599 } | |
600 | |
601 void InstallExtControlledPrefIncognito(Extension *ext, | |
602 const std::string& key, | |
Mattias Nissler (ping if slow)
2011/01/05 12:08:07
indentation
battre
2011/01/05 20:23:08
Done.
| |
603 Value* val) { | |
604 EnsureExtensionInstalled(ext); | |
605 const bool incognito = true; | |
Mattias Nissler (ping if slow)
2011/01/05 12:08:07
same here, just inline.
battre
2011/01/05 20:23:08
Done.
| |
606 prefs()->SetExtensionControlledPref(ext->id(), key, incognito, val); | |
607 } | |
608 | |
609 void InstallExtension(Extension *ext) { | |
610 EnsureExtensionInstalled(ext); | |
611 } | |
612 | |
613 void UninstallExtension(const std::string& extension_id) { | |
595 Extension* extensions[] = {ext1_, ext2_, ext3_}; | 614 Extension* extensions[] = {ext1_, ext2_, ext3_}; |
596 for (int i = 0; i < 3; ++i) { | 615 for (int i = 0; i < 3; ++i) { |
597 if (ext == extensions[i] && !installed[i]) { | 616 if (extensions[i]->id() == extension_id) { |
598 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | 617 installed[i] = false; |
599 installed[i] = true; | |
600 break; | 618 break; |
601 } | 619 } |
602 } | 620 } |
603 | |
604 prefs()->SetExtensionControlledPref(ext->id(), key, val); | |
605 } | |
606 | |
607 void UninstallExtension(const std::string& extension_id) { | |
608 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); | 621 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); |
609 } | 622 } |
610 | 623 |
611 // Weak references, for convenience. | 624 // Weak references, for convenience. |
612 Extension* ext1_; | 625 Extension* ext1_; |
613 Extension* ext2_; | 626 Extension* ext2_; |
614 Extension* ext3_; | 627 Extension* ext3_; |
615 | 628 |
616 // Flags indicating whether each of the extensions has been installed, yet. | 629 // Flags indicating whether each of the extensions has been installed, yet. |
617 bool installed[3]; | 630 bool installed[3]; |
618 | 631 |
619 private: | 632 private: |
633 void EnsureExtensionInstalled(Extension *ext) { | |
Mattias Nissler (ping if slow)
2011/01/05 12:08:07
Why not just put this code into InstallExtension?
battre
2011/01/05 20:23:08
Because InstallExtensionControlled{Incognito}Pref
| |
634 // Install extension the first time a preference is set for it. | |
635 Extension* extensions[] = {ext1_, ext2_, ext3_}; | |
636 for (int i = 0; i < 3; ++i) { | |
637 if (ext == extensions[i] && !installed[i]) { | |
638 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | |
639 installed[i] = true; | |
640 break; | |
641 } | |
642 } | |
643 } | |
644 | |
620 scoped_refptr<Extension> ext1_scoped_; | 645 scoped_refptr<Extension> ext1_scoped_; |
621 scoped_refptr<Extension> ext2_scoped_; | 646 scoped_refptr<Extension> ext2_scoped_; |
622 scoped_refptr<Extension> ext3_scoped_; | 647 scoped_refptr<Extension> ext3_scoped_; |
623 }; | 648 }; |
624 | 649 |
625 class ExtensionPrefsInstallOneExtension | 650 class ExtensionPrefsInstallOneExtension |
626 : public ExtensionPrefsPreferencesBase { | 651 : public ExtensionPrefsPreferencesBase { |
627 virtual void Initialize() { | 652 virtual void Initialize() { |
628 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 653 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
629 } | 654 } |
630 virtual void Verify() { | 655 virtual void Verify() { |
631 std::string actual = prefs()->pref_service()->GetString(kPref1); | 656 std::string actual = prefs()->pref_service()->GetString(kPref1); |
632 EXPECT_EQ("val1", actual); | 657 EXPECT_EQ("val1", actual); |
633 } | 658 } |
634 }; | 659 }; |
battre
2011/01/05 09:59:40
In the following code there is quite some overlap
Mattias Nissler (ping if slow)
2011/01/05 12:08:07
Yes, we need the integration tests, but they don't
battre
2011/01/05 20:23:08
Done.
| |
635 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} | 660 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} |
636 | 661 |
662 // Check that we forget incognito values after a reload. | |
663 class ExtensionPrefsInstallIncognito | |
664 : public ExtensionPrefsPreferencesBase { | |
665 public: | |
666 ExtensionPrefsInstallIncognito() : iteration_(0) {} | |
667 | |
668 virtual void Initialize() { | |
669 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
670 InstallExtControlledPrefIncognito(ext1_, kPref1, | |
671 Value::CreateStringValue("val2")); | |
672 scoped_ptr<PrefService> incog_prefs(prefs()->CreateIncognitoPrefService()); | |
673 std::string actual = incog_prefs->GetString(kPref1); | |
674 EXPECT_EQ("val2", actual); | |
675 } | |
676 virtual void Verify() { | |
677 // Main pref service shall see only non-incognito settings. | |
678 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
679 EXPECT_EQ("val1", actual); | |
680 // Incognito pref service shall see incognito values only during first run. | |
681 // Once the pref service was reloaded, all values shall be discarded. | |
682 scoped_ptr<PrefService> incog_prefs(prefs()->CreateIncognitoPrefService()); | |
683 actual = incog_prefs->GetString(kPref1); | |
684 if (iteration_ == 0) { | |
685 EXPECT_EQ("val2", actual); | |
686 } else { | |
687 EXPECT_EQ("val1", actual); | |
688 } | |
689 ++iteration_; | |
690 } | |
691 int iteration_; | |
692 }; | |
693 TEST_F(ExtensionPrefsInstallIncognito, ExtensionPrefsInstallOneExtension) {} | |
694 | |
637 // Make sure the last-installed extension wins for each preference. | 695 // Make sure the last-installed extension wins for each preference. |
638 class ExtensionPrefsInstallOverwrittenExtensions | 696 class ExtensionPrefsInstallOverwrittenExtensions |
639 : public ExtensionPrefsPreferencesBase { | 697 : public ExtensionPrefsPreferencesBase { |
640 virtual void Initialize() { | 698 virtual void Initialize() { |
641 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 699 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
642 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | 700 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); |
643 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | 701 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); |
644 | 702 |
645 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | 703 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); |
646 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | 704 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); |
647 | 705 |
648 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val6")); | 706 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val6")); |
649 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val7")); | 707 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val7")); |
650 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val8")); | 708 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val8")); |
651 } | 709 } |
652 virtual void Verify() { | 710 virtual void Verify() { |
653 std::string actual; | 711 std::string actual; |
654 actual = prefs()->pref_service()->GetString(kPref1); | 712 actual = prefs()->pref_service()->GetString(kPref1); |
655 EXPECT_EQ("val3", actual); | 713 EXPECT_EQ("val3", actual); |
656 actual = prefs()->pref_service()->GetString(kPref2); | 714 actual = prefs()->pref_service()->GetString(kPref2); |
657 EXPECT_EQ("val5", actual); | 715 EXPECT_EQ("val5", actual); |
658 actual = prefs()->pref_service()->GetString(kPref3); | 716 actual = prefs()->pref_service()->GetString(kPref3); |
659 EXPECT_EQ("val8", actual); | 717 EXPECT_EQ("val8", actual); |
660 } | 718 } |
661 }; | 719 }; |
662 TEST_F(ExtensionPrefsInstallOverwrittenExtensions, | 720 TEST_F(ExtensionPrefsInstallOverwrittenExtensions, |
663 ExtensionPrefsInstallOverwrittenExtensions) {} | 721 ExtensionPrefsInstallOverwrittenExtensions) {} |
664 | 722 |
723 // Make sure the last-installed extension wins for each preference. | |
724 class ExtensionPrefsInstallOverwrittenExtensionsIncognito | |
725 : public ExtensionPrefsPreferencesBase { | |
726 | |
727 struct TestCase { | |
728 int val_ext1_regular_; // pref value of extension 1 | |
729 int val_ext1_incognito_; // pref value of extension 1 incognito | |
730 int val_ext2_regular_; // pref value of extension 2 | |
731 int val_ext2_incognito_; // pref value of extension 2 incognito | |
732 int effective_value_regular_; // desired winner regular | |
733 int effective_value_incognito_; // desired winner incognito | |
734 }; | |
735 | |
736 virtual void Initialize() { | |
737 const char* strings[] = { | |
738 kDefaultPref1, | |
739 "val1", | |
740 "val2", | |
741 "val3", | |
742 "val4" | |
743 }; | |
744 TestCase values[] = { | |
745 // e.g. { 1, 0, 0, 4, 1, 4}, means: | |
746 // ext1 regular is set to "val1", ext2 incognito is set to "val4" | |
747 // --> the winning regular value is "val1", the winning incognito | |
748 // value is "val4". | |
749 { 1, 0, 0, 0, 1, 1}, | |
750 { 1, 2, 0, 0, 1, 2}, | |
751 { 1, 0, 3, 0, 3, 3}, | |
752 { 1, 0, 0, 4, 1, 4}, | |
753 { 1, 2, 3, 0, 3, 3}, // The last 3 here is intentional! | |
754 { 1, 2, 0, 4, 1, 4}, | |
755 { 1, 2, 3, 4, 3, 4} | |
756 }; | |
757 for (size_t row = 0; row < arraysize(values); ++row) { | |
758 LOG(INFO) << "Testing row " << row; | |
759 InstallExtension(ext1_); | |
760 InstallExtension(ext2_); | |
761 if (values[row].val_ext1_regular_) { | |
762 InstallExtControlledPref( | |
763 ext1_, kPref1, | |
764 Value::CreateStringValue(strings[values[row].val_ext1_regular_])); | |
765 } | |
766 if (values[row].val_ext1_incognito_) { | |
767 InstallExtControlledPrefIncognito( | |
768 ext1_, kPref1, | |
769 Value::CreateStringValue(strings[values[row].val_ext1_incognito_])); | |
770 } | |
771 if (values[row].val_ext2_regular_) { | |
772 InstallExtControlledPref( | |
773 ext2_, kPref1, | |
774 Value::CreateStringValue(strings[values[row].val_ext2_regular_])); | |
775 } | |
776 if (values[row].val_ext2_incognito_) { | |
777 InstallExtControlledPrefIncognito( | |
778 ext2_, kPref1, | |
779 Value::CreateStringValue(strings[values[row].val_ext2_incognito_])); | |
780 } | |
781 std::string actual; | |
782 actual = prefs()->pref_service()->GetString(kPref1); | |
783 EXPECT_EQ(strings[values[row].effective_value_regular_], actual); | |
784 scoped_ptr<PrefService> incog_prefs( | |
785 prefs()->CreateIncognitoPrefService()); | |
786 actual = incog_prefs->GetString(kPref1); | |
787 EXPECT_EQ(strings[values[row].effective_value_incognito_], actual); | |
788 UninstallExtension(ext1_->id()); | |
789 UninstallExtension(ext2_->id()); | |
790 } | |
791 } | |
792 virtual void Verify() {} | |
793 }; | |
794 TEST_F(ExtensionPrefsInstallOverwrittenExtensionsIncognito, | |
795 ExtensionPrefsInstallOverwrittenExtensionsIncognito) {} | |
796 | |
665 // Make sure the last-installed extension wins even if other extensions set | 797 // Make sure the last-installed extension wins even if other extensions set |
666 // the same or different preferences later. | 798 // the same or different preferences later. |
667 class ExtensionPrefsInstallInterleavedExtensions | 799 class ExtensionPrefsInstallInterleavedExtensions |
668 : public ExtensionPrefsPreferencesBase { | 800 : public ExtensionPrefsPreferencesBase { |
669 virtual void Initialize() { | 801 virtual void Initialize() { |
670 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 802 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
671 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val2")); | 803 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val2")); |
672 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val3")); | 804 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val3")); |
673 | 805 |
674 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val4")); | 806 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val4")); |
675 InstallExtControlledPref(ext2_, kPref3, Value::CreateStringValue("val5")); | 807 InstallExtControlledPref(ext2_, kPref3, Value::CreateStringValue("val5")); |
676 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | 808 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); |
677 | 809 |
678 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val7")); | 810 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val7")); |
679 } | 811 } |
680 virtual void Verify() { | 812 virtual void Verify() { |
813 scoped_ptr<PrefService> incog_prefs( | |
814 prefs()->CreateIncognitoPrefService()); | |
681 std::string actual; | 815 std::string actual; |
682 actual = prefs()->pref_service()->GetString(kPref1); | 816 actual = prefs()->pref_service()->GetString(kPref1); |
683 EXPECT_EQ("val7", actual); | 817 EXPECT_EQ("val7", actual); |
818 actual = incog_prefs->GetString(kPref1); | |
819 EXPECT_EQ("val7", actual); | |
684 actual = prefs()->pref_service()->GetString(kPref2); | 820 actual = prefs()->pref_service()->GetString(kPref2); |
685 EXPECT_EQ("val2", actual); | 821 EXPECT_EQ("val2", actual); |
822 actual = incog_prefs->GetString(kPref2); | |
823 EXPECT_EQ("val2", actual); | |
686 actual = prefs()->pref_service()->GetString(kPref3); | 824 actual = prefs()->pref_service()->GetString(kPref3); |
687 EXPECT_EQ("val4", actual); | 825 EXPECT_EQ("val4", actual); |
826 actual = incog_prefs->GetString(kPref3); | |
827 EXPECT_EQ("val4", actual); | |
688 } | 828 } |
689 }; | 829 }; |
690 TEST_F(ExtensionPrefsInstallInterleavedExtensions, | 830 TEST_F(ExtensionPrefsInstallInterleavedExtensions, |
691 ExtensionPrefsInstallInterleavedExtensions) {} | 831 ExtensionPrefsInstallInterleavedExtensions) {} |
692 | 832 |
693 class ExtensionPrefsUninstallOnlyExtension | 833 class ExtensionPrefsUninstallOnlyExtension |
694 : public ExtensionPrefsPreferencesBase { | 834 : public ExtensionPrefsPreferencesBase { |
695 virtual void Initialize() { | 835 virtual void Initialize() { |
696 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 836 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
697 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); | 837 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); |
(...skipping 30 matching lines...) Expand all Loading... | |
728 actual = prefs()->pref_service()->GetString(kPref2); | 868 actual = prefs()->pref_service()->GetString(kPref2); |
729 EXPECT_EQ("val4", actual); | 869 EXPECT_EQ("val4", actual); |
730 } | 870 } |
731 }; | 871 }; |
732 TEST_F(ExtensionPrefsUninstallIrrelevantExtension, | 872 TEST_F(ExtensionPrefsUninstallIrrelevantExtension, |
733 ExtensionPrefsUninstallIrrelevantExtension) {} | 873 ExtensionPrefsUninstallIrrelevantExtension) {} |
734 | 874 |
735 // Tests uninstalling an extension that was winning for all preferences. | 875 // Tests uninstalling an extension that was winning for all preferences. |
736 class ExtensionPrefsUninstallExtensionFromTop | 876 class ExtensionPrefsUninstallExtensionFromTop |
737 : public ExtensionPrefsPreferencesBase { | 877 : public ExtensionPrefsPreferencesBase { |
878 public: | |
879 ExtensionPrefsUninstallExtensionFromTop() : iteration_(0) {} | |
880 | |
738 virtual void Initialize() { | 881 virtual void Initialize() { |
739 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 882 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
883 InstallExtControlledPrefIncognito(ext1_, kPref1, | |
884 Value::CreateStringValue("val1i")); | |
740 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | 885 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); |
886 InstallExtControlledPrefIncognito(ext2_, kPref1, | |
887 Value::CreateStringValue("val2i")); | |
741 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | 888 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); |
889 InstallExtControlledPrefIncognito(ext3_, kPref1, | |
890 Value::CreateStringValue("val3i")); | |
742 | 891 |
743 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | 892 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); |
893 InstallExtControlledPrefIncognito(ext1_, kPref2, | |
894 Value::CreateStringValue("val4i")); | |
744 InstallExtControlledPref(ext3_, kPref2, Value::CreateStringValue("val5")); | 895 InstallExtControlledPref(ext3_, kPref2, Value::CreateStringValue("val5")); |
896 InstallExtControlledPrefIncognito(ext3_, kPref2, | |
897 Value::CreateStringValue("val5i")); | |
745 | 898 |
746 UninstallExtension(ext3_->id()); | 899 UninstallExtension(ext3_->id()); |
747 } | 900 } |
748 virtual void Verify() { | 901 virtual void Verify() { |
902 scoped_ptr<PrefService> incog_prefs( | |
903 prefs()->CreateIncognitoPrefService()); | |
749 std::string actual; | 904 std::string actual; |
750 actual = prefs()->pref_service()->GetString(kPref1); | 905 actual = prefs()->pref_service()->GetString(kPref1); |
751 EXPECT_EQ("val2", actual); | 906 EXPECT_EQ("val2", actual); |
752 actual = prefs()->pref_service()->GetString(kPref2); | 907 actual = prefs()->pref_service()->GetString(kPref2); |
753 EXPECT_EQ("val4", actual); | 908 EXPECT_EQ("val4", actual); |
909 // After the reload (iteration_ == 1) all incognito settings are forgotten. | |
910 actual = incog_prefs->GetString(kPref1); | |
911 EXPECT_EQ((iteration_ == 0 ? "val2i" : "val2"), actual); | |
912 actual = incog_prefs->GetString(kPref2); | |
913 EXPECT_EQ((iteration_ == 0 ? "val4i" : "val4"), actual); | |
914 ++iteration_; | |
754 } | 915 } |
916 int iteration_; | |
755 }; | 917 }; |
756 TEST_F(ExtensionPrefsUninstallExtensionFromTop, | 918 TEST_F(ExtensionPrefsUninstallExtensionFromTop, |
757 ExtensionPrefsUninstallExtensionFromTop) {} | 919 ExtensionPrefsUninstallExtensionFromTop) {} |
758 | 920 |
759 // Tests uninstalling an extension that was winning for only some preferences. | 921 // Tests uninstalling an extension that was winning for only some preferences. |
760 class ExtensionPrefsUninstallExtensionFromMiddle | 922 class ExtensionPrefsUninstallExtensionFromMiddle |
761 : public ExtensionPrefsPreferencesBase { | 923 : public ExtensionPrefsPreferencesBase { |
762 virtual void Initialize() { | 924 virtual void Initialize() { |
763 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 925 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
764 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | 926 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); |
(...skipping 16 matching lines...) Expand all Loading... | |
781 EXPECT_EQ("val4", actual); | 943 EXPECT_EQ("val4", actual); |
782 actual = prefs()->pref_service()->GetString(kPref3); | 944 actual = prefs()->pref_service()->GetString(kPref3); |
783 EXPECT_EQ("val6", actual); | 945 EXPECT_EQ("val6", actual); |
784 actual = prefs()->pref_service()->GetString(kPref4); | 946 actual = prefs()->pref_service()->GetString(kPref4); |
785 EXPECT_EQ(kDefaultPref4, actual); | 947 EXPECT_EQ(kDefaultPref4, actual); |
786 } | 948 } |
787 }; | 949 }; |
788 TEST_F(ExtensionPrefsUninstallExtensionFromMiddle, | 950 TEST_F(ExtensionPrefsUninstallExtensionFromMiddle, |
789 ExtensionPrefsUninstallExtensionFromMiddle) {} | 951 ExtensionPrefsUninstallExtensionFromMiddle) {} |
790 | 952 |
791 // Tests triggering of notifications to registered observers | 953 // Tests triggering of notifications to registered observers. |
792 class ExtensionPrefsNotifyWhenNeeded | 954 class ExtensionPrefsNotifyWhenNeeded |
793 : public ExtensionPrefsPreferencesBase { | 955 : public ExtensionPrefsPreferencesBase { |
794 virtual void Initialize() { | 956 virtual void Initialize() { |
795 using testing::_; | 957 using testing::_; |
796 using testing::Mock; | 958 using testing::Mock; |
797 using testing::StrEq; | 959 using testing::StrEq; |
798 | 960 |
799 scoped_ptr<NotificationObserverMock> observer( | 961 scoped_ptr<NotificationObserverMock> observer( |
800 new NotificationObserverMock()); | 962 new NotificationObserverMock()); |
801 PrefChangeRegistrar registrar; | 963 PrefChangeRegistrar registrar; |
(...skipping 18 matching lines...) Expand all Loading... | |
820 registrar.Remove(kPref1, observer.get()); | 982 registrar.Remove(kPref1, observer.get()); |
821 } | 983 } |
822 virtual void Verify() { | 984 virtual void Verify() { |
823 std::string actual = prefs()->pref_service()->GetString(kPref1); | 985 std::string actual = prefs()->pref_service()->GetString(kPref1); |
824 EXPECT_EQ(kDefaultPref1, actual); | 986 EXPECT_EQ(kDefaultPref1, actual); |
825 } | 987 } |
826 }; | 988 }; |
827 TEST_F(ExtensionPrefsNotifyWhenNeeded, | 989 TEST_F(ExtensionPrefsNotifyWhenNeeded, |
828 ExtensionPrefsNotifyWhenNeeded) {} | 990 ExtensionPrefsNotifyWhenNeeded) {} |
829 | 991 |
830 // Tests disabling an extension | 992 // Tests disabling an extension. |
831 class ExtensionPrefsDisableExt | 993 class ExtensionPrefsDisableExt |
832 : public ExtensionPrefsPreferencesBase { | 994 : public ExtensionPrefsPreferencesBase { |
833 virtual void Initialize() { | 995 virtual void Initialize() { |
834 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 996 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
835 std::string actual = prefs()->pref_service()->GetString(kPref1); | 997 std::string actual = prefs()->pref_service()->GetString(kPref1); |
836 EXPECT_EQ("val1", actual); | 998 EXPECT_EQ("val1", actual); |
837 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | 999 prefs()->SetExtensionState(ext1_, Extension::DISABLED); |
838 } | 1000 } |
839 virtual void Verify() { | 1001 virtual void Verify() { |
840 std::string actual = prefs()->pref_service()->GetString(kPref1); | 1002 std::string actual = prefs()->pref_service()->GetString(kPref1); |
841 EXPECT_EQ(kDefaultPref1, actual); | 1003 EXPECT_EQ(kDefaultPref1, actual); |
842 } | 1004 } |
843 }; | 1005 }; |
844 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} | 1006 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} |
845 | 1007 |
846 // Tests disabling and reenabling an extension | 1008 // Tests disabling and reenabling an extension. |
847 class ExtensionPrefsReenableExt | 1009 class ExtensionPrefsReenableExt |
848 : public ExtensionPrefsPreferencesBase { | 1010 : public ExtensionPrefsPreferencesBase { |
849 virtual void Initialize() { | 1011 virtual void Initialize() { |
850 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | 1012 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); |
851 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | 1013 prefs()->SetExtensionState(ext1_, Extension::DISABLED); |
852 prefs()->SetExtensionState(ext1_, Extension::ENABLED); | 1014 prefs()->SetExtensionState(ext1_, Extension::ENABLED); |
853 } | 1015 } |
854 virtual void Verify() { | 1016 virtual void Verify() { |
855 std::string actual = prefs()->pref_service()->GetString(kPref1); | 1017 std::string actual = prefs()->pref_service()->GetString(kPref1); |
856 EXPECT_EQ("val1", actual); | 1018 EXPECT_EQ("val1", actual); |
(...skipping 12 matching lines...) Expand all Loading... | |
869 } | 1031 } |
870 MOCK_METHOD0(Die, void()); | 1032 MOCK_METHOD0(Die, void()); |
871 }; | 1033 }; |
872 | 1034 |
873 class ExtensionPrefsSetExtensionControlledPref | 1035 class ExtensionPrefsSetExtensionControlledPref |
874 : public ExtensionPrefsPreferencesBase { | 1036 : public ExtensionPrefsPreferencesBase { |
875 public: | 1037 public: |
876 virtual void Initialize() { | 1038 virtual void Initialize() { |
877 MockStringValue* v1 = new MockStringValue("https://www.chromium.org"); | 1039 MockStringValue* v1 = new MockStringValue("https://www.chromium.org"); |
878 MockStringValue* v2 = new MockStringValue("https://www.chromium.org"); | 1040 MockStringValue* v2 = new MockStringValue("https://www.chromium.org"); |
1041 MockStringValue* v1i = new MockStringValue("https://www.chromium.org"); | |
1042 MockStringValue* v2i = new MockStringValue("https://www.chromium.org"); | |
879 // Ownership is taken, value shall not be deleted. | 1043 // Ownership is taken, value shall not be deleted. |
880 EXPECT_CALL(*v1, Die()).Times(0); | 1044 EXPECT_CALL(*v1, Die()).Times(0); |
1045 EXPECT_CALL(*v1i, Die()).Times(0); | |
881 InstallExtControlledPref(ext1_, kPref1, v1); | 1046 InstallExtControlledPref(ext1_, kPref1, v1); |
1047 InstallExtControlledPrefIncognito(ext1_, kPref1, v1i); | |
882 testing::Mock::VerifyAndClearExpectations(v1); | 1048 testing::Mock::VerifyAndClearExpectations(v1); |
1049 testing::Mock::VerifyAndClearExpectations(v1i); | |
883 // Make sure there is no memory leak and both values are deleted. | 1050 // Make sure there is no memory leak and both values are deleted. |
1051 EXPECT_CALL(*v1, Die()).Times(1); | |
1052 EXPECT_CALL(*v1i, Die()).Times(1); | |
884 EXPECT_CALL(*v2, Die()).Times(1); | 1053 EXPECT_CALL(*v2, Die()).Times(1); |
885 EXPECT_CALL(*v1, Die()).Times(1); | 1054 EXPECT_CALL(*v2i, Die()).Times(1); |
886 InstallExtControlledPref(ext1_, kPref1, v2); | 1055 InstallExtControlledPref(ext1_, kPref1, v2); |
1056 InstallExtControlledPrefIncognito(ext1_, kPref1, v2i); | |
887 prefs_.RecreateExtensionPrefs(); | 1057 prefs_.RecreateExtensionPrefs(); |
1058 testing::Mock::VerifyAndClearExpectations(v1); | |
1059 testing::Mock::VerifyAndClearExpectations(v1i); | |
1060 testing::Mock::VerifyAndClearExpectations(v2); | |
1061 testing::Mock::VerifyAndClearExpectations(v2i); | |
888 } | 1062 } |
889 | 1063 |
890 virtual void Verify() { | 1064 virtual void Verify() { |
891 } | 1065 } |
892 }; | 1066 }; |
893 TEST_F(ExtensionPrefsSetExtensionControlledPref, | 1067 TEST_F(ExtensionPrefsSetExtensionControlledPref, |
894 ExtensionPrefsSetExtensionControlledPref) {} | 1068 ExtensionPrefsSetExtensionControlledPref) {} |
OLD | NEW |