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