Chromium Code Reviews| Index: components/wifi/wifi_service_win.cc |
| diff --git a/components/wifi/wifi_service_win.cc b/components/wifi/wifi_service_win.cc |
| index 052062db1a757f5f4bfa617b74cf9e96bc186876..16b67fd1b1d129da3525a7cfec4d08ec643810f3 100644 |
| --- a/components/wifi/wifi_service_win.cc |
| +++ b/components/wifi/wifi_service_win.cc |
| @@ -291,6 +291,10 @@ class WiFiServiceImpl : public WiFiService, base::NonThreadSafe { |
| // Disconnect from currently connected network if any. |
| DWORD Disconnect(); |
| + // Get desired connection freqency if it was set using |SetProperties|. |
| + // Default to |kFrequencyAny|. |
| + Frequency GetDesiredFrequency(const std::string& network_guid); |
| + |
| // Get DOT11_BSSID_LIST of desired BSSIDs to connect to |ssid| network on |
| // given |frequency|. |
| DWORD GetDesiredBssList(DOT11_SSID& ssid, |
| @@ -339,6 +343,8 @@ class WiFiServiceImpl : public WiFiService, base::NonThreadSafe { |
| // GUID of the currently connected interface, if any, otherwise the GUID of |
| // one of the WLAN interfaces. |
| GUID interface_guid_; |
| + // Temporary storage of network properties indexed by |network_guid|. |
| + DictionaryValue temporary_network_properties_; |
|
stevenjb
2013/11/26 18:00:34
How about 'connect_properties_' to better describe
mef
2013/11/26 19:00:13
Done.
|
| // Preserved WLAN profile xml. |
| std::map<std::string, std::string> saved_profiles_xml_; |
| // Observer to get notified when network(s) have changed (e.g. connect). |
| @@ -419,9 +425,11 @@ void WiFiServiceImpl::SetProperties( |
| const std::string& network_guid, |
| scoped_ptr<base::DictionaryValue> properties, |
| std::string* error) { |
| - // This method is not implemented in first version as it is not used by |
| - // Google Cast extension. |
| - CheckError(ERROR_CALL_NOT_IMPLEMENTED, kWiFiServiceError, error); |
| + // Temporary preserve WiFi properties (desired frequency, wifi password to use |
| + // in StartConnect. |
| + DCHECK(properties->HasKey(onc::network_type::kWiFi)); |
|
stevenjb
2013/11/26 18:00:34
This should set |error| instead of CHECK
mef
2013/11/26 19:00:13
Done.
|
| + temporary_network_properties_.SetWithoutPathExpansion(network_guid, |
| + properties.release()); |
| } |
| void WiFiServiceImpl::GetVisibleNetworks(ListValue* network_list) { |
| @@ -457,7 +465,7 @@ void WiFiServiceImpl::StartConnect(const std::string& network_guid, |
| std::string connected_network_guid; |
| error_code = SaveCurrentConnectedNetwork(&connected_network_guid); |
| if (error_code == ERROR_SUCCESS) { |
| - Frequency frequency = kFrequencyAny; |
| + Frequency frequency = GetDesiredFrequency(network_guid); |
| // Connect only if network |network_guid| is not connected already. |
|
tbarzic
2013/11/26 19:02:21
is |network_guid| unique for (ssid, frequency) pai
mef
2013/11/27 18:00:03
Good point, done. Currently connected band is not
|
| if (network_guid != connected_network_guid) |
| error_code = Connect(network_guid, frequency); |
| @@ -1045,6 +1053,22 @@ DWORD WiFiServiceImpl::FindConnectedNetwork( |
| return error; |
| } |
| +WiFiService::Frequency WiFiServiceImpl::GetDesiredFrequency( |
|
stevenjb
2013/11/26 18:00:34
GetConnectFrequency or GetFrequencyForConnect?
mef
2013/11/26 19:00:13
Done.
|
| + const std::string& network_guid) { |
| + // Check whether desired frequency is set in |temporary_network_properties_|. |
| + DictionaryValue* properties; |
| + DictionaryValue* wifi; |
| + int frequency; |
| + if (temporary_network_properties_.GetDictionaryWithoutPathExpansion( |
| + network_guid, |
| + &properties) && |
|
stevenjb
2013/11/26 18:00:34
nit: OK (and a little clearer imho) to combine the
mef
2013/11/26 19:00:13
Done.
|
| + properties->GetDictionary(onc::network_type::kWiFi, &wifi) && |
| + wifi->GetInteger(onc::wifi::kFrequency, &frequency)) { |
|
tbarzic
2013/11/26 19:02:21
should frequency be normalized (here or in SetProp
mef
2013/11/27 18:00:03
Done.
|
| + return static_cast<Frequency>(frequency); |
| + } |
| + return kFrequencyAny; |
| +} |
| + |
| DWORD WiFiServiceImpl::GetDesiredBssList( |
| DOT11_SSID& ssid, |
| Frequency frequency, |
| @@ -1129,7 +1153,6 @@ DWORD WiFiServiceImpl::GetDesiredBssList( |
| return error; |
| } |
| - |
| DWORD WiFiServiceImpl::Connect(const std::string& network_guid, |
| Frequency frequency) { |
| if (client_ == NULL) { |