• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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