Index: chromeos/network/network_state.cc |
diff --git a/chromeos/network/network_state.cc b/chromeos/network/network_state.cc |
index 6c022bff17820ad8e68c3eca75d949aa4211e7d0..df5f8255289ee11f48187d12f987d3ef728cbd7c 100644 |
--- a/chromeos/network/network_state.cc |
+++ b/chromeos/network/network_state.cc |
@@ -90,7 +90,14 @@ bool NetworkState::PropertyChanged(const std::string& key, |
if (key == shill::kSignalStrengthProperty) { |
return GetIntegerValue(key, value, &signal_strength_); |
} else if (key == shill::kStateProperty) { |
- return GetStringValue(key, value, &connection_state_); |
+ std::string saved_state = connection_state_; |
+ if (GetStringValue(key, value, &connection_state_)) { |
+ if (connection_state_ != saved_state) |
+ last_connection_state_ = saved_state; |
+ return true; |
+ } else { |
+ return false; |
+ } |
} else if (key == shill::kVisibleProperty) { |
return GetBooleanValue(key, value, &visible_); |
} else if (key == shill::kConnectableProperty) { |
@@ -350,6 +357,11 @@ bool NetworkState::IsConnectingState() const { |
return visible() && StateIsConnecting(connection_state_); |
} |
+bool NetworkState::IsReconnecting() const { |
+ return visible() && StateIsConnecting(connection_state_) && |
+ StateIsConnected(last_connection_state_); |
+} |
+ |
bool NetworkState::IsInProfile() const { |
// kTypeEthernetEap is always saved. We need this check because it does |
// not show up in the visible list, but its properties may not be available |