1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_UNITTEST_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_UNITTEST_H_ 7 8 #include "base/message_loop/message_loop.h" 9 #include "chrome/browser/extensions/test_extension_prefs.h" 10 #include "content/public/test/test_browser_thread.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 namespace base { 14 class Value; 15 } 16 17 namespace user_prefs { 18 class PrefRegistrySyncable; 19 } 20 21 namespace extensions { 22 class Extension; 23 24 // Base class for extension preference-related unit tests. 25 class ExtensionPrefsTest : public testing::Test { 26 public: 27 ExtensionPrefsTest(); 28 virtual ~ExtensionPrefsTest(); 29 30 // This function will get called once, and is the right place to do operations 31 // on ExtensionPrefs that write data. 32 virtual void Initialize() = 0; 33 34 // This function will be called twice - once while the original ExtensionPrefs 35 // object is still alive, and once after recreation. Thus, it tests that 36 // things don't break after any ExtensionPrefs startup work. 37 virtual void Verify() = 0; 38 39 // This function is called to Register preference default values. 40 virtual void RegisterPreferences(user_prefs::PrefRegistrySyncable* registry); 41 42 virtual void SetUp() OVERRIDE; 43 44 virtual void TearDown() OVERRIDE; 45 46 protected: 47 ExtensionPrefs* prefs() { return prefs_.prefs(); } 48 49 base::MessageLoop message_loop_; 50 content::TestBrowserThread ui_thread_; 51 52 TestExtensionPrefs prefs_; 53 54 private: 55 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); 56 }; 57 58 59 class PrefsPrepopulatedTestBase : public ExtensionPrefsTest { 60 public: 61 static const size_t kNumInstalledExtensions = 4; 62 63 PrefsPrepopulatedTestBase(); 64 virtual ~PrefsPrepopulatedTestBase(); 65 66 Extension* extension1() { return extension1_.get(); } 67 Extension* extension2() { return extension2_.get(); } 68 Extension* extension3() { return extension3_.get(); } 69 Extension* extension4() { return extension4_.get(); } 70 71 protected: 72 bool installed_[kNumInstalledExtensions]; 73 74 scoped_refptr<Extension> extension1_; 75 scoped_refptr<Extension> extension2_; 76 scoped_refptr<Extension> extension3_; 77 scoped_refptr<Extension> extension4_; 78 79 private: 80 DISALLOW_COPY_AND_ASSIGN(PrefsPrepopulatedTestBase); 81 }; 82 83 } // namespace extensions 84 85 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_UNITTEST_H_ 86