Index: ash/system/chromeos/network/tray_network_state_observer.cc |
diff --git a/ash/system/chromeos/network/tray_network_state_observer.cc b/ash/system/chromeos/network/tray_network_state_observer.cc |
index 6de9bfedcbf95635e589e28d5586c91634d66dd8..b83edcbb693293378c43af715526683d68b4fa37 100644 |
--- a/ash/system/chromeos/network/tray_network_state_observer.cc |
+++ b/ash/system/chromeos/network/tray_network_state_observer.cc |
@@ -41,16 +41,32 @@ void TrayNetworkStateObserver::DeviceListChanged() { |
delegate_->NetworkStateChanged(false); |
} |
+// Any change to the Default (primary connected) network, including Strength |
+// changes, should trigger a NetworkStateChanged update. |
void TrayNetworkStateObserver::DefaultNetworkChanged( |
const chromeos::NetworkState* network) { |
delegate_->NetworkStateChanged(true); |
} |
+// Any change to the Connection State should trigger a NetworkStateChanged |
+// update. This is important when both a VPN and a physical network are |
+// connected. |
+void TrayNetworkStateObserver::NetworkConnectionStateChanged( |
+ const chromeos::NetworkState* network) { |
+ delegate_->NetworkStateChanged(true); |
+} |
+ |
+// This tracks Strength and other property changes for all networks. It will |
+// be called in addition to NetworkConnectionStateChanged for connection state |
+// changes. |
void TrayNetworkStateObserver::NetworkPropertiesUpdated( |
const chromeos::NetworkState* network) { |
if (network == |
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork()) |
+ NetworkHandler::Get()->network_state_handler()->DefaultNetwork()) { |
+ // Trigger NetworkStateChanged in case the Strength property of the |
+ // Default network changed. |
delegate_->NetworkStateChanged(true); |
+ } |
delegate_->NetworkServiceChanged(network); |
} |