diff options
Diffstat (limited to 'ash/system/chromeos/network/tray_network_state_observer.h')
-rw-r--r-- | ash/system/chromeos/network/tray_network_state_observer.h | 40 |
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); }; |