configuration_policy_handler_chromeos.h revision 9ab5563a3196760eb381d102cbb2bc0f7abc6a50
14b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Copyright (c) 2012 The Chromium Authors. All rights reserved.
24b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Use of this source code is governed by a BSD-style license that can be
34b6829f0d28990dd645e16386eb226d0f10c8731shiqian// found in the LICENSE file.
44b6829f0d28990dd645e16386eb226d0f10c8731shiqian
54b6829f0d28990dd645e16386eb226d0f10c8731shiqian#ifndef CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
64b6829f0d28990dd645e16386eb226d0f10c8731shiqian#define CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
74b6829f0d28990dd645e16386eb226d0f10c8731shiqian
84b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include "chrome/browser/policy/configuration_policy_handler.h"
94b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include "chromeos/network/network_ui_data.h"
104b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include "chromeos/network/onc/onc_constants.h"
114b6829f0d28990dd645e16386eb226d0f10c8731shiqian
124b6829f0d28990dd645e16386eb226d0f10c8731shiqiannamespace base {
134b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass DictionaryValue;
144b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass Value;
154b6829f0d28990dd645e16386eb226d0f10c8731shiqian}
164b6829f0d28990dd645e16386eb226d0f10c8731shiqian
174b6829f0d28990dd645e16386eb226d0f10c8731shiqiannamespace policy {
184b6829f0d28990dd645e16386eb226d0f10c8731shiqian
194b6829f0d28990dd645e16386eb226d0f10c8731shiqian// ConfigurationPolicyHandler for validation of the network configuration
204b6829f0d28990dd645e16386eb226d0f10c8731shiqian// policies. These actually don't set any preferences, but the handler just
214b6829f0d28990dd645e16386eb226d0f10c8731shiqian// generates error messages.
224b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass NetworkConfigurationPolicyHandler : public TypeCheckingPolicyHandler {
234b6829f0d28990dd645e16386eb226d0f10c8731shiqian public:
244b6829f0d28990dd645e16386eb226d0f10c8731shiqian  static NetworkConfigurationPolicyHandler* CreateForUserPolicy();
254b6829f0d28990dd645e16386eb226d0f10c8731shiqian  static NetworkConfigurationPolicyHandler* CreateForDevicePolicy();
264b6829f0d28990dd645e16386eb226d0f10c8731shiqian
274b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual ~NetworkConfigurationPolicyHandler();
284b6829f0d28990dd645e16386eb226d0f10c8731shiqian
294b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // ConfigurationPolicyHandler methods:
304b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual bool CheckPolicySettings(const PolicyMap& policies,
314b6829f0d28990dd645e16386eb226d0f10c8731shiqian                                   PolicyErrorMap* errors) OVERRIDE;
324b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual void ApplyPolicySettings(const PolicyMap& policies,
334b6829f0d28990dd645e16386eb226d0f10c8731shiqian                                   PrefValueMap* prefs) OVERRIDE;
344b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual void PrepareForDisplaying(PolicyMap* policies) const OVERRIDE;
354b6829f0d28990dd645e16386eb226d0f10c8731shiqian
364b6829f0d28990dd645e16386eb226d0f10c8731shiqian private:
374b6829f0d28990dd645e16386eb226d0f10c8731shiqian  explicit NetworkConfigurationPolicyHandler(
384b6829f0d28990dd645e16386eb226d0f10c8731shiqian      const char* policy_name,
394b6829f0d28990dd645e16386eb226d0f10c8731shiqian      chromeos::onc::ONCSource onc_source);
404b6829f0d28990dd645e16386eb226d0f10c8731shiqian
414b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // Takes network policy in Value representation and produces an output Value
424b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // that contains a pretty-printed and sanitized version. In particular, we
434b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // remove any Passphrases that may be contained in the JSON. Ownership of the
444b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // return value is transferred to the caller.
454b6829f0d28990dd645e16386eb226d0f10c8731shiqian  static base::Value* SanitizeNetworkConfig(const base::Value* config);
464b6829f0d28990dd645e16386eb226d0f10c8731shiqian
474b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // The kind of ONC source that this handler represents. ONCSource
484b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // distinguishes between user and device policy.
494b6829f0d28990dd645e16386eb226d0f10c8731shiqian  const chromeos::onc::ONCSource onc_source_;
504b6829f0d28990dd645e16386eb226d0f10c8731shiqian
514b6829f0d28990dd645e16386eb226d0f10c8731shiqian  DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationPolicyHandler);
524b6829f0d28990dd645e16386eb226d0f10c8731shiqian};
534b6829f0d28990dd645e16386eb226d0f10c8731shiqian
54efa2fc7fd8a71afd54841b780829ce57cc487938zhanyong.wan// Maps the PinnedLauncherApps policy to the corresponding pref.
554b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass PinnedLauncherAppsPolicyHandler : public ExtensionListPolicyHandler {
564b6829f0d28990dd645e16386eb226d0f10c8731shiqian public:
57e8ff148b4309e115da1c55089dc3b9a241a928dcshiqian  PinnedLauncherAppsPolicyHandler();
584b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual ~PinnedLauncherAppsPolicyHandler();
594b6829f0d28990dd645e16386eb226d0f10c8731shiqian
604b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // ExtensionListPolicyHandler methods:
614b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual void ApplyPolicySettings(const PolicyMap& policies,
62f904a612d9444ab36c07a8e619c113432e046f49vladlosev                                   PrefValueMap* prefs) OVERRIDE;
634b6829f0d28990dd645e16386eb226d0f10c8731shiqian
64e44602ec83c65102035ce5304ae8de0cb16e9e56shiqian private:
65e8ff148b4309e115da1c55089dc3b9a241a928dcshiqian  DISALLOW_COPY_AND_ASSIGN(PinnedLauncherAppsPolicyHandler);
664b6829f0d28990dd645e16386eb226d0f10c8731shiqian};
674b6829f0d28990dd645e16386eb226d0f10c8731shiqian
684b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass ScreenMagnifierPolicyHandler : public IntRangePolicyHandlerBase {
694b6829f0d28990dd645e16386eb226d0f10c8731shiqian public:
704b6829f0d28990dd645e16386eb226d0f10c8731shiqian  ScreenMagnifierPolicyHandler();
714b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual ~ScreenMagnifierPolicyHandler();
724b6829f0d28990dd645e16386eb226d0f10c8731shiqian
734b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // IntRangePolicyHandlerBase:
744b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual void ApplyPolicySettings(const PolicyMap& policies,
754b6829f0d28990dd645e16386eb226d0f10c8731shiqian                                   PrefValueMap* prefs) OVERRIDE;
764b6829f0d28990dd645e16386eb226d0f10c8731shiqian
774b6829f0d28990dd645e16386eb226d0f10c8731shiqian private:
784b6829f0d28990dd645e16386eb226d0f10c8731shiqian  DISALLOW_COPY_AND_ASSIGN(ScreenMagnifierPolicyHandler);
794b6829f0d28990dd645e16386eb226d0f10c8731shiqian};
804b6829f0d28990dd645e16386eb226d0f10c8731shiqian
814b6829f0d28990dd645e16386eb226d0f10c8731shiqian// ConfigurationPolicyHandler for login screen power management settings. This
824b6829f0d28990dd645e16386eb226d0f10c8731shiqian// does not actually set any prefs, it just checks whether the settings are
834b6829f0d28990dd645e16386eb226d0f10c8731shiqian// valid and generates errors if appropriate.
844b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass LoginScreenPowerManagementPolicyHandler
854b6829f0d28990dd645e16386eb226d0f10c8731shiqian    : public TypeCheckingPolicyHandler {
864b6829f0d28990dd645e16386eb226d0f10c8731shiqian public:
874b6829f0d28990dd645e16386eb226d0f10c8731shiqian  LoginScreenPowerManagementPolicyHandler();
884b6829f0d28990dd645e16386eb226d0f10c8731shiqian  virtual ~LoginScreenPowerManagementPolicyHandler();
890ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan
904b6829f0d28990dd645e16386eb226d0f10c8731shiqian  // TypeCheckingPolicyHandler:
910ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan  virtual bool CheckPolicySettings(const PolicyMap& policies,
920ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan                                   PolicyErrorMap* errors) OVERRIDE;
930ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan  virtual void ApplyPolicySettings(const PolicyMap& policies,
940ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan                                   PrefValueMap* prefs) OVERRIDE;
950ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan
960ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan private:
97b0fe69fcbfaa44ae05f6f2429d9c4bbb326b5ea5zhanyong.wan  DISALLOW_COPY_AND_ASSIGN(LoginScreenPowerManagementPolicyHandler);
98b0fe69fcbfaa44ae05f6f2429d9c4bbb326b5ea5zhanyong.wan};
990ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan
1000ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan}  // namespace policy
101b0fe69fcbfaa44ae05f6f2429d9c4bbb326b5ea5zhanyong.wan
102b0fe69fcbfaa44ae05f6f2429d9c4bbb326b5ea5zhanyong.wan#endif  // CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
1030ebc16a68eea644a9f8a718fbdef95112a4a0ff2zhanyong.wan