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) 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/basictypes.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/compiler_specific.h" 108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/extensions/policy_handlers.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/network_ui_data.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "components/onc/onc_constants.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_handler.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Value; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class Schema; 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ConfigurationPolicyHandler for policies referencing external data. 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class ExternalDataPolicyHandler : public TypeCheckingPolicyHandler { 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public: 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) explicit ExternalDataPolicyHandler(const char* policy_name); 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual ~ExternalDataPolicyHandler(); 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TypeCheckingPolicyHandler: 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool CheckPolicySettings(const PolicyMap& policies, 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PolicyErrorMap* errors) OVERRIDE; 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private: 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExternalDataPolicyHandler); 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ConfigurationPolicyHandler for validation of the network configuration 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// policies. These actually don't set any preferences, but the handler just 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// generates error messages. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkConfigurationPolicyHandler : public TypeCheckingPolicyHandler { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static NetworkConfigurationPolicyHandler* CreateForUserPolicy(); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static NetworkConfigurationPolicyHandler* CreateForDevicePolicy(); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~NetworkConfigurationPolicyHandler(); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfigurationPolicyHandler methods: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CheckPolicySettings(const PolicyMap& policies, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyErrorMap* errors) OVERRIDE; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void PrepareForDisplaying(PolicyMap* policies) const OVERRIDE; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit NetworkConfigurationPolicyHandler( 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const char* policy_name, 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ::onc::ONCSource onc_source, 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const char* pref_path); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Takes network policy in Value representation and produces an output Value 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that contains a pretty-printed and sanitized version. In particular, we 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // remove any Passphrases that may be contained in the JSON. Ownership of the 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // return value is transferred to the caller. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static base::Value* SanitizeNetworkConfig(const base::Value* config); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The kind of ONC source that this handler represents. ONCSource 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // distinguishes between user and device policy. 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const ::onc::ONCSource onc_source_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // The name of the pref to apply the policy to. 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const char* pref_path_; 76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationPolicyHandler); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Maps the PinnedLauncherApps policy to the corresponding pref. 818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class PinnedLauncherAppsPolicyHandler 828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) : public extensions::ExtensionListPolicyHandler { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PinnedLauncherAppsPolicyHandler(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PinnedLauncherAppsPolicyHandler(); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ExtensionListPolicyHandler methods: 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PinnedLauncherAppsPolicyHandler); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class ScreenMagnifierPolicyHandler : public IntRangePolicyHandlerBase { 96868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 97868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ScreenMagnifierPolicyHandler(); 98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~ScreenMagnifierPolicyHandler(); 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // IntRangePolicyHandlerBase: 101868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 103868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 104868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 105868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScreenMagnifierPolicyHandler); 106868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 107868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 108effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Policy handler for login screen power management settings. This does not 109effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// actually set any prefs, it just checks whether the settings are valid and 110effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// generates errors if appropriate. 1119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass LoginScreenPowerManagementPolicyHandler 112effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch : public SchemaValidatingPolicyHandler { 1139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch public: 114effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch explicit LoginScreenPowerManagementPolicyHandler(const Schema& chrome_schema); 1159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual ~LoginScreenPowerManagementPolicyHandler(); 1169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 117effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // SchemaValidatingPolicyHandler: 1189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual void ApplyPolicySettings(const PolicyMap& policies, 1199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch PrefValueMap* prefs) OVERRIDE; 1209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch private: 1229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch DISALLOW_COPY_AND_ASSIGN(LoginScreenPowerManagementPolicyHandler); 1239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}; 1249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 125558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Handles the deprecated IdleAction policy, so both kIdleActionBattery and 126558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// kIdleActionAC fall back to the deprecated action. 127558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass DeprecatedIdleActionHandler : public IntRangePolicyHandlerBase { 128558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public: 129558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DeprecatedIdleActionHandler(); 130558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ~DeprecatedIdleActionHandler(); 131558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 132558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // ConfigurationPolicyHandler methods: 133558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual void ApplyPolicySettings(const PolicyMap& policies, 134558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch PrefValueMap* prefs) OVERRIDE; 135558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 136558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch private: 137558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DeprecatedIdleActionHandler); 138558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}; 139558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class PowerManagementIdleSettingsPolicyHandler 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : public SchemaValidatingPolicyHandler { 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) explicit PowerManagementIdleSettingsPolicyHandler( 144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const Schema& chrome_schema); 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~PowerManagementIdleSettingsPolicyHandler(); 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // SchemaValidatingPolicyHandler: 148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PowerManagementIdleSettingsPolicyHandler); 153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class ScreenLockDelayPolicyHandler : public SchemaValidatingPolicyHandler { 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) explicit ScreenLockDelayPolicyHandler(const Schema& chrome_schema); 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~ScreenLockDelayPolicyHandler(); 159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // SchemaValidatingPolicyHandler: 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScreenLockDelayPolicyHandler); 166a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 167a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace policy 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_ 171