| Index: chromeos/network/network_state_handler.cc
|
| diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
|
| index cdcec428d0d8df39dce532ca40b80089f66b2a94..be8696eac730971d435cdc96334803779303b075 100644
|
| --- a/chromeos/network/network_state_handler.cc
|
| +++ b/chromeos/network/network_state_handler.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "chromeos/network/network_state_handler.h"
|
|
|
| +#include "base/bind.h"
|
| #include "base/format_macros.h"
|
| #include "base/stl_util.h"
|
| #include "base/string_util.h"
|
| @@ -297,9 +298,24 @@ void NetworkStateHandler::GetNetworkList(NetworkStateList* list) const {
|
| }
|
|
|
| void NetworkStateHandler::RequestScan() const {
|
| + network_event_log::AddEntry(kLogModule, "RequestScan", "");
|
| shill_property_handler_->RequestScan();
|
| }
|
|
|
| +void NetworkStateHandler::WaitForScan(const std::string& type,
|
| + const base::Closure& callback) {
|
| + scan_complete_callbacks_[type].push_back(callback);
|
| + if (!GetScanningByType(type))
|
| + RequestScan();
|
| +}
|
| +
|
| +void NetworkStateHandler::ConnectToBestWifiNetwork() {
|
| + network_event_log::AddEntry(kLogModule, "ConnectToBestWifiNetwork", "");
|
| + WaitForScan(flimflam::kTypeWifi,
|
| + base::Bind(&internal::ShillPropertyHandler::ConnectToBestServices,
|
| + shill_property_handler_->AsWeakPtr()));
|
| +}
|
| +
|
| void NetworkStateHandler::SetConnectingNetwork(
|
| const std::string& service_path) {
|
| connecting_network_ = service_path;
|
| @@ -386,6 +402,9 @@ void NetworkStateHandler::UpdateManagedStateProperties(
|
| managed->PropertyChanged(iter.key(), iter.value());
|
| }
|
| }
|
| + network_event_log::AddEntry(
|
| + kLogModule, "PropertiesReceived",
|
| + base::StringPrintf("%s (%s)", path.c_str(), managed->name().c_str()));
|
| // Notify observers.
|
| if (network_property_updated) {
|
| NetworkState* network = managed->AsNetworkState();
|
| @@ -395,9 +414,6 @@ void NetworkStateHandler::UpdateManagedStateProperties(
|
| OnNetworkConnectionStateChanged(network);
|
| NetworkPropertiesUpdated(network);
|
| }
|
| - network_event_log::AddEntry(
|
| - kLogModule, "PropertiesReceived",
|
| - base::StringPrintf("%s (%s)", path.c_str(), managed->name().c_str()));
|
| }
|
|
|
| void NetworkStateHandler::UpdateNetworkServiceProperty(
|
| @@ -410,16 +426,16 @@ void NetworkStateHandler::UpdateNetworkServiceProperty(
|
| std::string prev_connection_state = network->connection_state();
|
| if (!network->PropertyChanged(key, value))
|
| return;
|
| - if (network->connection_state() != prev_connection_state)
|
| - OnNetworkConnectionStateChanged(network);
|
| -
|
| - NetworkPropertiesUpdated(network);
|
|
|
| std::string detail = network->name() + "." + key;
|
| std::string vstr = ValueAsString(value);
|
| if (!vstr.empty())
|
| detail += " = " + vstr;
|
| network_event_log::AddEntry(kLogModule, "NetworkPropertyUpdated", detail);
|
| +
|
| + if (network->connection_state() != prev_connection_state)
|
| + OnNetworkConnectionStateChanged(network);
|
| + NetworkPropertiesUpdated(network);
|
| }
|
|
|
| void NetworkStateHandler::UpdateNetworkServiceIPAddress(
|
| @@ -443,14 +459,17 @@ void NetworkStateHandler::UpdateDeviceProperty(const std::string& device_path,
|
| if (!device->PropertyChanged(key, value))
|
| return;
|
|
|
| - FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
|
| - DeviceListChanged());
|
| -
|
| std::string detail = device->name() + "." + key;
|
| std::string vstr = ValueAsString(value);
|
| if (!vstr.empty())
|
| detail += " = " + vstr;
|
| network_event_log::AddEntry(kLogModule, "DevicePropertyUpdated", detail);
|
| +
|
| + FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
|
| + DeviceListChanged());
|
| +
|
| + if (key == flimflam::kScanningProperty && device->scanning() == false)
|
| + ScanCompleted(device->type());
|
| }
|
|
|
| void NetworkStateHandler::ManagerPropertyChanged() {
|
| @@ -575,4 +594,19 @@ void NetworkStateHandler::NetworkPropertiesUpdated(
|
| }
|
| }
|
|
|
| +void NetworkStateHandler::ScanCompleted(const std::string& type) {
|
| + size_t num_callbacks = scan_complete_callbacks_.count(type);
|
| + network_event_log::AddEntry(
|
| + kLogModule, "ScanCompleted",
|
| + base::StringPrintf("%s: %"PRIuS, type.c_str(), num_callbacks));
|
| + if (num_callbacks == 0)
|
| + return;
|
| + ScanCallbackList& callback_list = scan_complete_callbacks_[type];
|
| + for (ScanCallbackList::iterator iter = callback_list.begin();
|
| + iter != callback_list.end(); ++iter) {
|
| + (*iter).Run();
|
| + }
|
| + scan_complete_callbacks_.erase(type);
|
| +}
|
| +
|
| } // namespace chromeos
|
|
|