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