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