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.
5 #ifndef CHROMEOS_NETWORK_NETWORK_HANDLER_H_
6 #define CHROMEOS_NETWORK_NETWORK_HANDLER_H_
8 #include "base/basictypes.h"
9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop_proxy.h"
12 #include "chromeos/chromeos_export.h"
16 class AutoConnectHandler
;
17 class ClientCertResolver
;
18 class GeolocationHandler
;
19 class ManagedNetworkConfigurationHandler
;
20 class ManagedNetworkConfigurationHandlerImpl
;
21 class NetworkActivationHandler
;
22 class NetworkCertMigrator
;
23 class NetworkConfigurationHandler
;
24 class NetworkConnectionHandler
;
25 class NetworkDeviceHandler
;
26 class NetworkDeviceHandlerImpl
;
27 class NetworkProfileHandler
;
28 class NetworkStateHandler
;
29 class NetworkSmsHandler
;
31 // Class for handling initialization and access to chromeos network handlers.
32 // This class should NOT be used in unit tests. Instead, construct individual
33 // classes independently.
34 class CHROMEOS_EXPORT NetworkHandler
{
36 // Sets the global instance. Must be called before any calls to Get().
37 static void Initialize();
39 // Destroys the global instance.
40 static void Shutdown();
42 // Gets the global instance. Initialize() must be called first.
43 static NetworkHandler
* Get();
45 // Returns true if the global instance has been initialized.
46 static bool IsInitialized();
48 // Returns the MessageLoopProxy for posting NetworkHandler calls from
50 base::MessageLoopProxy
* message_loop() { return message_loop_
.get(); }
52 // Do not use these accessors within this module; all dependencies should be
53 // explicit so that classes can be constructed explicitly in tests without
55 NetworkStateHandler
* network_state_handler();
56 NetworkDeviceHandler
* network_device_handler();
57 NetworkProfileHandler
* network_profile_handler();
58 NetworkConfigurationHandler
* network_configuration_handler();
59 ManagedNetworkConfigurationHandler
* managed_network_configuration_handler();
60 NetworkActivationHandler
* network_activation_handler();
61 NetworkConnectionHandler
* network_connection_handler();
62 NetworkSmsHandler
* network_sms_handler();
63 GeolocationHandler
* geolocation_handler();
67 virtual ~NetworkHandler();
71 // The order of these determines the (inverse) destruction order.
72 scoped_refptr
<base::MessageLoopProxy
> message_loop_
;
73 scoped_ptr
<NetworkStateHandler
> network_state_handler_
;
74 scoped_ptr
<NetworkDeviceHandlerImpl
> network_device_handler_
;
75 scoped_ptr
<NetworkProfileHandler
> network_profile_handler_
;
76 scoped_ptr
<NetworkConfigurationHandler
> network_configuration_handler_
;
77 scoped_ptr
<ManagedNetworkConfigurationHandlerImpl
>
78 managed_network_configuration_handler_
;
79 scoped_ptr
<NetworkCertMigrator
> network_cert_migrator_
;
80 scoped_ptr
<ClientCertResolver
> client_cert_resolver_
;
81 scoped_ptr
<NetworkActivationHandler
> network_activation_handler_
;
82 scoped_ptr
<NetworkConnectionHandler
> network_connection_handler_
;
83 scoped_ptr
<AutoConnectHandler
> auto_connect_handler_
;
84 scoped_ptr
<NetworkSmsHandler
> network_sms_handler_
;
85 scoped_ptr
<GeolocationHandler
> geolocation_handler_
;
87 DISALLOW_COPY_AND_ASSIGN(NetworkHandler
);
90 } // namespace chromeos
92 #endif // CHROMEOS_NETWORK_NETWORK_HANDLER_H_