Merge "Add bssid field in the ScanResultInfo class." into rvc-dev am: a8782392d4
Change-Id: I3f58467fc4344019f01a3b417d24387fb0e25e5f
diff --git a/common/moduleutils/src/android/net/shared/ProvisioningConfiguration.java b/common/moduleutils/src/android/net/shared/ProvisioningConfiguration.java
index 17b3ded..c349fa7 100644
--- a/common/moduleutils/src/android/net/shared/ProvisioningConfiguration.java
+++ b/common/moduleutils/src/android/net/shared/ProvisioningConfiguration.java
@@ -231,7 +231,11 @@
* InformationElements fields of ScanResult.
*/
public static class ScanResultInfo {
+ @NonNull
private final String mSsid;
+ @NonNull
+ private final String mBssid;
+ @NonNull
private final List<InformationElement> mInformationElements;
/**
@@ -240,6 +244,7 @@
*/
public static class InformationElement {
private final int mId;
+ @NonNull
private final byte[] mPayload;
public InformationElement(int id, @NonNull ByteBuffer payload) {
@@ -257,6 +262,7 @@
/**
* Get the specific content of the information element.
*/
+ @NonNull
public ByteBuffer getPayload() {
return ByteBuffer.wrap(mPayload).asReadOnlyBuffer();
}
@@ -293,6 +299,7 @@
* Create an instance of {@link InformationElement} based on the contents of the
* specified {@link InformationElementParcelable}.
*/
+ @Nullable
public static InformationElement fromStableParcelable(InformationElementParcelable p) {
if (p == null) return null;
return new InformationElement(p.id,
@@ -300,8 +307,12 @@
}
}
- public ScanResultInfo(String ssid, @NonNull List<InformationElement> informationElements) {
+ public ScanResultInfo(@NonNull String ssid, @NonNull String bssid,
+ @NonNull List<InformationElement> informationElements) {
+ Objects.requireNonNull(ssid, "ssid must not be null.");
+ Objects.requireNonNull(bssid, "bssid must not be null.");
mSsid = ssid;
+ mBssid = bssid;
mInformationElements =
Collections.unmodifiableList(new ArrayList<>(informationElements));
}
@@ -309,13 +320,23 @@
/**
* Get the scanned network name.
*/
+ @NonNull
public String getSsid() {
return mSsid;
}
/**
+ * Get the address of the access point.
+ */
+ @NonNull
+ public String getBssid() {
+ return mBssid;
+ }
+
+ /**
* Get all information elements found in the beacon.
*/
+ @NonNull
public List<InformationElement> getInformationElements() {
return mInformationElements;
}
@@ -324,6 +345,7 @@
public String toString() {
StringBuffer str = new StringBuffer();
str.append("SSID: ").append(mSsid);
+ str.append(", BSSID: ").append(mBssid);
str.append(", Information Elements: {");
for (InformationElement ie : mInformationElements) {
str.append("[").append(ie.toString()).append("]");
@@ -338,12 +360,13 @@
if (!(o instanceof ScanResultInfo)) return false;
ScanResultInfo other = (ScanResultInfo) o;
return Objects.equals(mSsid, other.mSsid)
+ && Objects.equals(mBssid, other.mBssid)
&& mInformationElements.equals(other.mInformationElements);
}
@Override
public int hashCode() {
- return Objects.hash(mSsid, mInformationElements);
+ return Objects.hash(mSsid, mBssid, mInformationElements);
}
/**
@@ -352,6 +375,7 @@
public ScanResultInfoParcelable toStableParcelable() {
final ScanResultInfoParcelable p = new ScanResultInfoParcelable();
p.ssid = mSsid;
+ p.bssid = mBssid;
p.informationElements = toParcelableArray(mInformationElements,
InformationElement::toStableParcelable, InformationElementParcelable.class);
return p;
@@ -366,11 +390,10 @@
final List<InformationElement> ies = new ArrayList<InformationElement>();
ies.addAll(fromParcelableArray(p.informationElements,
InformationElement::fromStableParcelable));
- return new ScanResultInfo(p.ssid, ies);
+ return new ScanResultInfo(p.ssid, p.bssid, ies);
}
- private static byte[] convertToByteArray(final ByteBuffer buffer) {
- if (buffer == null) return null;
+ private static byte[] convertToByteArray(@NonNull final ByteBuffer buffer) {
final byte[] bytes = new byte[buffer.limit()];
final ByteBuffer copy = buffer.asReadOnlyBuffer();
try {
diff --git a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ScanResultInfoParcelable.aidl b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ScanResultInfoParcelable.aidl
index 24a0ca2..f7ac167 100644
--- a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ScanResultInfoParcelable.aidl
+++ b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ScanResultInfoParcelable.aidl
@@ -18,5 +18,6 @@
package android.net;
parcelable ScanResultInfoParcelable {
String ssid;
+ String bssid;
android.net.InformationElementParcelable[] informationElements;
}
diff --git a/common/networkstackclient/src/android/net/ScanResultInfoParcelable.aidl b/common/networkstackclient/src/android/net/ScanResultInfoParcelable.aidl
index f5f101d..a19729b 100644
--- a/common/networkstackclient/src/android/net/ScanResultInfoParcelable.aidl
+++ b/common/networkstackclient/src/android/net/ScanResultInfoParcelable.aidl
@@ -20,5 +20,6 @@
parcelable ScanResultInfoParcelable {
String ssid;
+ String bssid;
InformationElementParcelable[] informationElements;
}
diff --git a/tests/integration/src/android/net/ip/IpClientIntegrationTest.java b/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
index 9f0ef99..ce2efbb 100644
--- a/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
+++ b/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
@@ -234,6 +234,7 @@
(byte) 0x00, (byte) 0x17, (byte) 0xF2
};
private static final byte TEST_VENDOR_SPECIFIC_TYPE = 0x06;
+ private static final String TEST_DEFAULT_BSSID = "00:11:22:33:44:55";
private class Dependencies extends IpClient.Dependencies {
private boolean mIsDhcpLeaseCacheEnabled;
@@ -1578,7 +1579,7 @@
}
private ScanResultInfo makeScanResultInfo(final int id, final String ssid,
- final byte[] oui, final byte type, final byte[] data) {
+ final String bssid, final byte[] oui, final byte type, final byte[] data) {
final ByteBuffer payload = ByteBuffer.allocate(4 + data.length);
payload.put(oui);
payload.put(type);
@@ -1586,13 +1587,14 @@
payload.flip();
final ScanResultInfo.InformationElement ie =
new ScanResultInfo.InformationElement(id /* IE id */, payload);
- return new ScanResultInfo(ssid, Collections.singletonList(ie));
+ return new ScanResultInfo(ssid, bssid, Collections.singletonList(ie));
}
private void doUpstreamHotspotDetectionTest(final int id, final String displayName,
final String ssid, final byte[] oui, final byte type, final byte[] data)
throws Exception {
- final ScanResultInfo info = makeScanResultInfo(id, ssid, oui, type, data);
+ final ScanResultInfo info = makeScanResultInfo(id, ssid, TEST_DEFAULT_BSSID, oui, type,
+ data);
final long currentTime = System.currentTimeMillis();
final List<DhcpPacket> sentPackets = performDhcpHandshake(true /* isSuccessLease */,
TEST_LEASE_DURATION_S, true /* isDhcpLeaseCacheEnabled */,
diff --git a/tests/unit/src/android/net/shared/ProvisioningConfigurationTest.java b/tests/unit/src/android/net/shared/ProvisioningConfigurationTest.java
index e9384c8..8a8ff8f 100644
--- a/tests/unit/src/android/net/shared/ProvisioningConfigurationTest.java
+++ b/tests/unit/src/android/net/shared/ProvisioningConfigurationTest.java
@@ -57,7 +57,8 @@
final ScanResultInfo.InformationElement ie =
new ScanResultInfo.InformationElement(0xdd /* vendor specific IE id */,
ByteBuffer.wrap(payload));
- return new ScanResultInfo(ssid, Collections.singletonList(ie));
+ return new ScanResultInfo(ssid, "01:02:03:04:05:06" /* bssid string */,
+ Collections.singletonList(ie));
}
@Before