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