Merge "[AWARE] Make PeerHandle parcelable"
diff --git a/api/current.txt b/api/current.txt
index fad607c..95ac7c6 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -29751,7 +29751,10 @@
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 8ae4b5a..1603d00 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 @@
* {@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 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 e882b6b..ed38c76 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 @@
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());
+ }
}