summaryrefslogtreecommitdiffstats
path: root/ash/system/chromeos/network/tray_network_state_observer.h
diff options
context:
space:
mode:
Diffstat (limited to 'ash/system/chromeos/network/tray_network_state_observer.h')
-rw-r--r--ash/system/chromeos/network/tray_network_state_observer.h40
1 files changed, 25 insertions, 15 deletions
diff --git a/ash/system/chromeos/network/tray_network_state_observer.h b/ash/system/chromeos/network/tray_network_state_observer.h
index f062a6b..af9bed6 100644
--- a/ash/system/chromeos/network/tray_network_state_observer.h
+++ b/ash/system/chromeos/network/tray_network_state_observer.h
@@ -8,6 +8,7 @@
#include <string>
#include "base/compiler_specific.h"
+#include "base/timer/timer.h"
#include "chromeos/network/network_state_handler_observer.h"
namespace ash {
@@ -16,13 +17,9 @@ class TrayNetworkStateObserver : public chromeos::NetworkStateHandlerObserver {
public:
class Delegate {
public:
- // Called when the network state may have changed. If |list_changed| is
- // true then the list of networks may have changed.
- virtual void NetworkStateChanged(bool list_changed) = 0;
-
- // Called when the properties for |network| may have been updated.
- virtual void NetworkServiceChanged(
- const chromeos::NetworkState* network) = 0;
+ // Called when any interesting network changes occur. The frequency of this
+ // event is limited to kUpdateFrequencyMs.
+ virtual void NetworkStateChanged() = 0;
protected:
virtual ~Delegate() {}
@@ -30,21 +27,34 @@ class TrayNetworkStateObserver : public chromeos::NetworkStateHandlerObserver {
explicit TrayNetworkStateObserver(Delegate* delegate);
- virtual ~TrayNetworkStateObserver();
+ ~TrayNetworkStateObserver() override;
// NetworkStateHandlerObserver overrides.
- virtual void NetworkListChanged() override;
- virtual void DeviceListChanged() override;
- virtual void DefaultNetworkChanged(
- const chromeos::NetworkState* network) override;
- virtual void NetworkConnectionStateChanged(
- const chromeos::NetworkState* network) override;
- virtual void NetworkPropertiesUpdated(
+ void NetworkListChanged() override;
+ void DeviceListChanged() override;
+ void DefaultNetworkChanged(const chromeos::NetworkState* network) override;
+ void NetworkConnectionStateChanged(
const chromeos::NetworkState* network) override;
+ void NetworkPropertiesUpdated(const chromeos::NetworkState* network) override;
private:
+ void SignalUpdate();
+ void SendNetworkStateChanged();
+
+ // Unowned Delegate pointer (must outlive this instance).
Delegate* delegate_;
+ // Set to true when we should purge stale icons in the cache.
+ bool purge_icons_;
+
+ // Frequency at which to push NetworkStateChanged updates. This avoids
+ // unnecessarily frequent UI updates (which can be expensive). We set this
+ // to 0 for tests to eliminate timing variance.
+ int update_frequency_;
+
+ // Timer used to limit the frequency of NetworkStateChanged updates.
+ base::OneShotTimer<TrayNetworkStateObserver> timer_;
+
DISALLOW_COPY_AND_ASSIGN(TrayNetworkStateObserver);
};