Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: chrome/browser/extensions/extension_prefs_unittest.cc

Issue 5915004: Introduce incognito preference settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Continued work from last year Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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) {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698