ClientModeImpl: Attach WifiInfo in NetworkCapabilities
Bug: 162602799
Test: atest com.android.server.wifi
Change-Id: I255938df90d4f76be26932c18f70933e259faedc
Merged-In: I255938df90d4f76be26932c18f70933e259faedc
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 8c05f7a..1969023 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -2459,6 +2459,7 @@
*/
int newSignalLevel = RssiUtil.calculateSignalLevel(mContext, newRssi);
if (newSignalLevel != mLastSignalLevel) {
+ // TODO (b/162602799): Do we need to change the update frequency?
updateCapabilities();
sendRssiChangeBroadcast(newRssi);
}
@@ -4485,6 +4486,12 @@
if (!mWifiInfo.getSSID().equals(WifiManager.UNKNOWN_SSID)) {
builder.setSsid(mWifiInfo.getSSID());
}
+
+ // Only send out WifiInfo in >= Android S devices.
+ if (SdkLevel.isAtLeastS()) {
+ builder.setTransportInfo(new WifiInfo(mWifiInfo));
+ }
+
Pair<Integer, String> specificRequestUidAndPackageName =
mNetworkFactory.getSpecificNetworkRequestUidAndPackageName(
currentWifiConfiguration);
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index d4af7ec..f72697a 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -124,6 +124,7 @@
import com.android.internal.util.AsyncChannel;
import com.android.internal.util.IState;
import com.android.internal.util.StateMachine;
+import com.android.modules.utils.build.SdkLevel;
import com.android.server.wifi.hotspot2.NetworkDetail;
import com.android.server.wifi.hotspot2.PasspointManager;
import com.android.server.wifi.hotspot2.PasspointProvisioningTestUtil;
@@ -1039,6 +1040,16 @@
assertEquals(sFreq, wifiInfo.getFrequency());
assertTrue(sWifiSsid.equals(wifiInfo.getWifiSsid()));
assertNull(wifiInfo.getPasspointProviderFriendlyName());
+ expectRegisterNetworkAgent((na) -> {
+ }, (nc) -> {
+ if (SdkLevel.isAtLeastS()) {
+ WifiInfo wifiInfoFromTi = (WifiInfo) nc.getTransportInfo();
+ assertEquals(sBSSID, wifiInfoFromTi.getBSSID());
+ assertEquals(sFreq, wifiInfoFromTi.getFrequency());
+ assertTrue(sWifiSsid.equals(wifiInfoFromTi.getWifiSsid()));
+ assertNull(wifiInfoFromTi.getPasspointProviderFriendlyName());
+ }
+ });
// Ensure the connection stats for the network is updated.
verify(mWifiConfigManager).updateNetworkAfterConnect(FRAMEWORK_NETWORK_ID);
verify(mWifiConfigManager).updateRandomizedMacExpireTime(any(), anyLong());
@@ -2424,7 +2435,6 @@
WifiInfo connectionInfo = mCmi.syncRequestConnectionInfo();
- assertNotEquals(wifiInfo, connectionInfo);
assertEquals(wifiInfo.getSSID(), connectionInfo.getSSID());
assertEquals(wifiInfo.getBSSID(), connectionInfo.getBSSID());
assertEquals(wifiInfo.getMacAddress(), connectionInfo.getMacAddress());