| Index: chrome/browser/extensions/api/preference/chrome_direct_setting.h | 
| diff --git a/chrome/browser/extensions/api/preference/chrome_direct_setting.h b/chrome/browser/extensions/api/preference/chrome_direct_setting.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..1ff171e92b663112017b319f401ac04899c22b2a | 
| --- /dev/null | 
| +++ b/chrome/browser/extensions/api/preference/chrome_direct_setting.h | 
| @@ -0,0 +1,93 @@ | 
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ | 
| +#define CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ | 
| + | 
| +#include "base/containers/hash_tables.h" | 
| +#include "chrome/browser/extensions/extension_function.h" | 
| + | 
| +class PrefService; | 
| + | 
| +namespace extensions { | 
| +namespace chromedirectsetting { | 
| + | 
| +typedef base::hash_set<std::string> PreferenceWhitelist; | 
| + | 
| +// Base class to host instance method helpers. | 
| +class DirectSettingFunctionBase : public SyncExtensionFunction { | 
| + protected: | 
| +  explicit DirectSettingFunctionBase() {} | 
| +  virtual ~DirectSettingFunctionBase() {} | 
| + | 
| +  // Returns the user pref service. | 
| +  PrefService* GetPrefService(); | 
| + | 
| +  // Returns true if the caller is a component extension. | 
| +  bool IsCalledFromComponentExtension(); | 
| + | 
| +  // Returns true if the preference is on the whitelist. | 
| +  bool IsPreferenceOnWhitelist(const std::string &pref_key); | 
| + | 
| + private: | 
| +  // Creates the preference whitelist. | 
| +  static PreferenceWhitelist CreatePreferenceWhitelist(); | 
| + | 
| +  static const PreferenceWhitelist preference_whitelist_; | 
| +  DISALLOW_COPY_AND_ASSIGN(DirectSettingFunctionBase); | 
| +}; | 
| + | 
| +class GetDirectSettingFunction : public DirectSettingFunctionBase { | 
| + public: | 
| +  DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.get", | 
| +                             TYPES_PRIVATE_CHROMEDIRECTSETTING_GET) | 
| + | 
| +  explicit GetDirectSettingFunction() {} | 
| + | 
| + protected: | 
| +  // ExtensionFunction: | 
| +  virtual bool RunImpl() OVERRIDE; | 
| + | 
| + private: | 
| +  virtual ~GetDirectSettingFunction() {} | 
| +  DISALLOW_COPY_AND_ASSIGN(GetDirectSettingFunction); | 
| +}; | 
| + | 
| +class SetDirectSettingFunction : public DirectSettingFunctionBase { | 
| + public: | 
| +  DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.set", | 
| +                             TYPES_PRIVATE_CHROMEDIRECTSETTING_SET) | 
| + | 
| +  explicit SetDirectSettingFunction() {} | 
| + | 
| + protected: | 
| +  // ExtensionFunction: | 
| +  virtual bool RunImpl() OVERRIDE; | 
| + | 
| + private: | 
| +  virtual ~SetDirectSettingFunction() {} | 
| +  DISALLOW_COPY_AND_ASSIGN(SetDirectSettingFunction); | 
| +}; | 
| + | 
| +class ClearDirectSettingFunction : public DirectSettingFunctionBase { | 
| + public: | 
| +  DECLARE_EXTENSION_FUNCTION("types.private.ChromeDirectSetting.clear", | 
| +                             TYPES_PRIVATE_CHROMEDIRECTSETTING_CLEAR) | 
| + | 
| +  explicit ClearDirectSettingFunction() {} | 
| + | 
| + protected: | 
| +  // ExtensionFunction: | 
| +  virtual bool RunImpl() OVERRIDE; | 
| + | 
| + private: | 
| +  virtual ~ClearDirectSettingFunction() {} | 
| +  DISALLOW_COPY_AND_ASSIGN(ClearDirectSettingFunction); | 
| +}; | 
| + | 
| +}  // namespace chromedirectsetting | 
| +}  // namespace extensions | 
| + | 
| +#endif  // CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_H__ | 
| + | 
|  |