diff options
| -rw-r--r-- | api/current.txt | 5 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/aware/PeerHandle.java | 30 | ||||
| -rw-r--r-- | wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java | 20 |
3 files changed, 53 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt index fad607ccefec..95ac7c6e8412 100644 --- a/api/current.txt +++ b/api/current.txt @@ -29751,7 +29751,10 @@ package android.net.wifi.aware { method public void onIdentityChanged(byte[]); } - public class PeerHandle { + public final class PeerHandle implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.net.wifi.aware.PeerHandle> CREATOR; } public final class PublishConfig implements android.os.Parcelable { diff --git a/wifi/java/android/net/wifi/aware/PeerHandle.java b/wifi/java/android/net/wifi/aware/PeerHandle.java index 8ae4b5af6325..1603d00fd88a 100644 --- a/wifi/java/android/net/wifi/aware/PeerHandle.java +++ b/wifi/java/android/net/wifi/aware/PeerHandle.java @@ -16,6 +16,9 @@ package android.net.wifi.aware; +import android.os.Parcel; +import android.os.Parcelable; + /** * Opaque object used to represent a Wi-Fi Aware peer. Obtained from discovery sessions in * {@link DiscoverySessionCallback#onServiceDiscovered(PeerHandle, byte[], java.util.List)} or @@ -33,7 +36,7 @@ package android.net.wifi.aware; * {@link PublishConfig.Builder#setServiceSpecificInfo(byte[])}, or match filter, * {@link PublishConfig.Builder#setMatchFilter(java.util.List)}. */ -public class PeerHandle { +public final class PeerHandle implements Parcelable { /** @hide */ public PeerHandle(int peerId) { this.peerId = peerId; @@ -59,4 +62,29 @@ public class PeerHandle { public int hashCode() { return peerId; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(peerId); + } + + public static final Creator<PeerHandle> CREATOR = new Creator<PeerHandle>() { + @Override + public PeerHandle[] newArray(int size) { + return new PeerHandle[size]; + } + + @Override + public PeerHandle createFromParcel(Parcel in) { + int peerHandle = in.readInt(); + + return new PeerHandle(peerHandle); + } + }; + } diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java index e882b6bb7c1d..ed38c7613a62 100644 --- a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java +++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java @@ -1382,4 +1382,24 @@ public class WifiAwareManagerTest { assertEquals(cap.getPeerIpv6Addr().toString(), "/fe80::1322:33ff:fe44:5566%5"); assertEquals(cap.hashCode(), rereadCap.hashCode()); } + + // PeerHandle tests + + @Test + public void testPeerHandleParcel() { + final PeerHandle peerHandle = new PeerHandle(5); + + Parcel parcelW = Parcel.obtain(); + peerHandle.writeToParcel(parcelW, 0); + byte[] bytes = parcelW.marshall(); + parcelW.recycle(); + + Parcel parcelR = Parcel.obtain(); + parcelR.unmarshall(bytes, 0, bytes.length); + parcelR.setDataPosition(0); + PeerHandle rereadPeerHandle = PeerHandle.CREATOR.createFromParcel(parcelR); + + assertEquals(peerHandle, rereadPeerHandle); + assertEquals(peerHandle.hashCode(), rereadPeerHandle.hashCode()); + } } |