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

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

Merge "[AWARE] Update Aware NetworkSpecifier API per API council feedback"

parents 1af362e2 28b6d6a9
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -30321,13 +30321,11 @@ package android.net.wifi.aware {
  }
  public static final class WifiAwareNetworkSpecifier.Builder {
    ctor public WifiAwareNetworkSpecifier.Builder();
    ctor public WifiAwareNetworkSpecifier.Builder(@NonNull android.net.wifi.aware.DiscoverySession, @NonNull android.net.wifi.aware.PeerHandle);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier build();
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setDiscoverySession(@NonNull android.net.wifi.aware.DiscoverySession);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPeerHandle(@NonNull android.net.wifi.aware.PeerHandle);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPort(int);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPort(@IntRange(from=0, to=65535) int);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPskPassphrase(@NonNull String);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setTransportProtocol(int);
    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setTransportProtocol(@IntRange(from=0, to=255) int);
  }
  public class WifiAwareSession implements java.lang.AutoCloseable {
+19 −39
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.net.wifi.aware;

import static android.net.wifi.aware.WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR;

import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.net.NetworkSpecifier;
@@ -302,12 +303,6 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
    /**
     * A builder class for a Wi-Fi Aware network specifier to set up an Aware connection with a
     * peer.
     * <p>
     * Note that all Wi-Fi Aware connection specifier objects must call the
     * {@link Builder#setDiscoverySession(DiscoverySession)} to specify the context
     * within which the connection is created, and
     * {@link Builder#setPeerHandle(PeerHandle)} to specify the peer to which the
     * connection is created.
     */
    public static final class Builder {
        private DiscoverySession mDiscoverySession;
@@ -318,42 +313,27 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
        private int mTransportProtocol = -1; // invalid value

        /**
         * Configure the {@link PublishDiscoverySession} or {@link SubscribeDiscoverySession}
         * discovery session in whose context the connection is created.
         * <p>
         * Note: this method must be called for any connection request!
         * Create a builder for {@link WifiAwareNetworkSpecifier} used in requests to set up a
         * Wi-Fi Aware connection with a peer.
         *
         * @param discoverySession A Wi-Fi Aware discovery session.
         * @return the current {@link Builder} builder, enabling chaining of builder
         *         methods.
         */
        public @NonNull Builder setDiscoverySession(@NonNull DiscoverySession discoverySession) {
            if (discoverySession == null) {
                throw new IllegalArgumentException("Non-null discoverySession required");
            }
            mDiscoverySession = discoverySession;
            return this;
        }

        /**
         * Configure the {@link PeerHandle} of the peer to which the Wi-Fi Aware connection is
         * requested. The peer is discovered through Wi-Fi Aware discovery,
         * <p>
         * Note: this method must be called for any connection request!
         *
         * @param peerHandle The peer's handle obtained through
         * @param discoverySession A Wi-Fi Aware discovery session in whose context the connection
         *                         is created.
         * @param peerHandle The handle of the peer to which the Wi-Fi Aware connection is
         *                   requested. The peer is discovered through Wi-Fi Aware discovery. The
         *                   handle can be obtained through
         * {@link DiscoverySessionCallback#onServiceDiscovered(PeerHandle, byte[], java.util.List)}
         *                   or
         *                   {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, byte[])}.
         * @return the current {@link Builder} builder, enabling chaining of builder
         *         methods.
         */
        public @NonNull Builder setPeerHandle(@NonNull PeerHandle peerHandle) {
        public Builder(@NonNull DiscoverySession discoverySession, @NonNull PeerHandle peerHandle) {
            if (discoverySession == null) {
                throw new IllegalArgumentException("Non-null discoverySession required");
            }
            if (peerHandle == null) {
                throw new IllegalArgumentException("Non-null peerHandle required");
            }
            mDiscoverySession = discoverySession;
            mPeerHandle = peerHandle;
            return this;
        }

        /**
@@ -407,7 +387,7 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
         * @return the current {@link Builder} builder, enabling chaining of builder
         *         methods.
         */
        public @NonNull Builder setPort(int port) {
        public @NonNull Builder setPort(@IntRange(from = 0, to = 65535) int port) {
            if (port <= 0 || port > 65535) {
                throw new IllegalArgumentException("The port must be a positive value (0, 65535]");
            }
@@ -432,7 +412,8 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
         * @return the current {@link Builder} builder, enabling chaining of builder
         *         methods.
         */
        public @NonNull Builder setTransportProtocol(int transportProtocol) {
        public @NonNull
                Builder setTransportProtocol(@IntRange(from = 0, to = 255) int transportProtocol) {
            if (transportProtocol < 0 || transportProtocol > 255) {
                throw new IllegalArgumentException(
                        "The transport protocol must be in range [0, 255]");
@@ -460,6 +441,9 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
            if (mDiscoverySession == null) {
                throw new IllegalStateException("Null discovery session!?");
            }
            if (mPeerHandle == null) {
                throw new IllegalStateException("Null peerHandle!?");
            }
            if (mPskPassphrase != null & mPmk != null) {
                throw new IllegalStateException(
                        "Can only specify a Passphrase or a PMK - not both!");
@@ -481,10 +465,6 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements
                }
            }

            if (role == WIFI_AWARE_DATA_PATH_ROLE_INITIATOR && mPeerHandle == null) {
                throw new IllegalStateException("Null peerHandle!?");
            }

            return new WifiAwareNetworkSpecifier(
                    WifiAwareNetworkSpecifier.NETWORK_SPECIFIER_TYPE_IB, role,
                    mDiscoverySession.mClientId, mDiscoverySession.mSessionId, mPeerHandle.peerId,
+29 −37
Original line number Diff line number Diff line
@@ -958,8 +958,8 @@ public class WifiAwareManagerTest {
        WifiAwareNetworkSpecifier ns =
                (WifiAwareNetworkSpecifier) publishSession.getValue().createNetworkSpecifierOpen(
                        peerHandle);
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession.getValue()).setPeerHandle(peerHandle).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(
                publishSession.getValue(), peerHandle).build();

        // validate format
        collector.checkThat("role", WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER,
@@ -979,9 +979,8 @@ public class WifiAwareManagerTest {
        // (4) request an encrypted (PMK) network specifier from the session
        ns = (WifiAwareNetworkSpecifier) publishSession.getValue().createNetworkSpecifierPmk(
                peerHandle, pmk);
        nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession.getValue()).setPeerHandle(peerHandle).setPmk(pmk).setPort(
                port).setTransportProtocol(transportProtocol).build();
        nsb = new WifiAwareNetworkSpecifier.Builder(publishSession.getValue(), peerHandle).setPmk(
                pmk).setPort(port).setTransportProtocol(transportProtocol).build();

        // validate format
        collector.checkThat("role", WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER,
@@ -1005,9 +1004,9 @@ public class WifiAwareManagerTest {
                (WifiAwareNetworkSpecifier) publishSession.getValue()
                        .createNetworkSpecifierPassphrase(
                        peerHandle, passphrase);
        nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession.getValue()).setPeerHandle(peerHandle).setPskPassphrase(
                passphrase).setPort(port).setTransportProtocol(transportProtocol).build();
        nsb = new WifiAwareNetworkSpecifier.Builder(publishSession.getValue(),
                peerHandle).setPskPassphrase(passphrase).setPort(port).setTransportProtocol(
                transportProtocol).build();

        // validate format
        collector.checkThat("role", WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER,
@@ -1255,16 +1254,15 @@ public class WifiAwareManagerTest {
        // (3) create network specifier
        if (doPmk) {
            if (useBuilder) {
                new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                        publishSession.getValue()).setPeerHandle(peerHandle).setPmk(pmk).build();
                new WifiAwareNetworkSpecifier.Builder(publishSession.getValue(), peerHandle).setPmk(
                        pmk).build();
            } else {
                publishSession.getValue().createNetworkSpecifierPmk(peerHandle, pmk);
            }
        } else {
            if (useBuilder) {
                new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                        publishSession.getValue()).setPeerHandle(peerHandle).setPskPassphrase(
                        passphrase).build();
                new WifiAwareNetworkSpecifier.Builder(publishSession.getValue(),
                        peerHandle).setPskPassphrase(passphrase).build();
            } else {
                publishSession.getValue().createNetworkSpecifierPassphrase(peerHandle, passphrase);
            }
@@ -1353,8 +1351,8 @@ public class WifiAwareManagerTest {

        DiscoverySession publishSession = executeSessionStartup(true);

        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession).setPeerHandle(peerHandle).setPmk(pmk).setPort(port).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                peerHandle).setPmk(pmk).setPort(port).build();
    }

    /**
@@ -1368,8 +1366,8 @@ public class WifiAwareManagerTest {

        DiscoverySession publishSession = executeSessionStartup(true);

        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession).setPeerHandle(peerHandle).setPort(port).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                peerHandle).setPort(port).build();
    }

    /**
@@ -1383,8 +1381,8 @@ public class WifiAwareManagerTest {

        DiscoverySession subscribeSession = executeSessionStartup(false);

        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                subscribeSession).setPeerHandle(peerHandle).setPort(port).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(subscribeSession,
                peerHandle).setPort(port).build();
    }

    /**
@@ -1403,27 +1401,23 @@ public class WifiAwareManagerTest {
        DiscoverySession publishSession = executeSessionStartup(true);

        try {
            WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder()
                            .setDiscoverySession(publishSession).setPeerHandle(peerHandle)
                            .setPmk(pmk).setTransportProtocol(tpNegative).build();
            WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                    peerHandle).setPmk(pmk).setTransportProtocol(tpNegative).build();
            assertTrue("No exception on negative transport protocol!", false);
        } catch (IllegalArgumentException e) {
            // nop - exception is correct!
        }
        try {
            WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder()
                            .setDiscoverySession(publishSession).setPeerHandle(peerHandle)
                            .setPmk(pmk).setTransportProtocol(tpTooLarge).build();
            WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                    peerHandle).setPmk(pmk).setTransportProtocol(tpTooLarge).build();
            assertTrue("No exception on >255 transport protocol!", false);
        } catch (IllegalArgumentException e) {
            // nop - exception is correct!
        }
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder()
                        .setDiscoverySession(publishSession).setPeerHandle(peerHandle)
                        .setPmk(pmk).setTransportProtocol(tpSmallest).build();
        nsb = new WifiAwareNetworkSpecifier.Builder().setDiscoverySession(
                publishSession).setPeerHandle(peerHandle).setPmk(pmk).setTransportProtocol(
                tpLargest).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                peerHandle).setPmk(pmk).setTransportProtocol(tpSmallest).build();
        nsb = new WifiAwareNetworkSpecifier.Builder(publishSession, peerHandle).setPmk(
                pmk).setTransportProtocol(tpLargest).build();
    }

    /**
@@ -1437,9 +1431,8 @@ public class WifiAwareManagerTest {

        DiscoverySession publishSession = executeSessionStartup(true);

        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder()
                        .setDiscoverySession(publishSession).setPeerHandle(peerHandle)
                        .setTransportProtocol(transportProtocol).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(publishSession,
                peerHandle).setTransportProtocol(transportProtocol).build();
    }

    /**
@@ -1453,9 +1446,8 @@ public class WifiAwareManagerTest {

        DiscoverySession subscribeSession = executeSessionStartup(false);

        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder()
                        .setDiscoverySession(subscribeSession).setPeerHandle(peerHandle)
                        .setTransportProtocol(transportProtocol).build();
        WifiAwareNetworkSpecifier nsb = new WifiAwareNetworkSpecifier.Builder(subscribeSession,
                peerHandle).setTransportProtocol(transportProtocol).build();
    }

    /*