OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/browser_thread.h" | 11 #include "chrome/browser/browser_thread.h" |
12 #include "chrome/browser/extensions/extension_prefs.h" | 12 #include "chrome/browser/extensions/extension_prefs.h" |
13 #include "chrome/browser/extensions/test_extension_prefs.h" | 13 #include "chrome/browser/extensions/test_extension_prefs.h" |
14 #include "chrome/browser/prefs/pref_change_registrar.h" | |
14 #include "chrome/browser/prefs/pref_service.h" | 15 #include "chrome/browser/prefs/pref_service.h" |
15 #include "chrome/common/chrome_paths.h" | 16 #include "chrome/common/chrome_paths.h" |
16 #include "chrome/common/extensions/extension_constants.h" | 17 #include "chrome/common/extensions/extension_constants.h" |
18 #include "chrome/test/mock_notification_observer.h" | |
17 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
18 | 20 |
19 using base::Time; | 21 using base::Time; |
20 using base::TimeDelta; | 22 using base::TimeDelta; |
21 | 23 |
24 const char kPref1[] = "path1.subpath"; | |
25 const char kPref2[] = "path2"; | |
26 const char kPref3[] = "path3"; | |
27 const char kPref4[] = "path4"; | |
28 | |
29 // Default values in case an extension pref value is not overridden. | |
30 const char kDefaultPref1[] = "default pref 1"; | |
31 const char kDefaultPref2[] = "default pref 2"; | |
32 const char kDefaultPref3[] = "default pref 3"; | |
33 const char kDefaultPref4[] = "default pref 4"; | |
34 | |
22 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { | 35 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { |
23 int schemes = URLPattern::SCHEME_ALL; | 36 int schemes = URLPattern::SCHEME_ALL; |
24 extent->AddPattern(URLPattern(schemes, pattern)); | 37 extent->AddPattern(URLPattern(schemes, pattern)); |
25 } | 38 } |
26 | 39 |
27 static void AssertEqualExtents(ExtensionExtent* extent1, | 40 static void AssertEqualExtents(ExtensionExtent* extent1, |
28 ExtensionExtent* extent2) { | 41 ExtensionExtent* extent2) { |
29 std::vector<URLPattern> patterns1 = extent1->patterns(); | 42 std::vector<URLPattern> patterns1 = extent1->patterns(); |
30 std::vector<URLPattern> patterns2 = extent2->patterns(); | 43 std::vector<URLPattern> patterns2 = extent2->patterns(); |
31 std::set<std::string> strings1; | 44 std::set<std::string> strings1; |
(...skipping 16 matching lines...) Expand all Loading... | |
48 | 61 |
49 // This function will get called once, and is the right place to do operations | 62 // This function will get called once, and is the right place to do operations |
50 // on ExtensionPrefs that write data. | 63 // on ExtensionPrefs that write data. |
51 virtual void Initialize() = 0; | 64 virtual void Initialize() = 0; |
52 | 65 |
53 // This function will be called twice - once while the original ExtensionPrefs | 66 // This function will be called twice - once while the original ExtensionPrefs |
54 // object is still alive, and once after recreation. Thus, it tests that | 67 // object is still alive, and once after recreation. Thus, it tests that |
55 // things don't break after any ExtensionPrefs startup work. | 68 // things don't break after any ExtensionPrefs startup work. |
56 virtual void Verify() = 0; | 69 virtual void Verify() = 0; |
57 | 70 |
71 // This function is called to Register preference default values. | |
72 virtual void RegisterPreferences() {} | |
73 | |
58 virtual void SetUp() { | 74 virtual void SetUp() { |
75 RegisterPreferences(); | |
59 Initialize(); | 76 Initialize(); |
60 } | 77 } |
61 | 78 |
62 virtual void TearDown() { | 79 virtual void TearDown() { |
63 Verify(); | 80 Verify(); |
64 | 81 |
65 // Reset ExtensionPrefs, and re-verify. | 82 // Reset ExtensionPrefs, and re-verify. |
66 prefs_.RecreateExtensionPrefs(); | 83 prefs_.RecreateExtensionPrefs(); |
84 RegisterPreferences(); | |
67 Verify(); | 85 Verify(); |
68 } | 86 } |
69 | 87 |
70 protected: | 88 protected: |
71 ExtensionPrefs* prefs() { return prefs_.prefs(); } | 89 ExtensionPrefs* prefs() { return prefs_.prefs(); } |
72 | 90 |
73 TestExtensionPrefs prefs_; | 91 TestExtensionPrefs prefs_; |
74 | 92 |
75 private: | 93 private: |
76 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); | 94 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
301 EXPECT_EQ(NULL, prefs()->GetInstalledExtensionInfo(not_installed_id_)); | 319 EXPECT_EQ(NULL, prefs()->GetInstalledExtensionInfo(not_installed_id_)); |
302 | 320 |
303 ExtensionList::const_iterator iter; | 321 ExtensionList::const_iterator iter; |
304 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { | 322 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { |
305 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); | 323 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); |
306 } | 324 } |
307 // Blacklist one installed and one not-installed extension id. | 325 // Blacklist one installed and one not-installed extension id. |
308 std::set<std::string> blacklisted_ids; | 326 std::set<std::string> blacklisted_ids; |
309 blacklisted_ids.insert(extensions_[0]->id()); | 327 blacklisted_ids.insert(extensions_[0]->id()); |
310 blacklisted_ids.insert(not_installed_id_); | 328 blacklisted_ids.insert(not_installed_id_); |
329 | |
Mattias Nissler (ping if slow)
2010/12/01 10:36:36
any reason for the added newline?
battre (please use the other)
2010/12/01 17:44:38
Done.
| |
311 prefs()->UpdateBlacklist(blacklisted_ids); | 330 prefs()->UpdateBlacklist(blacklisted_ids); |
312 } | 331 } |
313 | 332 |
314 virtual void Verify() { | 333 virtual void Verify() { |
315 // Make sure the two id's we expect to be blacklisted are. | 334 // Make sure the two id's we expect to be blacklisted are. |
316 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(extensions_[0]->id())); | 335 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(extensions_[0]->id())); |
317 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(not_installed_id_)); | 336 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(not_installed_id_)); |
318 | 337 |
319 // Make sure the other id's are not blacklisted. | 338 // Make sure the other id's are not blacklisted. |
320 ExtensionList::const_iterator iter; | 339 ExtensionList::const_iterator iter; |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
518 EXPECT_EQ(launch_index + 1, new_launch_index); | 537 EXPECT_EQ(launch_index + 1, new_launch_index); |
519 | 538 |
520 // This extension doesn't exist, so it should return -1. | 539 // This extension doesn't exist, so it should return -1. |
521 EXPECT_EQ(-1, prefs()->GetAppLaunchIndex("foo")); | 540 EXPECT_EQ(-1, prefs()->GetAppLaunchIndex("foo")); |
522 } | 541 } |
523 | 542 |
524 private: | 543 private: |
525 scoped_refptr<Extension> extension_; | 544 scoped_refptr<Extension> extension_; |
526 }; | 545 }; |
527 TEST_F(ExtensionPrefsAppLaunchIndex, ExtensionPrefsAppLaunchIndex) {} | 546 TEST_F(ExtensionPrefsAppLaunchIndex, ExtensionPrefsAppLaunchIndex) {} |
547 | |
548 namespace keys = extension_manifest_keys; | |
549 | |
550 class ExtensionPrefsPreferencesBase : public ExtensionPrefsTest { | |
551 public: | |
552 ExtensionPrefsPreferencesBase() | |
553 : ExtensionPrefsTest(), | |
554 ext1_(NULL), | |
555 ext2_(NULL), | |
556 ext3_(NULL), | |
557 installed() { | |
558 DictionaryValue simple_dict; | |
559 std::string error; | |
560 | |
561 simple_dict.SetString(keys::kVersion, "1.0.0.0"); | |
562 simple_dict.SetString(keys::kName, "unused"); | |
563 | |
564 ext1_scoped_ = Extension::Create( | |
565 prefs_.temp_dir().AppendASCII("ext1_"), Extension::INVALID, | |
566 simple_dict, false, &error); | |
567 ext2_scoped_ = Extension::Create( | |
568 prefs_.temp_dir().AppendASCII("ext2_"), Extension::INVALID, | |
569 simple_dict, false, &error); | |
570 ext3_scoped_ = Extension::Create( | |
571 prefs_.temp_dir().AppendASCII("ext3_"), Extension::INVALID, | |
572 simple_dict, false, &error); | |
573 | |
574 ext1_ = ext1_scoped_.get(); | |
575 ext2_ = ext2_scoped_.get(); | |
576 ext3_ = ext3_scoped_.get(); | |
577 | |
578 for (size_t i = 0; i < arraysize(installed); ++i) | |
579 installed[i] = false; | |
580 } | |
581 | |
582 void RegisterPreferences() { | |
583 prefs()->pref_service()->RegisterStringPref(kPref1, kDefaultPref1); | |
584 prefs()->pref_service()->RegisterStringPref(kPref2, kDefaultPref2); | |
585 prefs()->pref_service()->RegisterStringPref(kPref3, kDefaultPref3); | |
586 prefs()->pref_service()->RegisterStringPref(kPref4, kDefaultPref4); | |
587 } | |
588 | |
589 void InstallExtControlledPref(Extension *ext, | |
590 const std::string& key, | |
591 Value* val) { | |
592 // Install extension the first time a preference is set for it. | |
593 Extension* extensions[] = {ext1_, ext2_, ext3_}; | |
594 for (int i = 0; i < 3; ++i) { | |
595 if (ext == extensions[i] && !installed[i]) { | |
596 prefs()->OnExtensionInstalled(ext, Extension::ENABLED, true); | |
597 installed[i] = true; | |
598 break; | |
599 } | |
600 } | |
601 | |
602 prefs()->SetExtensionControlledPref(ext->id(), key, val); | |
603 } | |
604 | |
605 void UninstallExtension(const std::string& extension_id) { | |
606 prefs()->OnExtensionUninstalled(extension_id, Extension::INTERNAL, false); | |
607 } | |
608 | |
609 // Weak references, for convenience. | |
610 Extension* ext1_; | |
611 Extension* ext2_; | |
612 Extension* ext3_; | |
613 | |
614 // Flags indicating whether each of the extensions has been installed, yet. | |
615 bool installed[3]; | |
616 | |
617 private: | |
618 scoped_refptr<Extension> ext1_scoped_; | |
619 scoped_refptr<Extension> ext2_scoped_; | |
620 scoped_refptr<Extension> ext3_scoped_; | |
621 }; | |
622 | |
623 class ExtensionPrefsInstallOneExtension | |
624 : public ExtensionPrefsPreferencesBase { | |
625 virtual void Initialize() { | |
626 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
627 } | |
628 virtual void Verify() { | |
629 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
630 EXPECT_EQ("val1", actual); | |
631 } | |
632 }; | |
633 TEST_F(ExtensionPrefsInstallOneExtension, ExtensionPrefsInstallOneExtension) {} | |
634 | |
635 // Make sure the last-installed extension wins for each preference. | |
636 class ExtensionPrefsInstallOverwrittenExtensions | |
637 : public ExtensionPrefsPreferencesBase { | |
638 virtual void Initialize() { | |
639 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
640 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
641 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
642 | |
643 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
644 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
645 | |
646 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val6")); | |
647 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val7")); | |
648 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val8")); | |
649 } | |
650 virtual void Verify() { | |
651 std::string actual; | |
652 actual = prefs()->pref_service()->GetString(kPref1); | |
653 EXPECT_EQ("val3", actual); | |
654 actual = prefs()->pref_service()->GetString(kPref2); | |
655 EXPECT_EQ("val5", actual); | |
656 actual = prefs()->pref_service()->GetString(kPref3); | |
657 EXPECT_EQ("val8", actual); | |
658 } | |
659 }; | |
660 TEST_F(ExtensionPrefsInstallOverwrittenExtensions, | |
661 ExtensionPrefsInstallOverwrittenExtensions) {} | |
662 | |
663 // Make sure the last-installed extension wins even if other extensions set | |
664 // the same or different preferences later. | |
665 class ExtensionPrefsInstallInterleavedExtensions | |
666 : public ExtensionPrefsPreferencesBase { | |
667 virtual void Initialize() { | |
668 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
669 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val2")); | |
670 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val3")); | |
671 | |
672 InstallExtControlledPref(ext3_, kPref3, Value::CreateStringValue("val4")); | |
673 InstallExtControlledPref(ext2_, kPref3, Value::CreateStringValue("val5")); | |
674 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
675 | |
676 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val7")); | |
677 } | |
678 virtual void Verify() { | |
679 std::string actual; | |
680 actual = prefs()->pref_service()->GetString(kPref1); | |
681 EXPECT_EQ("val7", actual); | |
682 actual = prefs()->pref_service()->GetString(kPref2); | |
683 EXPECT_EQ("val2", actual); | |
684 actual = prefs()->pref_service()->GetString(kPref3); | |
685 EXPECT_EQ("val4", actual); | |
686 } | |
687 }; | |
688 TEST_F(ExtensionPrefsInstallInterleavedExtensions, | |
689 ExtensionPrefsInstallInterleavedExtensions) {} | |
690 | |
691 class ExtensionPrefsUninstallOnlyExtension | |
692 : public ExtensionPrefsPreferencesBase { | |
693 virtual void Initialize() { | |
694 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
695 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val2")); | |
696 | |
697 UninstallExtension(ext1_->id()); | |
698 } | |
699 virtual void Verify() { | |
700 std::string actual; | |
701 actual = prefs()->pref_service()->GetString(kPref1); | |
702 EXPECT_EQ(kDefaultPref1, actual); | |
703 actual = prefs()->pref_service()->GetString(kPref2); | |
704 EXPECT_EQ(kDefaultPref2, actual); | |
705 } | |
706 }; | |
707 TEST_F(ExtensionPrefsUninstallOnlyExtension, | |
708 ExtensionPrefsUninstallOnlyExtension) {} | |
709 | |
710 // Tests uninstalling an extension that wasn't winning for any preferences. | |
711 class ExtensionPrefsUninstallIrrelevantExtension | |
712 : public ExtensionPrefsPreferencesBase { | |
713 virtual void Initialize() { | |
714 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
715 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
716 | |
717 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val3")); | |
718 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val4")); | |
719 | |
720 UninstallExtension(ext1_->id()); | |
721 } | |
722 virtual void Verify() { | |
723 std::string actual; | |
724 actual = prefs()->pref_service()->GetString(kPref1); | |
725 EXPECT_EQ("val2", actual); | |
726 actual = prefs()->pref_service()->GetString(kPref2); | |
727 EXPECT_EQ("val4", actual); | |
728 } | |
729 }; | |
730 TEST_F(ExtensionPrefsUninstallIrrelevantExtension, | |
731 ExtensionPrefsUninstallIrrelevantExtension) {} | |
732 | |
733 // Tests uninstalling an extension that was winning for all preferences. | |
734 class ExtensionPrefsUninstallExtensionFromTop | |
735 : public ExtensionPrefsPreferencesBase { | |
736 virtual void Initialize() { | |
737 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
738 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
739 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
740 | |
741 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
742 InstallExtControlledPref(ext3_, kPref2, Value::CreateStringValue("val5")); | |
743 | |
744 UninstallExtension(ext3_->id()); | |
745 } | |
746 virtual void Verify() { | |
747 std::string actual; | |
748 actual = prefs()->pref_service()->GetString(kPref1); | |
749 EXPECT_EQ("val2", actual); | |
750 actual = prefs()->pref_service()->GetString(kPref2); | |
751 EXPECT_EQ("val4", actual); | |
752 } | |
753 }; | |
754 TEST_F(ExtensionPrefsUninstallExtensionFromTop, | |
755 ExtensionPrefsUninstallExtensionFromTop) {} | |
756 | |
757 // Tests uninstalling an extension that was winning for only some preferences. | |
758 class ExtensionPrefsUninstallExtensionFromMiddle | |
759 : public ExtensionPrefsPreferencesBase { | |
760 virtual void Initialize() { | |
761 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
762 InstallExtControlledPref(ext2_, kPref1, Value::CreateStringValue("val2")); | |
763 InstallExtControlledPref(ext3_, kPref1, Value::CreateStringValue("val3")); | |
764 | |
765 InstallExtControlledPref(ext1_, kPref2, Value::CreateStringValue("val4")); | |
766 InstallExtControlledPref(ext2_, kPref2, Value::CreateStringValue("val5")); | |
767 | |
768 InstallExtControlledPref(ext1_, kPref3, Value::CreateStringValue("val6")); | |
769 | |
770 InstallExtControlledPref(ext2_, kPref4, Value::CreateStringValue("val7")); | |
771 | |
772 UninstallExtension(ext2_->id()); | |
773 } | |
774 virtual void Verify() { | |
775 std::string actual; | |
776 actual = prefs()->pref_service()->GetString(kPref1); | |
777 EXPECT_EQ("val3", actual); | |
778 actual = prefs()->pref_service()->GetString(kPref2); | |
779 EXPECT_EQ("val4", actual); | |
780 actual = prefs()->pref_service()->GetString(kPref3); | |
781 EXPECT_EQ("val6", actual); | |
782 actual = prefs()->pref_service()->GetString(kPref4); | |
783 EXPECT_EQ(kDefaultPref4, actual); | |
784 } | |
785 }; | |
786 TEST_F(ExtensionPrefsUninstallExtensionFromMiddle, | |
787 ExtensionPrefsUninstallExtensionFromMiddle) {} | |
788 | |
789 // Tests triggering of notifications to registered observers | |
790 class ExtensionPrefsNotifyWhenNeeded | |
791 : public ExtensionPrefsPreferencesBase { | |
792 virtual void Initialize() { | |
793 using testing::_; | |
794 using testing::Mock; | |
795 using testing::StrEq; | |
796 | |
797 scoped_ptr<MockNotificationObserver> observer( | |
798 new MockNotificationObserver()); | |
799 PrefChangeRegistrar registrar; | |
800 registrar.Init(prefs()->pref_service()); | |
801 registrar.Add(kPref1, observer.get()); | |
802 | |
803 EXPECT_CALL(*observer, Observe(_, _, _)); | |
804 InstallExtControlledPref(ext1_, kPref1, | |
805 Value::CreateStringValue("https://www.chromium.org")); | |
806 Mock::VerifyAndClearExpectations(observer.get()); | |
807 | |
808 EXPECT_CALL(*observer, Observe(_, _, _)).Times(0); | |
809 InstallExtControlledPref(ext1_, kPref1, | |
810 Value::CreateStringValue("https://www.chromium.org")); | |
811 Mock::VerifyAndClearExpectations(observer.get()); | |
812 | |
813 EXPECT_CALL(*observer, Observe(_, _, _)).Times(2); | |
814 InstallExtControlledPref(ext1_, kPref1, | |
815 Value::CreateStringValue("chrome://newtab")); | |
816 | |
817 UninstallExtension(ext1_->id()); | |
818 registrar.Remove(kPref1, observer.get()); | |
819 } | |
820 virtual void Verify() { | |
821 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
822 EXPECT_EQ(kDefaultPref1, actual); | |
823 } | |
824 }; | |
825 TEST_F(ExtensionPrefsNotifyWhenNeeded, | |
826 ExtensionPrefsNotifyWhenNeeded) {} | |
827 | |
828 // Tests disabling an extension | |
829 class ExtensionPrefsDisableExt | |
830 : public ExtensionPrefsPreferencesBase { | |
831 virtual void Initialize() { | |
832 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
833 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
834 EXPECT_EQ("val1", actual); | |
835 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | |
836 } | |
837 virtual void Verify() { | |
838 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
839 EXPECT_EQ(kDefaultPref1, actual); | |
840 } | |
841 }; | |
842 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsDisableExt) {} | |
843 | |
844 // Tests disabling and reenabling an extension | |
845 class ExtensionPrefsReenableExt | |
846 : public ExtensionPrefsPreferencesBase { | |
847 virtual void Initialize() { | |
848 InstallExtControlledPref(ext1_, kPref1, Value::CreateStringValue("val1")); | |
849 prefs()->SetExtensionState(ext1_, Extension::DISABLED); | |
850 prefs()->SetExtensionState(ext1_, Extension::ENABLED); | |
851 } | |
852 virtual void Verify() { | |
853 std::string actual = prefs()->pref_service()->GetString(kPref1); | |
854 EXPECT_EQ("val1", actual); | |
855 } | |
856 }; | |
857 TEST_F(ExtensionPrefsDisableExt, ExtensionPrefsReenableExt) {} | |
OLD | NEW |