Index: chromeos/network/network_state_handler.cc |
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc |
index a1909a4f485fa7273aa77bafae0e973ea2af98d8..8a984b98b4a3951a8507cbe790231658f18ee7e5 100644 |
--- a/chromeos/network/network_state_handler.cc |
+++ b/chromeos/network/network_state_handler.cc |
@@ -310,6 +310,29 @@ void NetworkStateHandler::ConnectToBestWifiNetwork() { |
shill_property_handler_->AsWeakPtr())); |
} |
+bool NetworkStateHandler::RequestUpdateForNetwork( |
+ const std::string& service_path) { |
+ NetworkState* network = GetModifiableNetworkState(service_path); |
+ if (!network) |
+ return false; // Only request an update for known networks. |
+ network->set_update_requested(true); |
+ network_event_log::AddEntry(kLogModule, "RequestUpdate", service_path); |
+ shill_property_handler_->RequestProperties( |
+ ManagedState::MANAGED_TYPE_NETWORK, service_path); |
+ return true; |
+} |
+ |
+void NetworkStateHandler::RequestUpdateForAllNetworks() { |
+ network_event_log::AddEntry(kLogModule, "RequestUpdateForAllNetworks", ""); |
+ for (ManagedStateList::iterator iter = network_list_.begin(); |
+ iter != network_list_.end(); ++iter) { |
+ ManagedState* network = *iter; |
+ network->set_update_requested(true); |
+ shill_property_handler_->RequestProperties( |
+ ManagedState::MANAGED_TYPE_NETWORK, network->path()); |
+ } |
+} |
+ |
void NetworkStateHandler::SetConnectingNetwork( |
const std::string& service_path) { |
connecting_network_ = service_path; |
@@ -411,7 +434,7 @@ void NetworkStateHandler::UpdateManagedStateProperties( |
kLogModule, "PropertiesReceived", |
base::StringPrintf("%s (%s)", path.c_str(), managed->name().c_str())); |
// Notify observers. |
- if (network_property_updated) { |
+ if (network_property_updated || managed->update_requested()) { |
pneubeck (no reviews)
2013/05/22 08:42:40
a comment about your intent (guaranteed notificati
stevenjb
2013/05/22 16:08:23
Good thought, comment added.
|
NetworkState* network = managed->AsNetworkState(); |
DCHECK(network); |
// Signal connection state changed after all properties have been updated. |
@@ -419,6 +442,7 @@ void NetworkStateHandler::UpdateManagedStateProperties( |
OnNetworkConnectionStateChanged(network); |
NetworkPropertiesUpdated(network); |
} |
+ managed->set_update_requested(false); |
} |
void NetworkStateHandler::UpdateNetworkServiceProperty( |