summaryrefslogtreecommitdiffstats
path: root/chromeos/network
diff options
context:
space:
mode:
authorstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 22:02:43 +0000
committerstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 22:02:43 +0000
commitd5a28f73d52aabddd5842f226f5bb5b15072cf4a (patch)
tree51060c663150072ff6d4bb3a7b6b4b597d88ffe4 /chromeos/network
parent729ce2168a4614964398b564f323b127271c50b6 (diff)
downloadchromium_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.cc13
-rw-r--r--chromeos/network/network_state.h3
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);