// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROMEOS_NETWORK_NETWORK_HANDLER_H_ #define CHROMEOS_NETWORK_NETWORK_HANDLER_H_ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/single_thread_task_runner.h" #include "chromeos/chromeos_export.h" namespace chromeos { class AutoConnectHandler; class ClientCertResolver; class GeolocationHandler; class ManagedNetworkConfigurationHandler; class ManagedNetworkConfigurationHandlerImpl; class NetworkActivationHandler; class NetworkCertMigrator; class NetworkConfigurationHandler; class NetworkConnectionHandler; class NetworkDeviceHandler; class NetworkDeviceHandlerImpl; class NetworkProfileHandler; class NetworkStateHandler; class NetworkSmsHandler; class ProhibitedTechnologiesHandler; // Class for handling initialization and access to chromeos network handlers. // This class should NOT be used in unit tests. Instead, construct individual // classes independently. class CHROMEOS_EXPORT NetworkHandler { public: // Sets the global instance. Must be called before any calls to Get(). static void Initialize(); // Destroys the global instance. static void Shutdown(); // Gets the global instance. Initialize() must be called first. static NetworkHandler* Get(); // Returns true if the global instance has been initialized. static bool IsInitialized(); // Returns the task runner for posting NetworkHandler calls from other // threads. base::SingleThreadTaskRunner* task_runner() { return task_runner_.get(); } // Do not use these accessors within this module; all dependencies should be // explicit so that classes can be constructed explicitly in tests without // NetworkHandler. NetworkStateHandler* network_state_handler(); NetworkDeviceHandler* network_device_handler(); NetworkProfileHandler* network_profile_handler(); NetworkConfigurationHandler* network_configuration_handler(); ManagedNetworkConfigurationHandler* managed_network_configuration_handler(); NetworkActivationHandler* network_activation_handler(); NetworkConnectionHandler* network_connection_handler(); NetworkSmsHandler* network_sms_handler(); GeolocationHandler* geolocation_handler(); ProhibitedTechnologiesHandler* prohibited_technologies_handler(); private: NetworkHandler(); virtual ~NetworkHandler(); void Init(); // The order of these determines the (inverse) destruction order. scoped_refptr task_runner_; scoped_ptr network_state_handler_; scoped_ptr network_device_handler_; scoped_ptr network_profile_handler_; scoped_ptr network_configuration_handler_; scoped_ptr managed_network_configuration_handler_; scoped_ptr network_cert_migrator_; scoped_ptr client_cert_resolver_; scoped_ptr network_activation_handler_; scoped_ptr network_connection_handler_; scoped_ptr auto_connect_handler_; scoped_ptr network_sms_handler_; scoped_ptr geolocation_handler_; scoped_ptr prohibited_technologies_handler_; DISALLOW_COPY_AND_ASSIGN(NetworkHandler); }; } // namespace chromeos #endif // CHROMEOS_NETWORK_NETWORK_HANDLER_H_