| Index: components/wifi/wifi_service_win.cc
|
| diff --git a/components/wifi/wifi_service_win.cc b/components/wifi/wifi_service_win.cc
|
| index 05371cffc74aaa75cd8a500a4e3e68c583fe4094..130c1422fc7ac544d481c8968e1f4a18ffb40e84 100644
|
| --- a/components/wifi/wifi_service_win.cc
|
| +++ b/components/wifi/wifi_service_win.cc
|
| @@ -355,9 +355,9 @@ class WiFiServiceImpl : public WiFiService {
|
| // Get the list of visible wireless networks.
|
| DWORD GetVisibleNetworkList(NetworkList* network_list);
|
|
|
| - // Find currently connected network if any. Populate |connected_properties|
|
| - // on success.
|
| - DWORD GetConnectedProperties(NetworkProperties* connected_properties);
|
| + // Get properties of the network currently used (connected or in transition)
|
| + // by interface. Populate |current_properties| on success.
|
| + DWORD GetCurrentProperties(NetworkProperties* current_properties);
|
|
|
| // Connect to network |network_guid| using previosly stored profile if exists,
|
| // or just network sid. If |frequency| is not |kFrequencyUnknown| then
|
| @@ -515,7 +515,7 @@ void WiFiServiceImpl::GetProperties(const std::string& network_guid,
|
| return;
|
|
|
| NetworkProperties connected_properties;
|
| - error_code = GetConnectedProperties(&connected_properties);
|
| + error_code = GetCurrentProperties(&connected_properties);
|
| if (error_code == ERROR_SUCCESS &&
|
| connected_properties.guid == network_guid) {
|
| properties->Swap(connected_properties.ToValue(false).get());
|
| @@ -669,10 +669,12 @@ void WiFiServiceImpl::StartConnect(const std::string& network_guid,
|
| bool already_connected = (network_guid == connected_network_guid);
|
| Frequency frequency = GetFrequencyToConnect(network_guid);
|
| if (already_connected && frequency != kFrequencyAny) {
|
| - NetworkProperties connected_properties;
|
| - if (GetConnectedProperties(&connected_properties) == ERROR_SUCCESS) {
|
| - already_connected = frequency == connected_properties.frequency &&
|
| - network_guid == connected_properties.guid;
|
| + NetworkProperties current_properties;
|
| + if (GetCurrentProperties(¤t_properties) == ERROR_SUCCESS) {
|
| + already_connected = current_properties.connection_state ==
|
| + onc::connection_state::kConnected &&
|
| + frequency == current_properties.frequency &&
|
| + network_guid == current_properties.guid;
|
| }
|
| }
|
| // Connect only if network |network_guid| is not connected already.
|
| @@ -894,11 +896,11 @@ void WiFiServiceImpl::WaitForNetworkConnect(const std::string& network_guid,
|
| RestoreNwCategoryWizard();
|
| return;
|
| }
|
| - NetworkProperties connected_network_properties;
|
| - DWORD error = GetConnectedProperties(&connected_network_properties);
|
| - if (network_guid == connected_network_properties.guid &&
|
| - connected_network_properties.connection_state ==
|
| - onc::connection_state::kConnected) {
|
| + NetworkProperties current_properties;
|
| + DWORD error = GetCurrentProperties(¤t_properties);
|
| + if (network_guid == current_properties.guid &&
|
| + current_properties.connection_state ==
|
| + onc::connection_state::kConnected) {
|
| DVLOG(1) << "WiFi Connected, Reset DHCP: " << network_guid;
|
| // Even though wireless network is now connected, it may still be unusable,
|
| // e.g. after Chromecast device reset. Reset DHCP on wireless network to
|
| @@ -947,10 +949,12 @@ WiFiService::NetworkList::iterator WiFiServiceImpl::FindNetwork(
|
| DWORD WiFiServiceImpl::SaveCurrentConnectedNetwork(
|
| std::string* connected_network_guid) {
|
| // Find currently connected network.
|
| - NetworkProperties connected_network_properties;
|
| - DWORD error = GetConnectedProperties(&connected_network_properties);
|
| - if (error == ERROR_SUCCESS && !connected_network_properties.guid.empty()) {
|
| - *connected_network_guid = connected_network_properties.guid;
|
| + NetworkProperties current_properties;
|
| + DWORD error = GetCurrentProperties(¤t_properties);
|
| + if (error == ERROR_SUCCESS && !current_properties.guid.empty() &&
|
| + current_properties.connection_state ==
|
| + onc::connection_state::kConnected) {
|
| + *connected_network_guid = current_properties.guid;
|
| SaveTempProfile(*connected_network_guid);
|
| std::string profile_xml;
|
| error = GetProfile(*connected_network_guid, false, &profile_xml);
|
| @@ -1385,7 +1389,7 @@ DWORD WiFiServiceImpl::GetVisibleNetworkList(NetworkList* network_list) {
|
| return error;
|
| }
|
|
|
| -DWORD WiFiServiceImpl::GetConnectedProperties(NetworkProperties* properties) {
|
| +DWORD WiFiServiceImpl::GetCurrentProperties(NetworkProperties* properties) {
|
| if (client_ == NULL) {
|
| NOTREACHED();
|
| return ERROR_NOINTERFACE;
|
| @@ -1397,7 +1401,6 @@ DWORD WiFiServiceImpl::GetConnectedProperties(NetworkProperties* properties) {
|
| if (WlanGetNetworkBssList_function_ == NULL)
|
| return ERROR_NOINTERFACE;
|
|
|
| - Frequency frequency = kFrequencyUnknown;
|
| DWORD error = ERROR_SUCCESS;
|
| DWORD data_size = 0;
|
| PWLAN_CONNECTION_ATTRIBUTES wlan_connection_attributes = NULL;
|
| @@ -1427,9 +1430,6 @@ DWORD WiFiServiceImpl::GetConnectedProperties(NetworkProperties* properties) {
|
| wlan_connection_attributes->wlanSecurityAttributes.dot11AuthAlgorithm);
|
| properties->signal_strength = connected_wlan.wlanSignalQuality;
|
|
|
| - // TODO(mef): WlanGetNetworkBssList is not available on XP. If XP support is
|
| - // needed, then different method of getting BSS (e.g. OID query) will have
|
| - // to be used.
|
| error = WlanGetNetworkBssList_function_(client_,
|
| &interface_guid_,
|
| &connected_wlan.dot11Ssid,
|
| @@ -1451,7 +1451,7 @@ DWORD WiFiServiceImpl::GetConnectedProperties(NetworkProperties* properties) {
|
| if (bss_list != NULL)
|
| WlanFreeMemory_function_(bss_list);
|
|
|
| - return frequency;
|
| + return error;
|
| }
|
|
|
| WiFiService::Frequency WiFiServiceImpl::GetFrequencyToConnect(
|
|
|