diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-25 22:02:43 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-25 22:02:43 +0000 |
commit | d5a28f73d52aabddd5842f226f5bb5b15072cf4a (patch) | |
tree | 51060c663150072ff6d4bb3a7b6b4b597d88ffe4 /chromeos/network | |
parent | 729ce2168a4614964398b564f323b127271c50b6 (diff) | |
download | chromium_src-d5a28f73d52aabddd5842f226f5bb5b15072cf4a.zip chromium_src-d5a28f73d52aabddd5842f226f5bb5b15072cf4a.tar.gz chromium_src-d5a28f73d52aabddd5842f226f5bb5b15072cf4a.tar.bz2 |
Correctly check for unset Shill errors in error notification code
Shill uses "Unknown" for unset errors instead of empty values; we need to correctly check that in the notification UI.
BUG=355811
Review URL: https://codereview.chromium.org/206873009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259352 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/network')
-rw-r--r-- | chromeos/network/network_state.cc | 13 | ||||
-rw-r--r-- | chromeos/network/network_state.h | 3 |
2 files changed, 11 insertions, 5 deletions
diff --git a/chromeos/network/network_state.cc b/chromeos/network/network_state.cc index eb598f0..5b2a85d 100644 --- a/chromeos/network/network_state.cc +++ b/chromeos/network/network_state.cc @@ -85,11 +85,10 @@ bool NetworkState::PropertyChanged(const std::string& key, } else if (key == shill::kErrorProperty) { if (!GetStringValue(key, value, &error_)) return false; - // Shill uses "Unknown" to indicate an unset error state. - if (error_ == kErrorUnknown) - error_.clear(); - if (!error_.empty()) + if (ErrorIsValid(error_)) last_error_ = error_; + else + error_.clear(); return true; } else if (key == IPConfigProperty(shill::kAddressProperty)) { return GetStringValue(key, value, &ip_address_); @@ -284,6 +283,12 @@ bool NetworkState::StateIsConnecting(const std::string& connection_state) { } // static +bool NetworkState::ErrorIsValid(const std::string& error) { + // Shill uses "Unknown" to indicate an unset or cleared error state. + return !error.empty() && error != kErrorUnknown; +} + +// static std::string NetworkState::IPConfigProperty(const char* key) { return base::StringPrintf("%s.%s", shill::kIPConfigProperty, key); } diff --git a/chromeos/network/network_state.h b/chromeos/network/network_state.h index c9b6dcb..8a74bcd 100644 --- a/chromeos/network/network_state.h +++ b/chromeos/network/network_state.h @@ -97,9 +97,10 @@ class CHROMEOS_EXPORT NetworkState : public ManagedState { // Converts the prefix length to a netmask string. std::string GetNetmask() const; - // Helpers (used e.g. when a state is cached) + // Helpers (used e.g. when a state or error is cached) static bool StateIsConnected(const std::string& connection_state); static bool StateIsConnecting(const std::string& connection_state); + static bool ErrorIsValid(const std::string& error); // Helper to return a full prefixed version of an IPConfig property key. static std::string IPConfigProperty(const char* key); |