Merge "Fix ScanResult array parceling." am: 5fdc86fb27
am: 68764eabb7
Change-Id: I6b44179d634722828f40524c26ccf6ea51521f11
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user