Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3be9e25 authored by Etan Cohen's avatar Etan Cohen Committed by Android (Google) Code Review
Browse files

Merge changes from topic "parcelable_peer_handle"

* changes:
  [AWARE] Create a Parcelable version of PeerHandle
  Revert "[AWARE] Make PeerHandle parcelable"
parents 5ca45402 bd0ebf80
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -30111,10 +30111,14 @@ package android.net.wifi.aware {
    method public void onIdentityChanged(byte[]);
  }
  public final class PeerHandle implements android.os.Parcelable {
  public final class ParcelablePeerHandle extends android.net.wifi.aware.PeerHandle implements android.os.Parcelable {
    ctor public ParcelablePeerHandle(android.net.wifi.aware.PeerHandle);
    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;
    field public static final android.os.Parcelable.Creator<android.net.wifi.aware.ParcelablePeerHandle> CREATOR;
  }
  public class PeerHandle {
  }
  public final class PublishConfig implements android.os.Parcelable {
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net.wifi.aware;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * A Parcelable {@link PeerHandle}. Can be constructed from a {@code PeerHandle} and then passed
 * to any of the APIs which take a {@code PeerHandle} as inputs.
 */
public final class ParcelablePeerHandle extends PeerHandle implements Parcelable {
    /**
     * Construct a parcelable version of {@link PeerHandle}.
     *
     * @param peerHandle The {@link PeerHandle} to be made parcelable.
     */
    public ParcelablePeerHandle(PeerHandle peerHandle) {
        super(peerHandle.peerId);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(peerId);
    }

    public static final Creator<ParcelablePeerHandle> CREATOR =
            new Creator<ParcelablePeerHandle>() {
                @Override
                public ParcelablePeerHandle[] newArray(int size) {
                    return new ParcelablePeerHandle[size];
                }

                @Override
                public ParcelablePeerHandle createFromParcel(Parcel in) {
                    int peerHandle = in.readInt();
                    return new ParcelablePeerHandle(new PeerHandle(peerHandle));
                }
            };
}
+2 −29
Original line number Diff line number Diff line
@@ -16,9 +16,6 @@

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
@@ -35,8 +32,9 @@ import android.os.Parcelable;
 * configuration's service-specific information field,
 * {@link PublishConfig.Builder#setServiceSpecificInfo(byte[])}, or match filter,
 * {@link PublishConfig.Builder#setMatchFilter(java.util.List)}.
 * <p>A parcelable handle object is available with {@link ParcelablePeerHandle}.
 */
public final class PeerHandle implements Parcelable {
public class PeerHandle {
    /** @hide */
    public PeerHandle(int peerId) {
        this.peerId = peerId;
@@ -62,29 +60,4 @@ public final class PeerHandle implements Parcelable {
    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);
        }
    };

}
+14 −6
Original line number Diff line number Diff line
@@ -1614,23 +1614,31 @@ public class WifiAwareManagerTest {
        assertEquals(cap.hashCode(), rereadCap.hashCode());
    }

    // PeerHandle tests
    // ParcelablePeerHandle tests

    /**
     * Verify parceling of ParcelablePeerHandle and interoperability with PeerHandle.
     */
    @Test
    public void testPeerHandleParcel() {
    public void testParcelablePeerHandleParcel() {
        final PeerHandle peerHandle = new PeerHandle(5);
        final ParcelablePeerHandle parcelablePeerHandle = new ParcelablePeerHandle(peerHandle);

        Parcel parcelW = Parcel.obtain();
        peerHandle.writeToParcel(parcelW, 0);
        parcelablePeerHandle.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);
        ParcelablePeerHandle rereadParcelablePeerHandle =
                ParcelablePeerHandle.CREATOR.createFromParcel(parcelR);

        assertEquals(peerHandle, rereadParcelablePeerHandle);
        assertEquals(peerHandle.hashCode(), rereadParcelablePeerHandle.hashCode());
        assertEquals(parcelablePeerHandle, rereadParcelablePeerHandle);
        assertEquals(parcelablePeerHandle.hashCode(), rereadParcelablePeerHandle.hashCode());

        assertEquals(peerHandle, rereadPeerHandle);
        assertEquals(peerHandle.hashCode(), rereadPeerHandle.hashCode());
    }
}