summaryrefslogtreecommitdiffstats
path: root/chromeos/network
diff options
context:
space:
mode:
authorstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-01 20:17:54 +0000
committerstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-01 20:17:54 +0000
commit6ba8fcd3ec74b24afb75821236de78677081ad29 (patch)
tree3bde17f3eb2c26578ad37b4ca21ba57400c13807 /chromeos/network
parent6ab1d3a16a9949ee4ff28b72d3f4736f1b5e1de9 (diff)
downloadchromium_src-6ba8fcd3ec74b24afb75821236de78677081ad29.zip
chromium_src-6ba8fcd3ec74b24afb75821236de78677081ad29.tar.gz
chromium_src-6ba8fcd3ec74b24afb75821236de78677081ad29.tar.bz2
Fixes for network connection error notifications
BUG=224676 Review URL: https://codereview.chromium.org/13248002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191648 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/network')
-rw-r--r--chromeos/network/network_state_handler.cc20
-rw-r--r--chromeos/network/network_state_handler.h10
2 files changed, 23 insertions, 7 deletions
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
index 17ca6cb..cdcec42 100644
--- a/chromeos/network/network_state_handler.cc
+++ b/chromeos/network/network_state_handler.cc
@@ -300,6 +300,13 @@ void NetworkStateHandler::RequestScan() const {
shill_property_handler_->RequestScan();
}
+void NetworkStateHandler::SetConnectingNetwork(
+ const std::string& service_path) {
+ connecting_network_ = service_path;
+ network_event_log::AddEntry(
+ kLogModule, "SetConnectingNetwork", service_path);
+}
+
void NetworkStateHandler::GetNetworkStatePropertiesForTest(
base::DictionaryValue* dictionary) const {
for (ManagedStateList::const_iterator iter = network_list_.begin();
@@ -553,10 +560,19 @@ void NetworkStateHandler::OnDefaultNetworkChanged() {
void NetworkStateHandler::NetworkPropertiesUpdated(
const NetworkState* network) {
- if (network->path() == connecting_network_ && !network->IsConnectingState())
- connecting_network_.clear();
FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
NetworkPropertiesUpdated(network));
+ // If |connecting_network_| transitions to a non-idle, non-connecting state,
+ // clear it *after* signalling observers.
+ if (network->path() == connecting_network_ &&
+ !network->IsConnectingState() &&
+ network->connection_state() != flimflam::kStateIdle) {
+ connecting_network_.clear();
+ network_event_log::AddEntry(
+ kLogModule, "ClearConnectingNetwork",
+ base::StringPrintf("%s: %s", network->path().c_str(),
+ network->connection_state().c_str()));
+ }
}
} // namespace chromeos
diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h
index 71d086d..31d1de6 100644
--- a/chromeos/network/network_state_handler.h
+++ b/chromeos/network/network_state_handler.h
@@ -139,6 +139,11 @@ class CHROMEOS_EXPORT NetworkStateHandler
// list, which will trigger the appropriate observer calls.
void RequestScan() const;
+ // Set the user initiated connecting network.
+ void SetConnectingNetwork(const std::string& service_path);
+
+ const std::string& connecting_network() const { return connecting_network_; }
+
// Generates a DictionaryValue of all NetworkState properties. Currently
// provided for debugging purposes only.
void GetNetworkStatePropertiesForTest(
@@ -149,11 +154,6 @@ class CHROMEOS_EXPORT NetworkStateHandler
static const char kMatchTypeMobile[];
static const char kMatchTypeNonVirtual[];
- const std::string& connecting_network() const { return connecting_network_; }
- void set_connecting_network(const std::string& service_path) {
- connecting_network_ = service_path;
- }
-
protected:
NetworkStateHandler();