managed_network_configuration_handler_impl.h revision 58537e28ecd584eab876aee8be7156509866d23a
1// Copyright 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 CHROMEOS_NETWORK_MANAGED_NETWORK_CONFIGURATION_HANDLER_IMPL_H_ 6#define CHROMEOS_NETWORK_MANAGED_NETWORK_CONFIGURATION_HANDLER_IMPL_H_ 7 8#include <map> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "base/memory/weak_ptr.h" 14#include "chromeos/chromeos_export.h" 15#include "chromeos/network/managed_network_configuration_handler.h" 16#include "chromeos/network/network_handler_callbacks.h" 17#include "chromeos/network/network_profile_observer.h" 18#include "chromeos/network/policy_applicator.h" 19 20namespace base { 21class DictionaryValue; 22} 23 24namespace chromeos { 25 26class NetworkConfigurationHandler; 27struct NetworkProfile; 28class NetworkProfileHandler; 29class NetworkStateHandler; 30 31class CHROMEOS_EXPORT ManagedNetworkConfigurationHandlerImpl 32 : public ManagedNetworkConfigurationHandler, 33 public NetworkProfileObserver, 34 public PolicyApplicator::ConfigurationHandler { 35 public: 36 typedef std::map<std::string, const base::DictionaryValue*> GuidToPolicyMap; 37 typedef std::map<std::string, GuidToPolicyMap> UserToPoliciesMap; 38 39 virtual ~ManagedNetworkConfigurationHandlerImpl(); 40 41 // ManagedNetworkConfigurationHandler overrides 42 virtual void AddObserver(NetworkPolicyObserver* observer) OVERRIDE; 43 virtual void RemoveObserver(NetworkPolicyObserver* observer) OVERRIDE; 44 45 virtual void GetProperties( 46 const std::string& service_path, 47 const network_handler::DictionaryResultCallback& callback, 48 const network_handler::ErrorCallback& error_callback) const OVERRIDE; 49 50 virtual void GetManagedProperties( 51 const std::string& userhash, 52 const std::string& service_path, 53 const network_handler::DictionaryResultCallback& callback, 54 const network_handler::ErrorCallback& error_callback) OVERRIDE; 55 56 virtual void SetProperties( 57 const std::string& service_path, 58 const base::DictionaryValue& user_settings, 59 const base::Closure& callback, 60 const network_handler::ErrorCallback& error_callback) const OVERRIDE; 61 62 virtual void CreateConfiguration( 63 const std::string& userhash, 64 const base::DictionaryValue& properties, 65 const network_handler::StringResultCallback& callback, 66 const network_handler::ErrorCallback& error_callback) const OVERRIDE; 67 68 virtual void RemoveConfiguration( 69 const std::string& service_path, 70 const base::Closure& callback, 71 const network_handler::ErrorCallback& error_callback) const OVERRIDE; 72 73 virtual void SetPolicy(onc::ONCSource onc_source, 74 const std::string& userhash, 75 const base::ListValue& network_configs_onc) OVERRIDE; 76 77 virtual const base::DictionaryValue* FindPolicyByGUID( 78 const std::string userhash, 79 const std::string& guid, 80 onc::ONCSource* onc_source) const OVERRIDE; 81 82 virtual const base::DictionaryValue* FindPolicyByGuidAndProfile( 83 const std::string& guid, 84 const std::string& profile_path) const OVERRIDE; 85 86 // NetworkProfileObserver overrides 87 virtual void OnProfileAdded(const NetworkProfile& profile) OVERRIDE; 88 virtual void OnProfileRemoved(const NetworkProfile& profile) OVERRIDE; 89 90 // PolicyApplicator::ConfigurationHandler overrides 91 virtual void CreateConfigurationFromPolicy( 92 const base::DictionaryValue& shill_properties) OVERRIDE; 93 94 private: 95 friend class ClientCertResolverTest; 96 friend class NetworkHandler; 97 friend class ManagedNetworkConfigurationHandlerTest; 98 99 ManagedNetworkConfigurationHandlerImpl(); 100 101 void Init(NetworkStateHandler* network_state_handler, 102 NetworkProfileHandler* network_profile_handler, 103 NetworkConfigurationHandler* network_configuration_handler); 104 105 void GetManagedPropertiesCallback( 106 const network_handler::DictionaryResultCallback& callback, 107 const network_handler::ErrorCallback& error_callback, 108 const std::string& service_path, 109 const base::DictionaryValue& shill_properties); 110 111 const GuidToPolicyMap* GetPoliciesForUser(const std::string& userhash) const; 112 const GuidToPolicyMap* GetPoliciesForProfile( 113 const NetworkProfile& profile) const; 114 115 void OnPolicyApplied(const std::string& service_path); 116 117 // The DictionaryValues of the nested maps are owned by this class and are 118 // explicitly deleted where necessary. If present, the empty string maps to 119 // the device policy. 120 UserToPoliciesMap policies_by_user_; 121 122 // Local references to the associated handler instances. 123 NetworkStateHandler* network_state_handler_; 124 NetworkProfileHandler* network_profile_handler_; 125 NetworkConfigurationHandler* network_configuration_handler_; 126 127 ObserverList<NetworkPolicyObserver> observers_; 128 129 // For Shill client callbacks 130 base::WeakPtrFactory<ManagedNetworkConfigurationHandlerImpl> 131 weak_ptr_factory_; 132 133 DISALLOW_COPY_AND_ASSIGN(ManagedNetworkConfigurationHandlerImpl); 134}; 135 136} // namespace chromeos 137 138#endif // CHROMEOS_NETWORK_MANAGED_NETWORK_CONFIGURATION_HANDLER_IMPL_H_ 139