Merge "Fix ScanResult array parceling." am: 5fdc86fb27

am: 68764eabb7

Change-Id: I6b44179d634722828f40524c26ccf6ea51521f11
This commit is contained in:
Jeremy Joslin
2016-12-19 22:14:37 +00:00
committed by android-build-merger
2 changed files with 102 additions and 2 deletions

View File

@@ -105,7 +105,16 @@ public final class RecommendationRequest implements Parcelable {
}
protected RecommendationRequest(Parcel in) {
mScanResults = (ScanResult[]) in.readParcelableArray(ScanResult.class.getClassLoader());
final int resultCount = in.readInt();
if (resultCount > 0) {
mScanResults = new ScanResult[resultCount];
for (int i = 0; i < resultCount; i++) {
mScanResults[i] = in.readParcelable(ScanResult.class.getClassLoader());
}
} else {
mScanResults = null;
}
mCurrentSelectedConfig = in.readParcelable(WifiConfiguration.class.getClassLoader());
mRequiredCapabilities = in.readParcelable(NetworkCapabilities.class.getClassLoader());
}
@@ -117,7 +126,14 @@ public final class RecommendationRequest implements Parcelable {
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelableArray(mScanResults, flags);
if (mScanResults != null) {
dest.writeInt(mScanResults.length);
for (int i = 0; i < mScanResults.length; i++) {
dest.writeParcelable(mScanResults[i], flags);
}
} else {
dest.writeInt(0);
}
dest.writeParcelable(mCurrentSelectedConfig, flags);
dest.writeParcelable(mRequiredCapabilities, flags);
}

View File

@@ -0,0 +1,84 @@
package android.net;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.os.Parcel;
import android.test.AndroidTestCase;
public class RecommendationRequestTest extends AndroidTestCase {
private ScanResult[] mScanResults;
private WifiConfiguration mConfiguration;
private NetworkCapabilities mCapabilities;
@Override
public void setUp() throws Exception {
mScanResults = new ScanResult[2];
mScanResults[0] = new ScanResult();
mScanResults[1] = new ScanResult(
"ssid",
"bssid",
0L /*hessid*/,
1 /*anqpDominId*/,
"caps",
2 /*level*/,
3 /*frequency*/,
4L /*tsf*/,
5 /*distCm*/,
6 /*distSdCm*/,
7 /*channelWidth*/,
8 /*centerFreq0*/,
9 /*centerFreq1*/,
false /*is80211McRTTResponder*/);
mConfiguration = new WifiConfiguration();
mConfiguration.SSID = "RecommendationRequestTest";
mCapabilities = new NetworkCapabilities()
.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
}
public void testParceling() throws Exception {
RecommendationRequest request = new RecommendationRequest.Builder()
.setCurrentRecommendedWifiConfig(mConfiguration)
.setScanResults(mScanResults)
.setNetworkCapabilities(mCapabilities)
.build();
RecommendationRequest parceled = passThroughParcel(request);
assertEquals(request.getCurrentSelectedConfig().SSID,
parceled.getCurrentSelectedConfig().SSID);
assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities());
ScanResult[] parceledScanResults = parceled.getScanResults();
assertNotNull(parceledScanResults);
assertEquals(mScanResults.length, parceledScanResults.length);
for (int i = 0; i < mScanResults.length; i++) {
assertEquals(mScanResults[i].SSID, parceledScanResults[i].SSID);
}
}
public void testParceling_nullScanResults() throws Exception {
RecommendationRequest request = new RecommendationRequest.Builder()
.setCurrentRecommendedWifiConfig(mConfiguration)
.setNetworkCapabilities(mCapabilities)
.build();
RecommendationRequest parceled = passThroughParcel(request);
assertEquals(request.getCurrentSelectedConfig().SSID,
parceled.getCurrentSelectedConfig().SSID);
assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities());
ScanResult[] parceledScanResults = parceled.getScanResults();
assertNull(parceledScanResults);
}
private RecommendationRequest passThroughParcel(RecommendationRequest request) {
Parcel p = Parcel.obtain();
RecommendationRequest output = null;
try {
request.writeToParcel(p, 0);
p.setDataPosition(0);
output = RecommendationRequest.CREATOR.createFromParcel(p);
} finally {
p.recycle();
}
assertNotNull(output);
return output;
}
}