| Index: chrome/browser/chromeos/cros_network_library.h
|
| ===================================================================
|
| --- chrome/browser/chromeos/cros_network_library.h (revision 30284)
|
| +++ chrome/browser/chromeos/cros_network_library.h (working copy)
|
| @@ -12,6 +12,8 @@
|
| #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 {
|
| @@ -51,11 +53,22 @@
|
| // 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 {
|
| +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
|
| @@ -64,6 +77,14 @@
|
| // 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);
|
|
|
| @@ -104,8 +125,35 @@
|
| 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_;
|
|
|
|
|