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/extension_function.h" 10 11class PrefService; 12 13namespace extensions { 14namespace chromedirectsetting { 15 16// Base class to host instance method helpers. 17class DirectSettingFunctionBase : public SyncExtensionFunction { 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 32class 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 RunImpl() OVERRIDE; 42 43 private: 44 virtual ~GetDirectSettingFunction(); 45 DISALLOW_COPY_AND_ASSIGN(GetDirectSettingFunction); 46}; 47 48class 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 RunImpl() OVERRIDE; 58 59 private: 60 virtual ~SetDirectSettingFunction(); 61 DISALLOW_COPY_AND_ASSIGN(SetDirectSettingFunction); 62}; 63 64class 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 RunImpl() 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