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

This commit is contained in:
Etan Cohen
2019-03-21 15:54:02 +00:00
committed by Android (Google) Code Review
3 changed files with 51 additions and 81 deletions

View File

@@ -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 {

View File

@@ -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,

View File

@@ -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();
}
/*