Merge changes from topic "wifi_transport_info_stage_1" am: e126101fe6 am: 58c94eda42

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1508601

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Idec02d9238d199c451ef6522670ba0595b39ef8c
This commit is contained in:
Roshan Pius
2020-12-23 20:46:51 +00:00
committed by Automerger Merge Worker
2 changed files with 167 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import com.android.modules.utils.build.SdkLevel;
import com.android.net.module.util.Inet4AddressUtils;
import java.net.Inet4Address;
@@ -35,6 +36,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.EnumMap;
import java.util.Locale;
import java.util.Objects;
/**
* Describes the state of any Wi-Fi connection that is active or
@@ -49,7 +51,6 @@ import java.util.Locale;
* {@link #getPasspointProviderFriendlyName()} will return null.
*/
public class WifiInfo implements TransportInfo, Parcelable {
// TODO(b/162602799): Implement equals/hahscode methods.
private static final String TAG = "WifiInfo";
/**
* This is the map described in the Javadoc comment above. The positions
@@ -1058,4 +1059,88 @@ public class WifiInfo implements TransportInfo, Parcelable {
public @Nullable String getPasspointUniqueId() {
return mPasspointUniqueId;
}
@Override
public boolean equals(Object that) {
if (this == that) return true;
// Potential API behavior change, so don't change behavior on older devices.
if (!SdkLevel.isAtLeastS()) return false;
if (!(that instanceof WifiInfo)) return false;
WifiInfo thatWifiInfo = (WifiInfo) that;
return Objects.equals(mWifiSsid, thatWifiInfo.mWifiSsid)
&& Objects.equals(mBSSID, thatWifiInfo.mBSSID)
&& Objects.equals(mNetworkId, thatWifiInfo.mNetworkId)
&& Objects.equals(mRssi, thatWifiInfo.mRssi)
&& Objects.equals(mSupplicantState, thatWifiInfo.mSupplicantState)
&& Objects.equals(mLinkSpeed, thatWifiInfo.mLinkSpeed)
&& Objects.equals(mTxLinkSpeed, thatWifiInfo.mTxLinkSpeed)
&& Objects.equals(mRxLinkSpeed, thatWifiInfo.mRxLinkSpeed)
&& Objects.equals(mFrequency, thatWifiInfo.mFrequency)
&& Objects.equals(mIpAddress, thatWifiInfo.mIpAddress)
&& Objects.equals(mMacAddress, thatWifiInfo.mMacAddress)
&& Objects.equals(mMeteredHint, thatWifiInfo.mMeteredHint)
&& Objects.equals(mEphemeral, thatWifiInfo.mEphemeral)
&& Objects.equals(mTrusted, thatWifiInfo.mTrusted)
&& Objects.equals(mRequestingPackageName, thatWifiInfo.mRequestingPackageName)
&& Objects.equals(mOsuAp, thatWifiInfo.mOsuAp)
&& Objects.equals(mFqdn, thatWifiInfo.mFqdn)
&& Objects.equals(mProviderFriendlyName, thatWifiInfo.mProviderFriendlyName)
&& Objects.equals(txBad, thatWifiInfo.txBad)
&& Objects.equals(txRetries, thatWifiInfo.txRetries)
&& Objects.equals(txSuccess, thatWifiInfo.txSuccess)
&& Objects.equals(rxSuccess, thatWifiInfo.rxSuccess)
&& Objects.equals(mLostTxPacketsPerSecond, thatWifiInfo.mLostTxPacketsPerSecond)
&& Objects.equals(mTxRetriedTxPacketsPerSecond,
thatWifiInfo.mTxRetriedTxPacketsPerSecond)
&& Objects.equals(mSuccessfulTxPacketsPerSecond,
thatWifiInfo.mSuccessfulTxPacketsPerSecond)
&& Objects.equals(mSuccessfulRxPacketsPerSecond,
thatWifiInfo.mSuccessfulRxPacketsPerSecond)
&& Objects.equals(score, thatWifiInfo.score)
&& Objects.equals(mWifiStandard, thatWifiInfo.mWifiStandard)
&& Objects.equals(mMaxSupportedTxLinkSpeed, thatWifiInfo.mMaxSupportedTxLinkSpeed)
&& Objects.equals(mMaxSupportedRxLinkSpeed, thatWifiInfo.mMaxSupportedRxLinkSpeed)
&& Objects.equals(mPasspointUniqueId, thatWifiInfo.mPasspointUniqueId);
}
@Override
public int hashCode() {
// Potential API behavior change, so don't change behavior on older devices.
if (!SdkLevel.isAtLeastS()) return System.identityHashCode(this);
return Objects.hash(mWifiSsid,
mBSSID,
mNetworkId,
mRssi,
mSupplicantState,
mLinkSpeed,
mTxLinkSpeed,
mRxLinkSpeed,
mFrequency,
mIpAddress,
mMacAddress,
mMeteredHint,
mEphemeral,
mTrusted,
mRequestingPackageName,
mOsuAp,
mFqdn,
mProviderFriendlyName,
txBad,
txRetries,
txSuccess,
rxSuccess,
mLostTxPacketsPerSecond,
mTxRetriedTxPacketsPerSecond,
mSuccessfulTxPacketsPerSecond,
mSuccessfulRxPacketsPerSecond,
score,
mWifiStandard,
mMaxSupportedTxLinkSpeed,
mMaxSupportedRxLinkSpeed,
mPasspointUniqueId);
}
}

View File

@@ -17,6 +17,7 @@
package android.net.wifi;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
@@ -25,6 +26,8 @@ import android.os.Parcel;
import androidx.test.filters.SmallTest;
import com.android.modules.utils.build.SdkLevel;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
@@ -148,4 +151,82 @@ public class WifiInfoTest {
assertEquals(TEST_RSSI, info2.getRssi());
assertEquals(TEST_NETWORK_ID2, info2.getNetworkId());
}
@Test
public void testWifiInfoEquals() throws Exception {
WifiInfo.Builder builder = new WifiInfo.Builder()
.setSsid(TEST_SSID.getBytes(StandardCharsets.UTF_8))
.setBssid(TEST_BSSID)
.setRssi(TEST_RSSI)
.setNetworkId(TEST_NETWORK_ID);
WifiInfo info1 = builder.build();
WifiInfo info2 = builder.build();
if (SdkLevel.isAtLeastS()) {
assertEquals(info1, info2);
} else {
assertNotEquals(info1, info2);
}
info1.setTrusted(false);
// Same behavior pre-S & post-S.
assertNotEquals(info1, info2);
info2.setTrusted(false);
if (SdkLevel.isAtLeastS()) {
assertEquals(info1, info2);
} else {
assertNotEquals(info1, info2);
}
info1.setSSID(WifiSsid.createFromHex(null));
// Same behavior pre-S & post-S.
assertNotEquals(info1, info2);
info2.setSSID(WifiSsid.createFromHex(null));
if (SdkLevel.isAtLeastS()) {
assertEquals(info1, info2);
} else {
assertNotEquals(info1, info2);
}
}
@Test
public void testWifiInfoHashcode() throws Exception {
WifiInfo.Builder builder = new WifiInfo.Builder()
.setSsid(TEST_SSID.getBytes(StandardCharsets.UTF_8))
.setBssid(TEST_BSSID)
.setRssi(TEST_RSSI)
.setNetworkId(TEST_NETWORK_ID);
WifiInfo info1 = builder.build();
WifiInfo info2 = builder.build();
if (SdkLevel.isAtLeastS()) {
assertEquals(info1.hashCode(), info2.hashCode());
} else {
assertNotEquals(info1.hashCode(), info2.hashCode());
}
info1.setTrusted(false);
// Same behavior pre-S & post-S.
assertNotEquals(info1.hashCode(), info2.hashCode());
info2.setTrusted(false);
if (SdkLevel.isAtLeastS()) {
assertEquals(info1.hashCode(), info2.hashCode());
} else {
assertNotEquals(info1.hashCode(), info2.hashCode());
}
info1.setSSID(WifiSsid.createFromHex(null));
// Same behavior pre-S & post-S.
assertNotEquals(info1.hashCode(), info2.hashCode());
info2.setSSID(WifiSsid.createFromHex(null));
if (SdkLevel.isAtLeastS()) {
assertEquals(info1.hashCode(), info2.hashCode());
} else {
assertNotEquals(info1.hashCode(), info2.hashCode());
}
}
}