diff options
| author | 2024-09-26 16:51:19 -0700 | |
|---|---|---|
| committer | 2024-10-02 22:34:58 +0000 | |
| commit | 0f4900e5b2aaf56f15da4a3e4e6df1710000f437 (patch) | |
| tree | c964a110ea4c52df59d9c0f648d1fdecdd29a4f7 | |
| parent | 39de4cd47d10524178853339b2f64d874eed43cf (diff) | |
Remove hidden API usages backed by VcnTransportInfo
VCN will be moved to a mainline module and #getWifiInfo will no longer
be accessible. Also VcnTransportInfo will be a final class. This
patch updates SystemUI to use VcnUtils to get the WifiInfo and use
a Builder to construct a VcnTransportInfo instance for testing.
Bug: 369710077
Test: atest SystemUITests:NetworkControllerWifiTest
Flag: Exempt pure refactoring
Change-Id: I66b71138fc0f2a746264aea551dfc7fef2f21526
5 files changed, 59 insertions, 27 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index c2506d353d14..307e5875affb 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -30,9 +30,10 @@ import android.hardware.usb.flags.Flags; import android.icu.text.NumberFormat; import android.location.LocationManager; import android.media.AudioManager; +import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.TetheringManager; -import android.net.vcn.VcnTransportInfo; +import android.net.vcn.VcnUtils; import android.net.wifi.WifiInfo; import android.os.BatteryManager; import android.os.Build; @@ -739,14 +740,9 @@ public class Utils { * @param networkCapabilities NetworkCapabilities of the network. */ @Nullable - public static WifiInfo tryGetWifiInfoForVcn(NetworkCapabilities networkCapabilities) { - if (networkCapabilities.getTransportInfo() == null - || !(networkCapabilities.getTransportInfo() instanceof VcnTransportInfo)) { - return null; - } - VcnTransportInfo vcnTransportInfo = - (VcnTransportInfo) networkCapabilities.getTransportInfo(); - return vcnTransportInfo.getWifiInfo(); + public static WifiInfo tryGetWifiInfoForVcn( + ConnectivityManager connectivityMgr, NetworkCapabilities networkCapabilities) { + return VcnUtils.getWifiInfoFromVcnCaps(connectivityMgr, networkCapabilities); } /** Whether there is any incompatible chargers in the current UsbPort? */ diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java index 015356e013b7..cea3d17f116d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java @@ -30,6 +30,7 @@ import android.net.NetworkScoreManager; import android.net.ScoredNetwork; import android.net.TransportInfo; import android.net.vcn.VcnTransportInfo; +import android.net.vcn.VcnUtils; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiNetworkScoreCache; @@ -394,10 +395,7 @@ public class WifiStatusTracker { TransportInfo transportInfo = networkCapabilities.getTransportInfo(); if (transportInfo instanceof VcnTransportInfo) { - // This VcnTransportInfo logic is copied from - // [com.android.settingslib.Utils.tryGetWifiInfoForVcn]. It's copied instead of - // re-used because it makes the logic here clearer. - return ((VcnTransportInfo) transportInfo).getWifiInfo(); + return VcnUtils.getWifiInfoFromVcnCaps(mConnectivityManager, networkCapabilities); } else if (transportInfo instanceof WifiInfo) { return (WifiInfo) transportInfo; } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java index e3c47a43aad4..321593b6ada4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java @@ -596,7 +596,8 @@ public class NetworkControllerImpl extends BroadcastReceiver // NetworkCapabilities, but we need to convert it into TRANSPORT_WIFI in order to // distinguish it from VCN over Cellular. if (transportTypes[i] == NetworkCapabilities.TRANSPORT_CELLULAR - && Utils.tryGetWifiInfoForVcn(networkCapabilities) != null) { + && Utils.tryGetWifiInfoForVcn(mConnectivityManager, networkCapabilities) + != null) { transportTypes[i] = NetworkCapabilities.TRANSPORT_WIFI; break; } @@ -1112,7 +1113,9 @@ public class NetworkControllerImpl extends BroadcastReceiver continue; } if (transportType == NetworkCapabilities.TRANSPORT_CELLULAR - && Utils.tryGetWifiInfoForVcn(mLastDefaultNetworkCapabilities) != null) { + && Utils.tryGetWifiInfoForVcn( + mConnectivityManager, mLastDefaultNetworkCapabilities) + != null) { mConnectedTransports.set(NetworkCapabilities.TRANSPORT_WIFI); if (mLastDefaultNetworkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED)) { mValidatedTransports.set(NetworkCapabilities.TRANSPORT_WIFI); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java index 98315d0ca3c9..83dbfa0682ad 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java @@ -95,6 +95,7 @@ import org.mockito.MockitoSession; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class NetworkControllerBaseTest extends SysuiTestCase { @@ -332,10 +333,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } public void setConnectivityViaCallbackInNetworkControllerForVcn( - int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) { + int networkType, + boolean validated, + boolean isConnected, + VcnTransportInfo info, + Network underlyingNetwork) { final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(mNetCapabilities); - builder.setTransportInfo(info); + builder.setTransportInfo(info) + .setUnderlyingNetworks(Collections.singletonList(underlyingNetwork)); setConnectivityCommon(builder, networkType, validated, isConnected); mDefaultCallbackInNetworkController.onCapabilitiesChanged( mock(Network.class), builder.build()); @@ -385,10 +391,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } public void setConnectivityViaCallbackInWifiTrackerForVcn( - int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) { + int networkType, + boolean validated, + boolean isConnected, + VcnTransportInfo info, + Network underlyingNetwork) { final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(mNetCapabilities); - builder.setTransportInfo(info); + builder.setTransportInfo(info) + .setUnderlyingNetworks(Collections.singletonList(underlyingNetwork)); setConnectivityCommon(builder, networkType, validated, isConnected); if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) { if (isConnected) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java index 6c80a97625a7..6febb91db992 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.connectivity; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; +import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static junit.framework.Assert.assertEquals; @@ -250,6 +251,17 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { assertEquals(testSsid, mNetworkController.mWifiSignalController.mCurrentState.ssid); } + private Network newWifiNetwork(WifiInfo wifiInfo) { + final Network network = mock(Network.class); + final NetworkCapabilities wifiCaps = + new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_WIFI) + .setTransportInfo(wifiInfo) + .build(); + when(mMockCm.getNetworkCapabilities(network)).thenReturn(wifiCaps); + return network; + } + @Test public void testVcnWithUnderlyingWifi() { String testSsid = "Test VCN SSID"; @@ -266,11 +278,19 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { setWifiLevelForVcn(testLevel); setConnectivityViaCallbackInNetworkControllerForVcn( - NetworkCapabilities.TRANSPORT_CELLULAR, true, true, mVcnTransportInfo); + NetworkCapabilities.TRANSPORT_CELLULAR, + true, + true, + mVcnTransportInfo, + newWifiNetwork(mWifiInfo)); verifyLastMobileDataIndicatorsForVcn(true, testLevel, TelephonyIcons.ICON_CWF, true); setConnectivityViaCallbackInNetworkControllerForVcn( - NetworkCapabilities.TRANSPORT_CELLULAR, false, true, mVcnTransportInfo); + NetworkCapabilities.TRANSPORT_CELLULAR, + false, + true, + mVcnTransportInfo, + newWifiNetwork(mWifiInfo)); verifyLastMobileDataIndicatorsForVcn(true, testLevel, TelephonyIcons.ICON_CWF, false); } } @@ -391,13 +411,15 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { } protected void setWifiLevelForVcn(int level) { - when(mVcnTransportInfo.getWifiInfo()).thenReturn(mWifiInfo); - when(mVcnTransportInfo.makeCopy(anyLong())).thenReturn(mVcnTransportInfo); when(mWifiInfo.getRssi()).thenReturn(calculateRssiForLevel(level)); when(mWifiInfo.isCarrierMerged()).thenReturn(true); when(mWifiInfo.getSubscriptionId()).thenReturn(1); setConnectivityViaCallbackInWifiTrackerForVcn( - NetworkCapabilities.TRANSPORT_CELLULAR, false, true, mVcnTransportInfo); + NetworkCapabilities.TRANSPORT_CELLULAR, + false, + true, + mVcnTransportInfo, + newWifiNetwork(mWifiInfo)); } private int calculateRssiForLevel(int level) { @@ -409,13 +431,15 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { } protected void setWifiStateForVcn(boolean connected, String ssid) { - when(mVcnTransportInfo.getWifiInfo()).thenReturn(mWifiInfo); - when(mVcnTransportInfo.makeCopy(anyLong())).thenReturn(mVcnTransportInfo); when(mWifiInfo.getSSID()).thenReturn(ssid); when(mWifiInfo.isCarrierMerged()).thenReturn(true); when(mWifiInfo.getSubscriptionId()).thenReturn(1); setConnectivityViaCallbackInWifiTrackerForVcn( - NetworkCapabilities.TRANSPORT_CELLULAR, false, connected, mVcnTransportInfo); + NetworkCapabilities.TRANSPORT_CELLULAR, + false, + connected, + mVcnTransportInfo, + newWifiNetwork(mWifiInfo)); } protected void verifyLastQsDataDirection(boolean in, boolean out) { |