configuration_policy_handler_chromeos.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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/chromeos/cros/network_ui_data.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/configuration_policy_handler.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: 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkConfigurationPolicyHandler( 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* policy_name, 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chromeos::onc::ONCSource onc_source); 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: 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Takes network policy in Value representation and produces an output Value 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that contains a pretty-printed and sanitized version. In particular, we 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // remove any Passphrases that may be contained in the JSON. Ownership of the 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // return value is transferred to the caller. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static base::Value* SanitizeNetworkConfig(const base::Value* config); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Filters a network dictionary to remove all sensitive fields and replace 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // their values with placeholders. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MaskSensitiveValues(base::DictionaryValue* network_dict); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chromeos::onc::ONCSource onc_source_; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationPolicyHandler); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Maps the PinnedLauncherApps policy to the corresponding pref. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PinnedLauncherAppsPolicyHandler : public ExtensionListPolicyHandler { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PinnedLauncherAppsPolicyHandler(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PinnedLauncherAppsPolicyHandler(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ExtensionListPolicyHandler methods: 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ApplyPolicySettings(const PolicyMap& policies, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PinnedLauncherAppsPolicyHandler); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace policy 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_POLICY_CONFIGURATION_POLICY_HANDLER_CHROMEOS_H_ 69