1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_POLICY_NETWORK_CONFIGURATION_UPDATER_IMPL_H_ 6#define CHROME_BROWSER_CHROMEOS_POLICY_NETWORK_CONFIGURATION_UPDATER_IMPL_H_ 7 8#include "chrome/browser/chromeos/policy/network_configuration_updater.h" 9#include "chrome/browser/policy/policy_service.h" 10#include "chromeos/network/onc/onc_constants.h" 11 12namespace base { 13class Value; 14} 15 16namespace chromeos { 17namespace onc { 18class CertificateImporter; 19} 20} 21 22namespace policy { 23 24class PolicyMap; 25 26// This implementation pushes policies to the 27// ManagedNetworkConfigurationHandler. User policies are only pushed after 28// OnUserPolicyInitialized() was called. 29class NetworkConfigurationUpdaterImpl : public NetworkConfigurationUpdater, 30 public PolicyService::Observer { 31 public: 32 NetworkConfigurationUpdaterImpl( 33 PolicyService* device_policy_service, 34 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer); 35 virtual ~NetworkConfigurationUpdaterImpl(); 36 37 // NetworkConfigurationUpdater overrides. 38 virtual void SetUserPolicyService( 39 bool allow_trusted_certs_from_policy, 40 const std::string& hashed_username, 41 PolicyService* user_policy_service) OVERRIDE; 42 43 virtual void UnsetUserPolicyService() OVERRIDE; 44 45 // PolicyService::Observer overrides for both device and user policies. 46 virtual void OnPolicyUpdated(const PolicyNamespace& ns, 47 const PolicyMap& previous, 48 const PolicyMap& current) OVERRIDE; 49 virtual void OnPolicyServiceInitialized(PolicyDomain domain) OVERRIDE; 50 51 private: 52 // Called if the ONC policy from |onc_source| changed. 53 void OnPolicyChanged(chromeos::onc::ONCSource onc_source, 54 const base::Value* previous, 55 const base::Value* current); 56 57 void ApplyNetworkConfiguration(chromeos::onc::ONCSource onc_source); 58 59 // Used to register for notifications from the |user_policy_service_|. 60 scoped_ptr<PolicyChangeRegistrar> user_policy_change_registrar_; 61 62 // Used to register for notifications from the |device_policy_service_|. 63 PolicyChangeRegistrar device_policy_change_registrar_; 64 65 // Used to retrieve user policies. 66 PolicyService* user_policy_service_; 67 68 // Used to retrieve device policies. 69 PolicyService* device_policy_service_; 70 71 // User hash of the user that the user policy applies to. 72 std::string hashed_username_; 73 74 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer_; 75 76 DISALLOW_COPY_AND_ASSIGN(NetworkConfigurationUpdaterImpl); 77}; 78 79} // namespace policy 80 81#endif // CHROME_BROWSER_CHROMEOS_POLICY_NETWORK_CONFIGURATION_UPDATER_IMPL_H_ 82