Home | History | Annotate | Download | only in policy
      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