15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/configuration_policy_handler.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/network_ui_data.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/network/onc/onc_constants.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Value;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ConfigurationPolicyHandler for validation of the network configuration
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// policies. These actually don't set any preferences, but the handler just
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// generates error messages.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkConfigurationPolicyHandler : public TypeCheckingPolicyHandler {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static NetworkConfigurationPolicyHandler* CreateForUserPolicy();
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static NetworkConfigurationPolicyHandler* CreateForDevicePolicy();
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~NetworkConfigurationPolicyHandler();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ConfigurationPolicyHandler methods:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CheckPolicySettings(const PolicyMap& policies,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   PolicyErrorMap* errors) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ApplyPolicySettings(const PolicyMap& policies,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   PrefValueMap* prefs) OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PrepareForDisplaying(PolicyMap* policies) const OVERRIDE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  explicit NetworkConfigurationPolicyHandler(
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const char* policy_name,
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      chromeos::onc::ONCSource onc_source,
40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const char* pref_path);
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Takes network policy in Value representation and produces an output Value
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that contains a pretty-printed and sanitized version. In particular, we
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // remove any Passphrases that may be contained in the JSON. Ownership of the
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // return value is transferred to the caller.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static base::Value* SanitizeNetworkConfig(const base::Value* config);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The kind of ONC source that this handler represents. ONCSource
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // distinguishes between user and device policy.
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const chromeos::onc::ONCSource onc_source_;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // The name of the pref to apply the policy to.
53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  const char* pref_path_;
54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationPolicyHandler);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Maps the PinnedLauncherApps policy to the corresponding pref.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PinnedLauncherAppsPolicyHandler : public ExtensionListPolicyHandler {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PinnedLauncherAppsPolicyHandler();
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PinnedLauncherAppsPolicyHandler();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ExtensionListPolicyHandler methods:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ApplyPolicySettings(const PolicyMap& policies,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   PrefValueMap* prefs) OVERRIDE;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PinnedLauncherAppsPolicyHandler);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class ScreenMagnifierPolicyHandler : public IntRangePolicyHandlerBase {
73868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public:
74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ScreenMagnifierPolicyHandler();
75868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual ~ScreenMagnifierPolicyHandler();
76868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // IntRangePolicyHandlerBase:
78868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual void ApplyPolicySettings(const PolicyMap& policies,
79868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                                   PrefValueMap* prefs) OVERRIDE;
80868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
81868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private:
82868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ScreenMagnifierPolicyHandler);
83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)};
84868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// ConfigurationPolicyHandler for login screen power management settings. This
869ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// does not actually set any prefs, it just checks whether the settings are
879ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// valid and generates errors if appropriate.
889ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass LoginScreenPowerManagementPolicyHandler
899ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    : public TypeCheckingPolicyHandler {
909ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch public:
919ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  LoginScreenPowerManagementPolicyHandler();
929ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  virtual ~LoginScreenPowerManagementPolicyHandler();
939ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
949ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // TypeCheckingPolicyHandler:
959ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  virtual bool CheckPolicySettings(const PolicyMap& policies,
969ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                                   PolicyErrorMap* errors) OVERRIDE;
979ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  virtual void ApplyPolicySettings(const PolicyMap& policies,
989ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                                   PrefValueMap* prefs) OVERRIDE;
999ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
1009ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch private:
1019ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(LoginScreenPowerManagementPolicyHandler);
1029ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch};
1039ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
104558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Handles the deprecated IdleAction policy, so both kIdleActionBattery and
105558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// kIdleActionAC fall back to the deprecated action.
106558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass DeprecatedIdleActionHandler : public IntRangePolicyHandlerBase {
107558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public:
108558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  DeprecatedIdleActionHandler();
109558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual ~DeprecatedIdleActionHandler();
110558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
111558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  // ConfigurationPolicyHandler methods:
112558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual void ApplyPolicySettings(const PolicyMap& policies,
113558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch                                   PrefValueMap* prefs) OVERRIDE;
114558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
115558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch private:
116558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(DeprecatedIdleActionHandler);
117558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch};
118558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace policy
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_
122