Merge "WifiScanner: Pass the band scanned in ScanData"
diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java
index fc5caf0..acc0518 100644
--- a/wifi/java/android/net/wifi/WifiScanner.java
+++ b/wifi/java/android/net/wifi/WifiScanner.java
@@ -357,11 +357,12 @@
*/
private int mBucketsScanned;
/**
- * Indicates that the scan results received are as a result of a scan of all available
- * channels. This should only be expected to function for single scans.
+ * Bands scanned. One of the WIFI_BAND values.
+ * Will be {@link #WIFI_BAND_UNSPECIFIED} if the list of channels do not fully cover
+ * any of the bands.
* {@hide}
*/
- private boolean mAllChannelsScanned;
+ private int mBandScanned;
/** all scan results discovered in this scan, sorted by timestamp in ascending order */
private ScanResult mResults[];
@@ -374,12 +375,12 @@
}
/** {@hide} */
- public ScanData(int id, int flags, int bucketsScanned, boolean allChannelsScanned,
- ScanResult[] results) {
+ public ScanData(int id, int flags, int bucketsScanned, int bandScanned,
+ ScanResult[] results) {
mId = id;
mFlags = flags;
mBucketsScanned = bucketsScanned;
- mAllChannelsScanned = allChannelsScanned;
+ mBandScanned = bandScanned;
mResults = results;
}
@@ -387,7 +388,7 @@
mId = s.mId;
mFlags = s.mFlags;
mBucketsScanned = s.mBucketsScanned;
- mAllChannelsScanned = s.mAllChannelsScanned;
+ mBandScanned = s.mBandScanned;
mResults = new ScanResult[s.mResults.length];
for (int i = 0; i < s.mResults.length; i++) {
ScanResult result = s.mResults[i];
@@ -410,8 +411,8 @@
}
/** {@hide} */
- public boolean isAllChannelsScanned() {
- return mAllChannelsScanned;
+ public int getBandScanned() {
+ return mBandScanned;
}
public ScanResult[] getResults() {
@@ -429,7 +430,7 @@
dest.writeInt(mId);
dest.writeInt(mFlags);
dest.writeInt(mBucketsScanned);
- dest.writeInt(mAllChannelsScanned ? 1 : 0);
+ dest.writeInt(mBandScanned);
dest.writeInt(mResults.length);
for (int i = 0; i < mResults.length; i++) {
ScanResult result = mResults[i];
@@ -447,13 +448,13 @@
int id = in.readInt();
int flags = in.readInt();
int bucketsScanned = in.readInt();
- boolean allChannelsScanned = in.readInt() != 0;
+ int bandScanned = in.readInt();
int n = in.readInt();
ScanResult results[] = new ScanResult[n];
for (int i = 0; i < n; i++) {
results[i] = ScanResult.CREATOR.createFromParcel(in);
}
- return new ScanData(id, flags, bucketsScanned, allChannelsScanned, results);
+ return new ScanData(id, flags, bucketsScanned, bandScanned, results);
}
public ScanData[] newArray(int size) {
@@ -759,6 +760,7 @@
* Multiple requests should also not share this object.
* {@hide}
*/
+ @RequiresPermission(Manifest.permission.NETWORK_STACK)
public void registerScanListener(ScanListener listener) {
Preconditions.checkNotNull(listener, "listener cannot be null");
int key = addListener(listener);
diff --git a/wifi/tests/src/android/net/wifi/WifiScannerTest.java b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
index da42dcf..cf1ed8f 100644
--- a/wifi/tests/src/android/net/wifi/WifiScannerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
@@ -16,6 +16,7 @@
package android.net.wifi;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -26,6 +27,7 @@
import android.content.Context;
import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.PnoSettings.PnoNetwork;
+import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiScanner.ScanSettings;
import android.os.Handler;
import android.os.Parcel;
@@ -203,4 +205,29 @@
assertNotNull(pnoNetwork.frequencies);
}
+ /**
+ * Verify parcel read/write for ScanData.
+ */
+ @Test
+ public void verifyScanDataParcel() throws Exception {
+ ScanData writeScanData = new ScanData(2, 0, 3,
+ WifiScanner.WIFI_BAND_BOTH_WITH_DFS, new ScanResult[0]);
+
+ ScanData readScanData = parcelWriteRead(writeScanData);
+ assertEquals(writeScanData.getId(), readScanData.getId());
+ assertEquals(writeScanData.getFlags(), readScanData.getFlags());
+ assertEquals(writeScanData.getBucketsScanned(), readScanData.getBucketsScanned());
+ assertEquals(writeScanData.getBandScanned(), readScanData.getBandScanned());
+ assertArrayEquals(writeScanData.getResults(), readScanData.getResults());
+ }
+
+ /**
+ * Write the provided {@link ScanData} to a parcel and deserialize it.
+ */
+ private static ScanData parcelWriteRead(ScanData writeScanData) throws Exception {
+ Parcel parcel = Parcel.obtain();
+ writeScanData.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0); // Rewind data position back to the beginning for read.
+ return ScanData.CREATOR.createFromParcel(parcel);
+ }
}