Loading packages/SettingsLib/src/com/android/settingslib/Utils.java +5 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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? */ Loading packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +2 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java +15 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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()); Loading Loading @@ -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) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java +32 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"; Loading @@ -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); } } Loading Loading @@ -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) { Loading @@ -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) { Loading Loading
packages/SettingsLib/src/com/android/settingslib/Utils.java +5 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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? */ Loading
packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +2 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading
packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java +15 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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()); Loading Loading @@ -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) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerWifiTest.java +32 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"; Loading @@ -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); } } Loading Loading @@ -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) { Loading @@ -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) { Loading