network_handler.h revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Copyright 2013 The Chromium Authors. All rights reserved. 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Use of this source code is governed by a BSD-style license that can be 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// found in the LICENSE file. 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef CHROMEOS_NETWORK_NETWORK_HANDLER_H_ 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define CHROMEOS_NETWORK_NETWORK_HANDLER_H_ 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/basictypes.h" 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/memory/scoped_ptr.h" 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "chromeos/chromeos_export.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace chromeos { 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass GeolocationHandler; 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ManagedNetworkConfigurationHandler; 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NetworkConfigurationHandler; 17a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Inghamclass NetworkConnectionHandler; 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NetworkDeviceHandler; 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NetworkProfileHandler; 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NetworkStateHandler; 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NetworkSmsHandler; 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Class for handling initialization and access to chromeos network handlers. 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This class should NOT be used in unit tests. Instead, construct individual 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// classes independently. 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CHROMEOS_EXPORT NetworkHandler { 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Sets the global instance. Must be called before any calls to Get(). 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void Initialize(); 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Destroys the global instance. 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void Shutdown(); 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Gets the global instance. Initialize() must be called first. 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static NetworkHandler* Get(); 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Returns true if the global instance has been initialized. 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static bool IsInitialized(); 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Do not use these accessors within this module; all dependencies should be 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // explicit so that classes can be constructed explicitly in tests without 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // NetworkHandler. 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner NetworkStateHandler* network_state_handler(); 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner NetworkDeviceHandler* network_device_handler(); 45a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham NetworkProfileHandler* network_profile_handler(); 46a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham NetworkConfigurationHandler* network_configuration_handler(); 47a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham ManagedNetworkConfigurationHandler* managed_network_configuration_handler(); 48a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham NetworkConnectionHandler* network_connection_handler(); 49a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham NetworkSmsHandler* network_sms_handler(); 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GeolocationHandler* geolocation_handler(); 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner NetworkHandler(); 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual ~NetworkHandler(); 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 56a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham void Init(); 57a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham 58a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham // The order of these determines the (inverse) destruction order. 59a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<NetworkStateHandler> network_state_handler_; 60a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<NetworkDeviceHandler> network_device_handler_; 6154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton scoped_ptr<NetworkProfileHandler> network_profile_handler_; 62a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<NetworkConfigurationHandler> network_configuration_handler_; 63a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<ManagedNetworkConfigurationHandler> 64a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham managed_network_configuration_handler_; 65a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<NetworkConnectionHandler> network_connection_handler_; 66a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<NetworkSmsHandler> network_sms_handler_; 67a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham scoped_ptr<GeolocationHandler> geolocation_handler_; 68a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham 69b1a9862ba1ceb219b6042ff3f8c6ff591867ae26Greg Clayton DISALLOW_COPY_AND_ASSIGN(NetworkHandler); 70a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham}; 71a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham 72a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham} // namespace chromeos 7354e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 74a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham#endif // CHROMEOS_NETWORK_NETWORK_HANDLER_H_ 75a30baf5b257c7a62c5888679e7c1ac8eb47ca6d7Jim Ingham