diff options
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/ConfigurationMap.java | 82 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/ScanResultMatchInfo.java | 108 |
2 files changed, 108 insertions, 82 deletions
diff --git a/service/java/com/android/server/wifi/ConfigurationMap.java b/service/java/com/android/server/wifi/ConfigurationMap.java index d377f0f34..0652b40f4 100644 --- a/service/java/com/android/server/wifi/ConfigurationMap.java +++ b/service/java/com/android/server/wifi/ConfigurationMap.java @@ -5,13 +5,10 @@ import android.net.wifi.WifiConfiguration; import android.os.UserHandle; import android.os.UserManager; -import com.android.server.wifi.util.ScanResultUtil; - import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.Objects; public class ConfigurationMap { private final Map<Integer, WifiConfiguration> mPerID = new HashMap<>(); @@ -120,83 +117,4 @@ public class ConfigurationMap { public Collection<WifiConfiguration> valuesForCurrentUser() { return mPerIDForCurrentUser.values(); } - - /** - * Class to store the info needed to match a scan result to the provided network configuration. - */ - private static class ScanResultMatchInfo { - private static final int NETWORK_TYPE_OPEN = 0; - private static final int NETWORK_TYPE_WEP = 1; - private static final int NETWORK_TYPE_PSK = 2; - private static final int NETWORK_TYPE_EAP = 3; - - /** - * SSID of the network. - */ - public String networkSsid; - /** - * Security Type of the network. - */ - public int networkType; - - public static ScanResultMatchInfo fromWifiConfiguration(WifiConfiguration config) { - ScanResultMatchInfo info = new ScanResultMatchInfo(); - info.networkSsid = config.SSID; - if (WifiConfigurationUtil.isConfigForPskNetwork(config)) { - info.networkType = NETWORK_TYPE_PSK; - } else if (WifiConfigurationUtil.isConfigForEapNetwork(config)) { - info.networkType = NETWORK_TYPE_EAP; - } else if (WifiConfigurationUtil.isConfigForWepNetwork(config)) { - info.networkType = NETWORK_TYPE_WEP; - } else if (WifiConfigurationUtil.isConfigForOpenNetwork(config)) { - info.networkType = NETWORK_TYPE_OPEN; - } else { - throw new IllegalArgumentException("Invalid WifiConfiguration: " + config); - } - return info; - } - - public static ScanResultMatchInfo fromScanResult(ScanResult scanResult) { - ScanResultMatchInfo info = new ScanResultMatchInfo(); - // Scan result ssid's are not quoted, hence add quotes. - // TODO: This matching algo works only if the scan result contains a string SSID. - // However, according to our public documentation ths {@link WifiConfiguration#SSID} can - // either have a hex string or quoted ASCII string SSID. - info.networkSsid = ScanResultUtil.createQuotedSSID(scanResult.SSID); - if (ScanResultUtil.isScanResultForPskNetwork(scanResult)) { - info.networkType = NETWORK_TYPE_PSK; - } else if (ScanResultUtil.isScanResultForEapNetwork(scanResult)) { - info.networkType = NETWORK_TYPE_EAP; - } else if (ScanResultUtil.isScanResultForWepNetwork(scanResult)) { - info.networkType = NETWORK_TYPE_WEP; - } else if (ScanResultUtil.isScanResultForOpenNetwork(scanResult)) { - info.networkType = NETWORK_TYPE_OPEN; - } else { - throw new IllegalArgumentException("Invalid ScanResult: " + scanResult); - } - return info; - } - - @Override - public boolean equals(Object otherObj) { - if (this == otherObj) { - return true; - } else if (!(otherObj instanceof ScanResultMatchInfo)) { - return false; - } - ScanResultMatchInfo other = (ScanResultMatchInfo) otherObj; - return Objects.equals(networkSsid, other.networkSsid) - && networkType == other.networkType; - } - - @Override - public int hashCode() { - return Objects.hash(networkSsid, networkType); - } - - @Override - public String toString() { - return "ScanResultMatchInfo: " + networkSsid + ", type: " + networkType; - } - } } diff --git a/service/java/com/android/server/wifi/ScanResultMatchInfo.java b/service/java/com/android/server/wifi/ScanResultMatchInfo.java new file mode 100644 index 000000000..ad29c2312 --- /dev/null +++ b/service/java/com/android/server/wifi/ScanResultMatchInfo.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.wifi; + +import android.net.wifi.ScanResult; +import android.net.wifi.WifiConfiguration; + +import com.android.server.wifi.util.ScanResultUtil; + +import java.util.Objects; + +/** + * Class to store the info needed to match a scan result to the provided network configuration. + */ +public class ScanResultMatchInfo { + public static final int NETWORK_TYPE_OPEN = 0; + public static final int NETWORK_TYPE_WEP = 1; + public static final int NETWORK_TYPE_PSK = 2; + public static final int NETWORK_TYPE_EAP = 3; + + /** + * SSID of the network. + */ + public String networkSsid; + /** + * Security Type of the network. + */ + public int networkType; + + /** + * Get the ScanResultMatchInfo for the given WifiConfiguration + */ + public static ScanResultMatchInfo fromWifiConfiguration(WifiConfiguration config) { + ScanResultMatchInfo info = new ScanResultMatchInfo(); + info.networkSsid = config.SSID; + if (WifiConfigurationUtil.isConfigForPskNetwork(config)) { + info.networkType = NETWORK_TYPE_PSK; + } else if (WifiConfigurationUtil.isConfigForEapNetwork(config)) { + info.networkType = NETWORK_TYPE_EAP; + } else if (WifiConfigurationUtil.isConfigForWepNetwork(config)) { + info.networkType = NETWORK_TYPE_WEP; + } else if (WifiConfigurationUtil.isConfigForOpenNetwork(config)) { + info.networkType = NETWORK_TYPE_OPEN; + } else { + throw new IllegalArgumentException("Invalid WifiConfiguration: " + config); + } + return info; + } + + /** + * Get the ScanResultMatchInfo for the given ScanResult + */ + public static ScanResultMatchInfo fromScanResult(ScanResult scanResult) { + ScanResultMatchInfo info = new ScanResultMatchInfo(); + // Scan result ssid's are not quoted, hence add quotes. + // TODO: This matching algo works only if the scan result contains a string SSID. + // However, according to our public documentation ths {@link WifiConfiguration#SSID} can + // either have a hex string or quoted ASCII string SSID. + info.networkSsid = ScanResultUtil.createQuotedSSID(scanResult.SSID); + if (ScanResultUtil.isScanResultForPskNetwork(scanResult)) { + info.networkType = NETWORK_TYPE_PSK; + } else if (ScanResultUtil.isScanResultForEapNetwork(scanResult)) { + info.networkType = NETWORK_TYPE_EAP; + } else if (ScanResultUtil.isScanResultForWepNetwork(scanResult)) { + info.networkType = NETWORK_TYPE_WEP; + } else if (ScanResultUtil.isScanResultForOpenNetwork(scanResult)) { + info.networkType = NETWORK_TYPE_OPEN; + } else { + throw new IllegalArgumentException("Invalid ScanResult: " + scanResult); + } + return info; + } + + @Override + public boolean equals(Object otherObj) { + if (this == otherObj) { + return true; + } else if (!(otherObj instanceof ScanResultMatchInfo)) { + return false; + } + ScanResultMatchInfo other = (ScanResultMatchInfo) otherObj; + return Objects.equals(networkSsid, other.networkSsid) + && networkType == other.networkType; + } + + @Override + public int hashCode() { + return Objects.hash(networkSsid, networkType); + } + + @Override + public String toString() { + return "ScanResultMatchInfo: " + networkSsid + ", type: " + networkType; + } +} |