Index: chrome/browser/chromeos/cros/network_library.h |
=================================================================== |
--- chrome/browser/chromeos/cros/network_library.h (revision 42341) |
+++ chrome/browser/chromeos/cros/network_library.h (working copy) |
@@ -126,10 +126,7 @@ |
}; |
typedef std::vector<NetworkIPConfig> NetworkIPConfigVector; |
-// This class handles the interaction with the ChromeOS network library APIs. |
-// Classes can add themselves as observers. Users can get an instance of this |
-// library class like this: NetworkLibrary::Get() |
-class NetworkLibrary : public URLRequestJobTracker::JobObserver { |
+class NetworkLibrary { |
public: |
class Observer { |
public: |
@@ -147,9 +144,89 @@ |
virtual void NetworkTraffic(NetworkLibrary* obj, int traffic_type) = 0; |
}; |
- // This gets the singleton NetworkLibrary |
- static NetworkLibrary* Get(); |
+ virtual ~NetworkLibrary() {} |
+ virtual void AddObserver(Observer* observer) = 0; |
+ virtual void RemoveObserver(Observer* observer) = 0; |
+ virtual const EthernetNetwork& ethernet_network() const = 0; |
+ virtual bool ethernet_connecting() const = 0; |
+ virtual bool ethernet_connected() const = 0; |
+ |
+ virtual const std::string& wifi_ssid() const = 0; |
+ virtual bool wifi_connecting() const = 0; |
+ virtual bool wifi_connected() const = 0; |
+ virtual int wifi_strength() const = 0; |
+ |
+ virtual const std::string& cellular_name() const = 0; |
+ virtual bool cellular_connecting() const = 0; |
+ virtual bool cellular_connected() const = 0; |
+ virtual int cellular_strength() const = 0; |
+ |
+ // Return true if any network is currently connected. |
+ virtual bool Connected() const = 0; |
+ |
+ // Return true if any network is currently connecting. |
+ virtual bool Connecting() const = 0; |
+ |
+ // Returns the current IP address if connected. If not, returns empty string. |
+ virtual const std::string& IPAddress() const = 0; |
+ |
+ // Returns the current list of wifi networks. |
+ virtual const WifiNetworkVector& wifi_networks() const = 0; |
+ |
+ // Returns the current list of cellular networks. |
+ virtual const CellularNetworkVector& cellular_networks() const = 0; |
+ |
+ // Request a scan for new wifi networks. |
+ virtual void RequestWifiScan() = 0; |
+ |
+ // Connect to the specified wireless network with password. |
+ virtual void ConnectToWifiNetwork(WifiNetwork network, |
+ const string16& password) = 0; |
+ |
+ // Connect to the specified wifi ssid with password. |
+ virtual void ConnectToWifiNetwork(const string16& ssid, |
+ const string16& password) = 0; |
+ |
+ // Connect to the specified cellular network. |
+ virtual void ConnectToCellularNetwork(CellularNetwork network) = 0; |
+ |
+ virtual bool ethernet_available() const = 0; |
+ virtual bool wifi_available() const = 0; |
+ virtual bool cellular_available() const = 0; |
+ |
+ virtual bool ethernet_enabled() const = 0; |
+ virtual bool wifi_enabled() const = 0; |
+ virtual bool cellular_enabled() const = 0; |
+ |
+ virtual bool offline_mode() const = 0; |
+ |
+ // Enables/disables the ethernet network device. |
+ virtual void EnableEthernetNetworkDevice(bool enable) = 0; |
+ |
+ // Enables/disables the wifi network device. |
+ virtual void EnableWifiNetworkDevice(bool enable) = 0; |
+ |
+ // Enables/disables the cellular network device. |
+ virtual void EnableCellularNetworkDevice(bool enable) = 0; |
+ |
+ // Enables/disables offline mode. |
+ virtual void EnableOfflineMode(bool enable) = 0; |
+ |
+ // Fetches IP configs for a given device_path |
+ virtual NetworkIPConfigVector GetIPConfigs( |
+ const std::string& device_path) = 0; |
+}; |
+ |
+// This class handles the interaction with the ChromeOS network library APIs. |
+// Classes can add themselves as observers. Users can get an instance of this |
+// library class like this: NetworkLibrary::Get() |
+class NetworkLibraryImpl : public NetworkLibrary, |
+ public URLRequestJobTracker::JobObserver { |
+ public: |
+ NetworkLibraryImpl(); |
+ virtual ~NetworkLibraryImpl(); |
+ |
// URLRequestJobTracker::JobObserver methods (called on the IO thread): |
virtual void OnJobAdded(URLRequestJob* job); |
virtual void OnJobRemoved(URLRequestJob* job); |
@@ -158,89 +235,90 @@ |
int status_code); |
virtual void OnBytesRead(URLRequestJob* job, int byte_count); |
- void AddObserver(Observer* observer); |
- void RemoveObserver(Observer* observer); |
+ // NetworkLibrary overrides. |
+ virtual void AddObserver(Observer* observer); |
+ virtual void RemoveObserver(Observer* observer); |
- const EthernetNetwork& ethernet_network() const { return ethernet_; } |
- bool ethernet_connecting() const { return ethernet_.connecting; } |
- bool ethernet_connected() const { return ethernet_.connected; } |
+ virtual const EthernetNetwork& ethernet_network() const { return ethernet_; } |
+ virtual bool ethernet_connecting() const { return ethernet_.connecting; } |
+ virtual bool ethernet_connected() const { return ethernet_.connected; } |
- const std::string& wifi_ssid() const { return wifi_.ssid; } |
- bool wifi_connecting() const { return wifi_.connecting; } |
- bool wifi_connected() const { return wifi_.connected; } |
- int wifi_strength() const { return wifi_.strength; } |
+ virtual const std::string& wifi_ssid() const { return wifi_.ssid; } |
+ virtual bool wifi_connecting() const { return wifi_.connecting; } |
+ virtual bool wifi_connected() const { return wifi_.connected; } |
+ virtual int wifi_strength() const { return wifi_.strength; } |
- const std::string& cellular_name() const { return cellular_.name; } |
- bool cellular_connecting() const { return cellular_.connecting; } |
- bool cellular_connected() const { return cellular_.connected; } |
- int cellular_strength() const { return cellular_.strength; } |
+ virtual const std::string& cellular_name() const { return cellular_.name; } |
+ virtual bool cellular_connecting() const { return cellular_.connecting; } |
+ virtual bool cellular_connected() const { return cellular_.connected; } |
+ virtual int cellular_strength() const { return cellular_.strength; } |
// Return true if any network is currently connected. |
- bool Connected() const; |
+ virtual bool Connected() const; |
// Return true if any network is currently connecting. |
- bool Connecting() const; |
+ virtual bool Connecting() const; |
// Returns the current IP address if connected. If not, returns empty string. |
- const std::string& IPAddress() const; |
+ virtual const std::string& IPAddress() const; |
// Returns the current list of wifi networks. |
- const WifiNetworkVector& wifi_networks() const { return wifi_networks_; } |
+ virtual const WifiNetworkVector& wifi_networks() const { |
+ return wifi_networks_; |
+ } |
// Returns the current list of cellular networks. |
- const CellularNetworkVector& cellular_networks() const { |
+ virtual const CellularNetworkVector& cellular_networks() const { |
return cellular_networks_; |
} |
// Request a scan for new wifi networks. |
- void RequestWifiScan(); |
+ virtual void RequestWifiScan(); |
// Connect to the specified wireless network with password. |
- void ConnectToWifiNetwork(WifiNetwork network, const string16& password); |
+ virtual void ConnectToWifiNetwork(WifiNetwork network, |
+ const string16& password); |
// Connect to the specified wifi ssid with password. |
- void ConnectToWifiNetwork(const string16& ssid, const string16& password); |
+ virtual void ConnectToWifiNetwork(const string16& ssid, |
+ const string16& password); |
// Connect to the specified cellular network. |
- void ConnectToCellularNetwork(CellularNetwork network); |
+ virtual void ConnectToCellularNetwork(CellularNetwork network); |
- bool ethernet_available() const { |
+ virtual bool ethernet_available() const { |
return available_devices_ & (1 << TYPE_ETHERNET); } |
- bool wifi_available() const { |
+ virtual bool wifi_available() const { |
return available_devices_ & (1 << TYPE_WIFI); } |
- bool cellular_available() const { |
+ virtual bool cellular_available() const { |
return available_devices_ & (1 << TYPE_CELLULAR); } |
- bool ethernet_enabled() const { |
+ virtual bool ethernet_enabled() const { |
return enabled_devices_ & (1 << TYPE_ETHERNET); } |
- bool wifi_enabled() const { |
+ virtual bool wifi_enabled() const { |
return enabled_devices_ & (1 << TYPE_WIFI); } |
- bool cellular_enabled() const { |
+ virtual bool cellular_enabled() const { |
return enabled_devices_ & (1 << TYPE_CELLULAR); } |
- bool offline_mode() const { return offline_mode_; } |
+ virtual bool offline_mode() const { return offline_mode_; } |
// Enables/disables the ethernet network device. |
- void EnableEthernetNetworkDevice(bool enable); |
+ virtual void EnableEthernetNetworkDevice(bool enable); |
// Enables/disables the wifi network device. |
- void EnableWifiNetworkDevice(bool enable); |
+ virtual void EnableWifiNetworkDevice(bool enable); |
// Enables/disables the cellular network device. |
- void EnableCellularNetworkDevice(bool enable); |
+ virtual void EnableCellularNetworkDevice(bool enable); |
// Enables/disables offline mode. |
- void EnableOfflineMode(bool enable); |
+ virtual void EnableOfflineMode(bool enable); |
// Fetches IP configs for a given device_path |
- NetworkIPConfigVector GetIPConfigs(const std::string& device_path); |
+ virtual NetworkIPConfigVector GetIPConfigs(const std::string& device_path); |
private: |
- friend struct DefaultSingletonTraits<NetworkLibrary>; |
- NetworkLibrary(); |
- ~NetworkLibrary(); |
- |
// This method is called when there's a change in network status. |
// This method is called on a background thread. |
static void NetworkStatusChangedHandler(void* object); |
@@ -287,7 +365,7 @@ |
// Timer for sending NetworkTraffic notification every |
// kNetworkTrafficeTimerSecs seconds. |
- base::OneShotTimer<NetworkLibrary> timer_; |
+ base::OneShotTimer<NetworkLibraryImpl> timer_; |
// The current traffic type that will be sent out for the next NetworkTraffic |
// notification. This is a bitfield of TrafficTypeMasks. |
@@ -322,7 +400,7 @@ |
bool offline_mode_; |
- DISALLOW_COPY_AND_ASSIGN(NetworkLibrary); |
+ DISALLOW_COPY_AND_ASSIGN(NetworkLibraryImpl); |
}; |
} // namespace chromeos |