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 CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_NETWORK_CONFIGURATION_UPDATER_H_ 6 #define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_NETWORK_CONFIGURATION_UPDATER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/callback_list.h" 12 #include "base/compiler_specific.h" 13 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/weak_ptr.h" 15 #include "chrome/browser/chromeos/policy/network_configuration_updater.h" 16 #include "components/onc/onc_constants.h" 17 18 namespace base { 19 class DictionaryValue; 20 class ListValue; 21 class Value; 22 } 23 24 namespace chromeos { 25 class CrosSettings; 26 class ManagedNetworkConfigurationHandler; 27 class NetworkDeviceHandler; 28 29 namespace onc { 30 class CertificateImporter; 31 } 32 } 33 34 namespace policy { 35 36 class PolicyService; 37 38 // Implements addtional special handling of ONC device policies, which requires 39 // listening for notifications from CrosSettings. 40 class DeviceNetworkConfigurationUpdater : public NetworkConfigurationUpdater { 41 public: 42 virtual ~DeviceNetworkConfigurationUpdater(); 43 44 // Creates an updater that applies the ONC device policy from |policy_service| 45 // once the policy service is completely initialized and on each policy 46 // change. The argument objects must outlive the returned updater. 47 static scoped_ptr<DeviceNetworkConfigurationUpdater> CreateForDevicePolicy( 48 PolicyService* policy_service, 49 chromeos::ManagedNetworkConfigurationHandler* network_config_handler, 50 chromeos::NetworkDeviceHandler* network_device_handler, 51 chromeos::CrosSettings* cros_settings); 52 53 private: 54 DeviceNetworkConfigurationUpdater( 55 PolicyService* policy_service, 56 chromeos::ManagedNetworkConfigurationHandler* network_config_handler, 57 chromeos::NetworkDeviceHandler* network_device_handler, 58 chromeos::CrosSettings* cros_settings); 59 60 virtual void Init() OVERRIDE; 61 virtual void ImportCertificates(const base::ListValue& certificates_onc) 62 OVERRIDE; 63 virtual void ApplyNetworkPolicy(base::ListValue* network_configs_onc, 64 base::DictionaryValue* global_network_config) 65 OVERRIDE; 66 void OnDataRoamingSettingChanged(); 67 68 chromeos::NetworkDeviceHandler* network_device_handler_; 69 chromeos::CrosSettings* cros_settings_; 70 scoped_ptr<base::CallbackList<void(void)>::Subscription> 71 data_roaming_setting_subscription_; 72 73 base::WeakPtrFactory<DeviceNetworkConfigurationUpdater> weak_factory_; 74 75 DISALLOW_COPY_AND_ASSIGN(DeviceNetworkConfigurationUpdater); 76 }; 77 78 } // namespace policy 79 80 #endif // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_NETWORK_CONFIGURATION_UPDATER_H_ 81 82