diff options
| -rw-r--r-- | core/java/android/net/RecommendationRequest.java | 20 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/RecommendationRequestTest.java | 84 |
2 files changed, 102 insertions, 2 deletions
diff --git a/core/java/android/net/RecommendationRequest.java b/core/java/android/net/RecommendationRequest.java index 05ca1aa437f9..a96f90d57746 100644 --- a/core/java/android/net/RecommendationRequest.java +++ b/core/java/android/net/RecommendationRequest.java @@ -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); } diff --git a/core/tests/coretests/src/android/net/RecommendationRequestTest.java b/core/tests/coretests/src/android/net/RecommendationRequestTest.java new file mode 100644 index 000000000000..31560b0ac8c3 --- /dev/null +++ b/core/tests/coretests/src/android/net/RecommendationRequestTest.java @@ -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; + } +} |