configuration_policy_handler_chromeos.h revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
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_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
6#define CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
7
8#include "chrome/browser/extensions/policy_handlers.h"
9#include "chrome/browser/policy/configuration_policy_handler.h"
10#include "chromeos/network/network_ui_data.h"
11#include "components/onc/onc_constants.h"
12
13namespace base {
14class DictionaryValue;
15class Value;
16}
17
18namespace policy {
19
20// ConfigurationPolicyHandler for validation of the network configuration
21// policies. These actually don't set any preferences, but the handler just
22// generates error messages.
23class NetworkConfigurationPolicyHandler : public TypeCheckingPolicyHandler {
24 public:
25  static NetworkConfigurationPolicyHandler* CreateForUserPolicy();
26  static NetworkConfigurationPolicyHandler* CreateForDevicePolicy();
27
28  virtual ~NetworkConfigurationPolicyHandler();
29
30  // ConfigurationPolicyHandler methods:
31  virtual bool CheckPolicySettings(const PolicyMap& policies,
32                                   PolicyErrorMap* errors) OVERRIDE;
33  virtual void ApplyPolicySettings(const PolicyMap& policies,
34                                   PrefValueMap* prefs) OVERRIDE;
35  virtual void PrepareForDisplaying(PolicyMap* policies) const OVERRIDE;
36
37 private:
38  explicit NetworkConfigurationPolicyHandler(
39      const char* policy_name,
40      ::onc::ONCSource onc_source,
41      const char* pref_path);
42
43  // Takes network policy in Value representation and produces an output Value
44  // that contains a pretty-printed and sanitized version. In particular, we
45  // remove any Passphrases that may be contained in the JSON. Ownership of the
46  // return value is transferred to the caller.
47  static base::Value* SanitizeNetworkConfig(const base::Value* config);
48
49  // The kind of ONC source that this handler represents. ONCSource
50  // distinguishes between user and device policy.
51  const ::onc::ONCSource onc_source_;
52
53  // The name of the pref to apply the policy to.
54  const char* pref_path_;
55
56  DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationPolicyHandler);
57};
58
59// Maps the PinnedLauncherApps policy to the corresponding pref.
60class PinnedLauncherAppsPolicyHandler
61    : public extensions::ExtensionListPolicyHandler {
62 public:
63  PinnedLauncherAppsPolicyHandler();
64  virtual ~PinnedLauncherAppsPolicyHandler();
65
66  // ExtensionListPolicyHandler methods:
67  virtual void ApplyPolicySettings(const PolicyMap& policies,
68                                   PrefValueMap* prefs) OVERRIDE;
69
70 private:
71  DISALLOW_COPY_AND_ASSIGN(PinnedLauncherAppsPolicyHandler);
72};
73
74class ScreenMagnifierPolicyHandler : public IntRangePolicyHandlerBase {
75 public:
76  ScreenMagnifierPolicyHandler();
77  virtual ~ScreenMagnifierPolicyHandler();
78
79  // IntRangePolicyHandlerBase:
80  virtual void ApplyPolicySettings(const PolicyMap& policies,
81                                   PrefValueMap* prefs) OVERRIDE;
82
83 private:
84  DISALLOW_COPY_AND_ASSIGN(ScreenMagnifierPolicyHandler);
85};
86
87// ConfigurationPolicyHandler for login screen power management settings. This
88// does not actually set any prefs, it just checks whether the settings are
89// valid and generates errors if appropriate.
90class LoginScreenPowerManagementPolicyHandler
91    : public TypeCheckingPolicyHandler {
92 public:
93  LoginScreenPowerManagementPolicyHandler();
94  virtual ~LoginScreenPowerManagementPolicyHandler();
95
96  // TypeCheckingPolicyHandler:
97  virtual bool CheckPolicySettings(const PolicyMap& policies,
98                                   PolicyErrorMap* errors) OVERRIDE;
99  virtual void ApplyPolicySettings(const PolicyMap& policies,
100                                   PrefValueMap* prefs) OVERRIDE;
101
102 private:
103  DISALLOW_COPY_AND_ASSIGN(LoginScreenPowerManagementPolicyHandler);
104};
105
106// Handles the deprecated IdleAction policy, so both kIdleActionBattery and
107// kIdleActionAC fall back to the deprecated action.
108class DeprecatedIdleActionHandler : public IntRangePolicyHandlerBase {
109 public:
110  DeprecatedIdleActionHandler();
111  virtual ~DeprecatedIdleActionHandler();
112
113  // ConfigurationPolicyHandler methods:
114  virtual void ApplyPolicySettings(const PolicyMap& policies,
115                                   PrefValueMap* prefs) OVERRIDE;
116
117 private:
118  DISALLOW_COPY_AND_ASSIGN(DeprecatedIdleActionHandler);
119};
120
121}  // namespace policy
122
123#endif  // CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
124