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