| 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 |