| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 6 #define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/observer_list.h" | 11 #include "base/observer_list.h" |
| 12 #include "base/platform_thread.h" | 12 #include "base/platform_thread.h" |
| 13 #include "base/singleton.h" | 13 #include "base/singleton.h" |
| 14 #include "base/string16.h" | 14 #include "base/string16.h" |
| 15 #include "base/timer.h" | 15 #include "base/timer.h" |
| 16 #include "net/url_request/url_request_job_tracker.h" | 16 #include "net/url_request/url_request_job_tracker.h" |
| 17 #include "third_party/cros/chromeos_network.h" | 17 #include "third_party/cros/chromeos_network.h" |
| 18 | 18 |
| 19 namespace chromeos { | 19 namespace chromeos { |
| 20 | 20 |
| 21 struct EthernetNetwork { | 21 class Network { |
| 22 EthernetNetwork() | 22 public: |
| 23 : connecting(false), | 23 const std::string& service_path() const { return service_path_; } |
| 24 connected(false) {} | 24 const std::string& device_path() const { return device_path_; } |
| 25 const std::string& ip_address() const { return ip_address_; } |
| 26 bool connecting() const { return connecting_; } |
| 27 bool connected() const { return connected_; } |
| 28 bool connecting_or_connected() const { return connecting_ || connected_; } |
| 25 | 29 |
| 26 std::string device_path; | 30 void set_connecting(bool connecting) { connecting_ = connecting; } |
| 27 std::string ip_address; | 31 void set_connected(bool connected) { connected_ = connected; } |
| 28 bool connecting; | 32 |
| 29 bool connected; | 33 // Clear the fields. |
| 34 virtual void Clear(); |
| 35 |
| 36 // Configure the Network from a ServiceInfo object. |
| 37 virtual void ConfigureFromService(const ServiceInfo& service); |
| 38 |
| 39 protected: |
| 40 Network() |
| 41 : connecting_(false), |
| 42 connected_(false) {} |
| 43 virtual ~Network() {} |
| 44 |
| 45 private: |
| 46 std::string service_path_; |
| 47 std::string device_path_; |
| 48 std::string ip_address_; |
| 49 bool connecting_; |
| 50 bool connected_; |
| 30 }; | 51 }; |
| 31 | 52 |
| 32 struct WifiNetwork { | 53 class EthernetNetwork : public Network { |
| 33 WifiNetwork() | 54 public: |
| 34 : encrypted(false), | 55 EthernetNetwork() : Network() {} |
| 35 encryption(SECURITY_UNKNOWN), | 56 }; |
| 36 strength(0), | |
| 37 connecting(false), | |
| 38 connected(false), | |
| 39 auto_connect(false) {} | |
| 40 WifiNetwork(ServiceInfo service, bool connecting, bool connected, | |
| 41 const std::string& ip_address) | |
| 42 : service_path(service.service_path), | |
| 43 device_path(service.device_path), | |
| 44 ssid(service.name), | |
| 45 encrypted(service.security != SECURITY_NONE), | |
| 46 encryption(service.security), | |
| 47 passphrase(service.passphrase), | |
| 48 strength(service.strength), | |
| 49 connecting(connecting), | |
| 50 connected(connected), | |
| 51 auto_connect(service.auto_connect), | |
| 52 ip_address(ip_address) {} | |
| 53 | 57 |
| 54 // WifiNetworks are sorted by ssids. | 58 class WirelessNetwork : public Network { |
| 55 bool operator< (const WifiNetwork& other) const { | 59 public: |
| 56 return ssid < other.ssid; | 60 // WirelessNetwork are sorted by name. |
| 61 bool operator< (const WirelessNetwork& other) const { |
| 62 return name_ < other.name(); |
| 57 } | 63 } |
| 58 | 64 |
| 59 std::string service_path; | 65 const std::string& name() const { return name_; } |
| 60 std::string device_path; | 66 int strength() const { return strength_; } |
| 61 std::string ssid; | 67 bool auto_connect() const { return auto_connect_; } |
| 62 bool encrypted; | 68 |
| 63 ConnectionSecurity encryption; | 69 void set_name(const std::string& name) { name_ = name; } |
| 64 std::string passphrase; | 70 void set_auto_connect(bool auto_connect) { auto_connect_ = auto_connect; } |
| 65 int strength; | 71 |
| 66 bool connecting; | 72 // Network overrides. |
| 67 bool connected; | 73 virtual void Clear(); |
| 68 bool auto_connect; | 74 virtual void ConfigureFromService(const ServiceInfo& service); |
| 69 std::string ip_address; | 75 |
| 76 protected: |
| 77 WirelessNetwork() |
| 78 : Network(), |
| 79 strength_(0), |
| 80 auto_connect_(false) {} |
| 81 |
| 82 private: |
| 83 std::string name_; |
| 84 int strength_; |
| 85 bool auto_connect_; |
| 70 }; | 86 }; |
| 71 typedef std::vector<WifiNetwork> WifiNetworkVector; | |
| 72 | 87 |
| 73 struct CellularNetwork { | 88 class CellularNetwork : public WirelessNetwork { |
| 74 CellularNetwork() | 89 public: |
| 75 : strength(strength), | 90 CellularNetwork() : WirelessNetwork() {} |
| 76 connecting(false), | 91 explicit CellularNetwork(const ServiceInfo& service) |
| 77 connected(false), | 92 : WirelessNetwork() { |
| 78 auto_connect(false) {} | 93 ConfigureFromService(service); |
| 79 CellularNetwork(ServiceInfo service, bool connecting, bool connected, | 94 } |
| 80 const std::string& ip_address) | 95 }; |
| 81 : service_path(service.service_path), | |
| 82 device_path(service.device_path), | |
| 83 name(service.name), | |
| 84 strength(service.strength), | |
| 85 connecting(connecting), | |
| 86 connected(connected), | |
| 87 auto_connect(service.auto_connect), | |
| 88 ip_address(ip_address) {} | |
| 89 | 96 |
| 90 // CellularNetworks are sorted by name. | 97 class WifiNetwork : public WirelessNetwork { |
| 91 bool operator< (const CellularNetwork& other) const { | 98 public: |
| 92 return name < other.name; | 99 WifiNetwork() |
| 100 : WirelessNetwork(), |
| 101 encryption_(SECURITY_NONE) {} |
| 102 explicit WifiNetwork(const ServiceInfo& service) |
| 103 : WirelessNetwork() { |
| 104 ConfigureFromService(service); |
| 93 } | 105 } |
| 94 | 106 |
| 95 std::string service_path; | 107 bool encrypted() const { return encryption_ != SECURITY_NONE; } |
| 96 std::string device_path; | 108 ConnectionSecurity encryption() const { return encryption_; } |
| 97 std::string name; | 109 const std::string& passphrase() const { return passphrase_; } |
| 98 int strength; | 110 |
| 99 bool connecting; | 111 void set_encryption(ConnectionSecurity encryption) { |
| 100 bool connected; | 112 encryption_ = encryption; |
| 101 bool auto_connect; | 113 } |
| 102 std::string ip_address; | 114 void set_passphrase(const std::string& passphrase) { |
| 115 passphrase_ = passphrase; |
| 116 } |
| 117 |
| 118 // WirelessNetwork overrides. |
| 119 virtual void Clear(); |
| 120 virtual void ConfigureFromService(const ServiceInfo& service); |
| 121 |
| 122 private: |
| 123 ConnectionSecurity encryption_; |
| 124 std::string passphrase_; |
| 103 }; | 125 }; |
| 126 |
| 127 typedef std::vector<WifiNetwork> WifiNetworkVector; |
| 104 typedef std::vector<CellularNetwork> CellularNetworkVector; | 128 typedef std::vector<CellularNetwork> CellularNetworkVector; |
| 105 | 129 |
| 106 struct NetworkIPConfig { | 130 struct NetworkIPConfig { |
| 107 NetworkIPConfig(const std::string& device_path, IPConfigType type, | 131 NetworkIPConfig(const std::string& device_path, IPConfigType type, |
| 108 const std::string& address, const std::string& netmask, | 132 const std::string& address, const std::string& netmask, |
| 109 const std::string& gateway, const std::string& name_servers) | 133 const std::string& gateway, const std::string& name_servers) |
| 110 : device_path(device_path), | 134 : device_path(device_path), |
| 111 type(type), | 135 type(type), |
| 112 address(address), | 136 address(address), |
| 113 netmask(netmask), | 137 netmask(netmask), |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 }; | 171 }; |
| 148 | 172 |
| 149 virtual ~NetworkLibrary() {} | 173 virtual ~NetworkLibrary() {} |
| 150 virtual void AddObserver(Observer* observer) = 0; | 174 virtual void AddObserver(Observer* observer) = 0; |
| 151 virtual void RemoveObserver(Observer* observer) = 0; | 175 virtual void RemoveObserver(Observer* observer) = 0; |
| 152 | 176 |
| 153 virtual const EthernetNetwork& ethernet_network() const = 0; | 177 virtual const EthernetNetwork& ethernet_network() const = 0; |
| 154 virtual bool ethernet_connecting() const = 0; | 178 virtual bool ethernet_connecting() const = 0; |
| 155 virtual bool ethernet_connected() const = 0; | 179 virtual bool ethernet_connected() const = 0; |
| 156 | 180 |
| 157 virtual const std::string& wifi_ssid() const = 0; | 181 virtual const std::string& wifi_name() const = 0; |
| 158 virtual bool wifi_connecting() const = 0; | 182 virtual bool wifi_connecting() const = 0; |
| 159 virtual bool wifi_connected() const = 0; | 183 virtual bool wifi_connected() const = 0; |
| 160 virtual int wifi_strength() const = 0; | 184 virtual int wifi_strength() const = 0; |
| 161 | 185 |
| 162 virtual const std::string& cellular_name() const = 0; | 186 virtual const std::string& cellular_name() const = 0; |
| 163 virtual bool cellular_connecting() const = 0; | 187 virtual bool cellular_connecting() const = 0; |
| 164 virtual bool cellular_connected() const = 0; | 188 virtual bool cellular_connected() const = 0; |
| 165 virtual int cellular_strength() const = 0; | 189 virtual int cellular_strength() const = 0; |
| 166 | 190 |
| 167 // Return true if any network is currently connected. | 191 // Return true if any network is currently connected. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 197 // Connect to the specified wifi ssid with password. | 221 // Connect to the specified wifi ssid with password. |
| 198 virtual void ConnectToWifiNetwork(const string16& ssid, | 222 virtual void ConnectToWifiNetwork(const string16& ssid, |
| 199 const string16& password, | 223 const string16& password, |
| 200 const string16& identity, | 224 const string16& identity, |
| 201 const string16& certpath, | 225 const string16& certpath, |
| 202 bool auto_connect) = 0; | 226 bool auto_connect) = 0; |
| 203 | 227 |
| 204 // Connect to the specified cellular network. | 228 // Connect to the specified cellular network. |
| 205 virtual void ConnectToCellularNetwork(CellularNetwork network) = 0; | 229 virtual void ConnectToCellularNetwork(CellularNetwork network) = 0; |
| 206 | 230 |
| 207 // Disconnect from the specified wifi network. | 231 // Disconnect from the specified wireless (either cellular or wifi) network. |
| 208 virtual void DisconnectFromWifiNetwork(const WifiNetwork& network) = 0; | 232 virtual void DisconnectFromWirelessNetwork( |
| 209 | 233 const WirelessNetwork& network) = 0; |
| 210 // Disconnect from the specified cellular network. | |
| 211 virtual void DisconnectFromCellularNetwork( | |
| 212 const CellularNetwork& network) = 0; | |
| 213 | 234 |
| 214 // Set whether or not to auto-connect to this network. | 235 // Set whether or not to auto-connect to this network. |
| 215 virtual void SaveWifiNetwork(const WifiNetwork& network) = 0; | 236 virtual void SaveWifiNetwork(const WifiNetwork& network) = 0; |
| 216 | 237 |
| 217 // Forget the passed in wifi network. | 238 // Forget the passed in wireless (either cellular or wifi) network. |
| 218 virtual void ForgetWifiNetwork(const WifiNetwork& network) = 0; | 239 virtual void ForgetWirelessNetwork(const WirelessNetwork& network) = 0; |
| 219 | |
| 220 // Forget the passed in cellular network. | |
| 221 virtual void ForgetCellularNetwork(const CellularNetwork& network) = 0; | |
| 222 | 240 |
| 223 virtual bool ethernet_available() const = 0; | 241 virtual bool ethernet_available() const = 0; |
| 224 virtual bool wifi_available() const = 0; | 242 virtual bool wifi_available() const = 0; |
| 225 virtual bool cellular_available() const = 0; | 243 virtual bool cellular_available() const = 0; |
| 226 | 244 |
| 227 virtual bool ethernet_enabled() const = 0; | 245 virtual bool ethernet_enabled() const = 0; |
| 228 virtual bool wifi_enabled() const = 0; | 246 virtual bool wifi_enabled() const = 0; |
| 229 virtual bool cellular_enabled() const = 0; | 247 virtual bool cellular_enabled() const = 0; |
| 230 | 248 |
| 231 virtual bool offline_mode() const = 0; | 249 virtual bool offline_mode() const = 0; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 262 virtual void OnJobDone(URLRequestJob* job, const URLRequestStatus& status); | 280 virtual void OnJobDone(URLRequestJob* job, const URLRequestStatus& status); |
| 263 virtual void OnJobRedirect(URLRequestJob* job, const GURL& location, | 281 virtual void OnJobRedirect(URLRequestJob* job, const GURL& location, |
| 264 int status_code); | 282 int status_code); |
| 265 virtual void OnBytesRead(URLRequestJob* job, int byte_count); | 283 virtual void OnBytesRead(URLRequestJob* job, int byte_count); |
| 266 | 284 |
| 267 // NetworkLibrary overrides. | 285 // NetworkLibrary overrides. |
| 268 virtual void AddObserver(Observer* observer); | 286 virtual void AddObserver(Observer* observer); |
| 269 virtual void RemoveObserver(Observer* observer); | 287 virtual void RemoveObserver(Observer* observer); |
| 270 | 288 |
| 271 virtual const EthernetNetwork& ethernet_network() const { return ethernet_; } | 289 virtual const EthernetNetwork& ethernet_network() const { return ethernet_; } |
| 272 virtual bool ethernet_connecting() const { return ethernet_.connecting; } | 290 virtual bool ethernet_connecting() const { return ethernet_.connecting(); } |
| 273 virtual bool ethernet_connected() const { return ethernet_.connected; } | 291 virtual bool ethernet_connected() const { return ethernet_.connected(); } |
| 274 | 292 |
| 275 virtual const std::string& wifi_ssid() const { return wifi_.ssid; } | 293 virtual const std::string& wifi_name() const { return wifi_.name(); } |
| 276 virtual bool wifi_connecting() const { return wifi_.connecting; } | 294 virtual bool wifi_connecting() const { return wifi_.connecting(); } |
| 277 virtual bool wifi_connected() const { return wifi_.connected; } | 295 virtual bool wifi_connected() const { return wifi_.connected(); } |
| 278 virtual int wifi_strength() const { return wifi_.strength; } | 296 virtual int wifi_strength() const { return wifi_.strength(); } |
| 279 | 297 |
| 280 virtual const std::string& cellular_name() const { return cellular_.name; } | 298 virtual const std::string& cellular_name() const { return cellular_.name(); } |
| 281 virtual bool cellular_connecting() const { return cellular_.connecting; } | 299 virtual bool cellular_connecting() const { return cellular_.connecting(); } |
| 282 virtual bool cellular_connected() const { return cellular_.connected; } | 300 virtual bool cellular_connected() const { return cellular_.connected(); } |
| 283 virtual int cellular_strength() const { return cellular_.strength; } | 301 virtual int cellular_strength() const { return cellular_.strength(); } |
| 284 | 302 |
| 285 // Return true if any network is currently connected. | 303 // Return true if any network is currently connected. |
| 286 virtual bool Connected() const; | 304 virtual bool Connected() const; |
| 287 | 305 |
| 288 // Return true if any network is currently connecting. | 306 // Return true if any network is currently connecting. |
| 289 virtual bool Connecting() const; | 307 virtual bool Connecting() const; |
| 290 | 308 |
| 291 // Returns the current IP address if connected. If not, returns empty string. | 309 // Returns the current IP address if connected. If not, returns empty string. |
| 292 virtual const std::string& IPAddress() const; | 310 virtual const std::string& IPAddress() const; |
| 293 | 311 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 323 // Connect to the specified wifi ssid with password. | 341 // Connect to the specified wifi ssid with password. |
| 324 virtual void ConnectToWifiNetwork(const string16& ssid, | 342 virtual void ConnectToWifiNetwork(const string16& ssid, |
| 325 const string16& password, | 343 const string16& password, |
| 326 const string16& identity, | 344 const string16& identity, |
| 327 const string16& certpath, | 345 const string16& certpath, |
| 328 bool auto_connect); | 346 bool auto_connect); |
| 329 | 347 |
| 330 // Connect to the specified cellular network. | 348 // Connect to the specified cellular network. |
| 331 virtual void ConnectToCellularNetwork(CellularNetwork network); | 349 virtual void ConnectToCellularNetwork(CellularNetwork network); |
| 332 | 350 |
| 333 // Disconnect from the specified wifi network. | 351 // Disconnect from the specified wireless (either cellular or wifi) network. |
| 334 virtual void DisconnectFromWifiNetwork(const WifiNetwork& network); | 352 virtual void DisconnectFromWirelessNetwork(const WirelessNetwork& network); |
| 335 | |
| 336 // Disconnect from the specified cellular network. | |
| 337 virtual void DisconnectFromCellularNetwork(const CellularNetwork& network); | |
| 338 | 353 |
| 339 // Set whether or not to auto-connect to this network. | 354 // Set whether or not to auto-connect to this network. |
| 340 virtual void SaveWifiNetwork(const WifiNetwork& network); | 355 virtual void SaveWifiNetwork(const WifiNetwork& network); |
| 341 | 356 |
| 342 // Forget the passed in wifi network. | 357 // Forget the passed in wireless (either cellular or wifi) network. |
| 343 virtual void ForgetWifiNetwork(const WifiNetwork& network); | 358 virtual void ForgetWirelessNetwork(const WirelessNetwork& network); |
| 344 | |
| 345 // Forget the passed in cellular network. | |
| 346 virtual void ForgetCellularNetwork(const CellularNetwork& network); | |
| 347 | 359 |
| 348 virtual bool ethernet_available() const { | 360 virtual bool ethernet_available() const { |
| 349 return available_devices_ & (1 << TYPE_ETHERNET); } | 361 return available_devices_ & (1 << TYPE_ETHERNET); |
| 362 } |
| 350 virtual bool wifi_available() const { | 363 virtual bool wifi_available() const { |
| 351 return available_devices_ & (1 << TYPE_WIFI); } | 364 return available_devices_ & (1 << TYPE_WIFI); |
| 365 } |
| 352 virtual bool cellular_available() const { | 366 virtual bool cellular_available() const { |
| 353 return available_devices_ & (1 << TYPE_CELLULAR); } | 367 return available_devices_ & (1 << TYPE_CELLULAR); |
| 368 } |
| 354 | 369 |
| 355 virtual bool ethernet_enabled() const { | 370 virtual bool ethernet_enabled() const { |
| 356 return enabled_devices_ & (1 << TYPE_ETHERNET); } | 371 return enabled_devices_ & (1 << TYPE_ETHERNET); |
| 372 } |
| 357 virtual bool wifi_enabled() const { | 373 virtual bool wifi_enabled() const { |
| 358 return enabled_devices_ & (1 << TYPE_WIFI); } | 374 return enabled_devices_ & (1 << TYPE_WIFI); |
| 375 } |
| 359 virtual bool cellular_enabled() const { | 376 virtual bool cellular_enabled() const { |
| 360 return enabled_devices_ & (1 << TYPE_CELLULAR); } | 377 return enabled_devices_ & (1 << TYPE_CELLULAR); |
| 378 } |
| 361 | 379 |
| 362 virtual bool offline_mode() const { return offline_mode_; } | 380 virtual bool offline_mode() const { return offline_mode_; } |
| 363 | 381 |
| 364 // Enables/disables the ethernet network device. | 382 // Enables/disables the ethernet network device. |
| 365 virtual void EnableEthernetNetworkDevice(bool enable); | 383 virtual void EnableEthernetNetworkDevice(bool enable); |
| 366 | 384 |
| 367 // Enables/disables the wifi network device. | 385 // Enables/disables the wifi network device. |
| 368 virtual void EnableWifiNetworkDevice(bool enable); | 386 virtual void EnableWifiNetworkDevice(bool enable); |
| 369 | 387 |
| 370 // Enables/disables the cellular network device. | 388 // Enables/disables the cellular network device. |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 int connected_devices_; | 487 int connected_devices_; |
| 470 | 488 |
| 471 bool offline_mode_; | 489 bool offline_mode_; |
| 472 | 490 |
| 473 DISALLOW_COPY_AND_ASSIGN(NetworkLibraryImpl); | 491 DISALLOW_COPY_AND_ASSIGN(NetworkLibraryImpl); |
| 474 }; | 492 }; |
| 475 | 493 |
| 476 } // namespace chromeos | 494 } // namespace chromeos |
| 477 | 495 |
| 478 #endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 496 #endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
| OLD | NEW |