diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-01 20:17:54 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-01 20:17:54 +0000 |
commit | 6ba8fcd3ec74b24afb75821236de78677081ad29 (patch) | |
tree | 3bde17f3eb2c26578ad37b4ca21ba57400c13807 /chromeos/network | |
parent | 6ab1d3a16a9949ee4ff28b72d3f4736f1b5e1de9 (diff) | |
download | chromium_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.cc | 20 | ||||
-rw-r--r-- | chromeos/network/network_state_handler.h | 10 |
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(); |