diff options
author | Mitchell Wills <mwills@google.com> | 2016-05-09 22:20:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-05-09 22:20:37 +0000 |
commit | b53cd9aa2625ec2a1c2e69c609d8a9dda3569a36 (patch) | |
tree | 3dff0648c799681359083f4d3e804a0e4162ab24 | |
parent | 027f5195dced3e660c100c539e3d9dfaa668c215 (diff) | |
parent | 362fad8eddd674d7cf19ffcc1fec38d2d2ee2f53 (diff) |
Merge "SupplicantScanner: Truncate hidden network list" into nyc-dev
-rw-r--r-- | service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java | 10 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java | 23 |
2 files changed, 31 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java index c4e19f5a5..4b2d68fce 100644 --- a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java +++ b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java @@ -51,6 +51,8 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle public static final String BACKGROUND_PERIOD_ALARM_TAG = TAG + " Background Scan Period"; public static final String TIMEOUT_ALARM_TAG = TAG + " Scan Timeout"; + // Max number of networks that can be specified to wpa_supplicant per scan request + public static final int MAX_HIDDEN_NETWORK_IDS_PER_SCAN = 16; private static final int SCAN_BUFFER_CAPACITY = 10; private static final int MAX_APS_PER_SCAN = 32; @@ -383,7 +385,9 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle int[] hiddenNetworkIds = mBackgroundScanSettings.hiddenNetworkIds; if (hiddenNetworkIds != null) { - for (int i = 0; i < hiddenNetworkIds.length; i++) { + int numHiddenNetworkIds = Math.min(hiddenNetworkIds.length, + MAX_HIDDEN_NETWORK_IDS_PER_SCAN); + for (int i = 0; i < numHiddenNetworkIds; i++) { hiddenNetworkIdSet.add(hiddenNetworkIds[i]); } } @@ -414,7 +418,9 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle mPendingSingleScanEventHandler); int[] hiddenNetworkIds = mPendingSingleScanSettings.hiddenNetworkIds; if (hiddenNetworkIds != null) { - for (int i = 0; i < hiddenNetworkIds.length; i++) { + int numHiddenNetworkIds = Math.min(hiddenNetworkIds.length, + MAX_HIDDEN_NETWORK_IDS_PER_SCAN); + for (int i = 0; i < numHiddenNetworkIds; i++) { hiddenNetworkIdSet.add(hiddenNetworkIds[i]); } } diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java index 04684d932..15d1465f0 100644 --- a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java @@ -167,6 +167,29 @@ public abstract class BaseWifiScannerImplTest { ScanResults.create(0, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650), false); } + /** + * Tests whether the provided hidden networkId's in scan settings is truncated to max size + * supported by wpa_supplicant when invoking native scan. + */ + @Test + public void singleScanSuccessWithTruncatedHiddenNetworkIds() { + int[] hiddenNetworkIds = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; + WifiNative.ScanSettings settings = new NativeScanSettingsBuilder() + .withBasePeriod(10000) + .withMaxApPerScan(10) + .withHiddenNetworkIds(hiddenNetworkIds) + .addBucketWithChannels(20000, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, 5650) + .build(); + + Set<Integer> hiddenNetworkIdSet = new HashSet<Integer>(); + for (int i = 0; i < SupplicantWifiScannerImpl.MAX_HIDDEN_NETWORK_IDS_PER_SCAN; i++) { + hiddenNetworkIdSet.add(hiddenNetworkIds[i]); + } + doSuccessfulSingleScanTest(settings, createFreqSet(5650), + hiddenNetworkIdSet, + ScanResults.create(0, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650), false); + } + @Test public void overlappingSingleScanFails() { WifiNative.ScanSettings settings = new NativeScanSettingsBuilder() |