1 // Copyright 2013 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_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ 6 #define CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ 7 8 #include "base/lazy_instance.h" 9 #include "chrome/browser/extensions/chrome_extension_function.h" 10 11 class PrefService; 12 13 namespace extensions { 14 namespace chromedirectsetting { 15 16 // Base class to host instance method helpers. 17 class DirectSettingFunctionBase : public ChromeSyncExtensionFunction { 18 protected: 19 DirectSettingFunctionBase(); 20 virtual ~DirectSettingFunctionBase(); 21 22 // Returns the user pref service. 23 PrefService* GetPrefService(); 24 25 // Returns true if the caller is a component extension. 26 bool IsCalledFromComponentExtension(); 27 28 private: 29 DISALLOW_COPY_AND_ASSIGN(DirectSettingFunctionBase); 30 }; 31 32 class GetDirectSettingFunction : public DirectSettingFunctionBase { 33 public: 34 DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.get", 35 TYPES_PRIVATE_CHROMEDIRECTSETTING_GET) 36 37 GetDirectSettingFunction(); 38 39 protected: 40 // ExtensionFunction: 41 virtual bool RunSync() OVERRIDE; 42 43 private: 44 virtual ~GetDirectSettingFunction(); 45 DISALLOW_COPY_AND_ASSIGN(GetDirectSettingFunction); 46 }; 47 48 class SetDirectSettingFunction : public DirectSettingFunctionBase { 49 public: 50 DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.set", 51 TYPES_PRIVATE_CHROMEDIRECTSETTING_SET) 52 53 SetDirectSettingFunction(); 54 55 protected: 56 // ExtensionFunction: 57 virtual bool RunSync() OVERRIDE; 58 59 private: 60 virtual ~SetDirectSettingFunction(); 61 DISALLOW_COPY_AND_ASSIGN(SetDirectSettingFunction); 62 }; 63 64 class ClearDirectSettingFunction : public DirectSettingFunctionBase { 65 public: 66 DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.clear", 67 TYPES_PRIVATE_CHROMEDIRECTSETTING_CLEAR) 68 69 ClearDirectSettingFunction(); 70 71 protected: 72 // ExtensionFunction: 73 virtual bool RunSync() OVERRIDE; 74 75 private: 76 virtual ~ClearDirectSettingFunction(); 77 DISALLOW_COPY_AND_ASSIGN(ClearDirectSettingFunction); 78 }; 79 80 } // namespace chromedirectsetting 81 } // namespace extensions 82 83 #endif // CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ 84 85