Index: chrome/browser/chromeos/cros_network_library.h |
=================================================================== |
--- chrome/browser/chromeos/cros_network_library.h (revision 30488) |
+++ chrome/browser/chromeos/cros_network_library.h (working copy) |
@@ -1,172 +0,0 @@ |
-// Copyright (c) 2009 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 CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
-#define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/observer_list.h" |
-#include "base/platform_thread.h" |
-#include "base/singleton.h" |
-#include "base/string16.h" |
-#include "base/timer.h" |
-#include "net/url_request/url_request_job_tracker.h" |
-#include "third_party/cros/chromeos_network.h" |
- |
-struct WifiNetwork { |
- WifiNetwork() |
- : encrypted(false), |
- encryption(chromeos::NONE), |
- strength(0), |
- connecting(false), |
- connected(false), |
- destroyed(false) {} |
- WifiNetwork(const std::string& ssid, bool encrypted, |
- chromeos::EncryptionType encryption, int strength, |
- bool connecting, bool connected) |
- : ssid(ssid), |
- encrypted(encrypted), |
- encryption(encryption), |
- strength(strength), |
- connecting(connecting), |
- connected(connected), |
- destroyed(false) {} |
- |
- // WifiNetworks are sorted by ssids. |
- bool operator< (const WifiNetwork& other) const { |
- return ssid < other.ssid; |
- } |
- |
- std::string ssid; |
- bool encrypted; |
- chromeos::EncryptionType encryption; |
- int strength; |
- bool connecting; |
- bool connected; |
- bool destroyed; |
-}; |
-typedef std::vector<WifiNetwork> WifiNetworkVector; |
- |
-// 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: CrosNetworkLibrary::Get() |
-class CrosNetworkLibrary : public URLRequestJobTracker::JobObserver { |
- public: |
- class Observer { |
- public: |
- // A bitfield mask for traffic types. |
- enum TrafficTypes { |
- TRAFFIC_DOWNLOAD = 0x1, |
- TRAFFIC_UPLOAD = 0x2, |
- } TrafficTypeMasks; |
- |
- // Called when the network has changed. (wifi networks, and ethernet) |
- virtual void NetworkChanged(CrosNetworkLibrary* obj) = 0; |
- |
- // Called when network traffic has been detected. |
- // Takes a bitfield of TrafficTypeMasks. |
- virtual void NetworkTraffic(CrosNetworkLibrary* obj, int traffic_type) = 0; |
- }; |
- |
- // This gets the singleton CrosNetworkLibrary |
- static CrosNetworkLibrary* Get(); |
- |
- // Returns true if the ChromeOS library was loaded. |
- static bool loaded(); |
- |
- // URLRequestJobTracker::JobObserver methods (called on the IO thread): |
- virtual void OnJobAdded(URLRequestJob* job); |
- virtual void OnJobRemoved(URLRequestJob* job); |
- virtual void OnJobDone(URLRequestJob* job, const URLRequestStatus& status); |
- virtual void OnJobRedirect(URLRequestJob* job, const GURL& location, |
- int status_code); |
- virtual void OnBytesRead(URLRequestJob* job, int byte_count); |
- |
- void AddObserver(Observer* observer); |
- void RemoveObserver(Observer* observer); |
- |
- bool ethernet_connected() const { return ethernet_connected_; } |
- const std::string& wifi_ssid() const { return wifi_.ssid; } |
- bool wifi_connecting() const { return wifi_.connecting; } |
- int wifi_strength() const { return wifi_.strength; } |
- |
- // Returns the current list of wifi networks. |
- const WifiNetworkVector& wifi_networks() const { return wifi_networks_; } |
- |
- // Connect to the specified wireless network with password. |
- void ConnectToWifiNetwork(WifiNetwork network, const string16& password); |
- |
- private: |
- friend struct DefaultSingletonTraits<CrosNetworkLibrary>; |
- |
- CrosNetworkLibrary(); |
- ~CrosNetworkLibrary(); |
- |
- // 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, |
- const chromeos::ServiceStatus& service_status); |
- |
- // This parses ServiceStatus and creates a WifiNetworkVector of wifi networks. |
- // It also sets ethernet_connected depending on if we have ethernet or not. |
- static void ParseNetworks(const chromeos::ServiceStatus& service_status, |
- WifiNetworkVector* networks, |
- bool* ethernet_connected); |
- |
- // This methods loads the initial list of networks on startup and starts the |
- // monitoring of network changes. |
- void Init(); |
- |
- // Update the network with the a list of wifi networks and ethernet status. |
- // This will notify all the Observers. |
- void UpdateNetworkStatus(const WifiNetworkVector& networks, |
- bool ethernet_connected); |
- |
- // Checks network traffic to see if there is any uploading. |
- // If there is download traffic, then true is passed in for download. |
- // If there is network traffic then start timer that invokes |
- // NetworkTrafficTimerFired. |
- void CheckNetworkTraffic(bool download); |
- |
- // Called when the timer fires and we need to send out NetworkTraffic |
- // notifications. |
- void NetworkTrafficTimerFired(); |
- |
- // This is a helper method to notify the observers on the UI thread. |
- void NotifyNetworkTraffic(int traffic_type); |
- |
- // This will notify all obeservers on the UI thread. |
- void NotifyObservers(); |
- |
- ObserverList<Observer> observers_; |
- |
- // The amount of time to wait between each NetworkTraffic notifications. |
- static const int kNetworkTrafficeTimerSecs; |
- |
- // Timer for sending NetworkTraffic notification every |
- // kNetworkTrafficeTimerSecs seconds. |
- base::OneShotTimer<CrosNetworkLibrary> timer_; |
- |
- // The current traffic type that will be sent out for the next NetworkTraffic |
- // notification. This is a bitfield of TrafficTypeMasks. |
- int traffic_type_; |
- |
- // The network status connection for monitoring network status changes. |
- chromeos::NetworkStatusConnection network_status_connection_; |
- |
- // Whether or not we are connected to the ethernet line. |
- bool ethernet_connected_; |
- |
- // The list of available wifi networks. |
- WifiNetworkVector wifi_networks_; |
- |
- // The current connected (or connecting) wifi network. |
- WifiNetwork wifi_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CrosNetworkLibrary); |
-}; |
- |
-#endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |