diff options
author | Aswin Sankar <apsankar@google.com> | 2023-05-16 01:23:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-05-16 01:23:37 +0000 |
commit | f359003a4274f93fa956971bbce1de6537454b0c (patch) | |
tree | 2fdf42a06a1217ed3ada4bd15c3bd0ddb2108eb7 | |
parent | 62ef3bdefe24fc76f16b3a654674a644d64aea23 (diff) | |
parent | 1bcf45c0b244973b43a2cef379fba6250da460b0 (diff) | |
download | Iwlan-f359003a4274f93fa956971bbce1de6537454b0c.tar.gz |
Update EpdgTunnelManager on cross SIM enable event am: 112b347bd7 am: 1bcf45c0b2
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Iwlan/+/23220314
Change-Id: I46245d598feb74d3ec3b9ab56cd4a8540890439e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | src/com/google/android/iwlan/IwlanDataService.java | 16 | ||||
-rw-r--r-- | test/com/google/android/iwlan/IwlanDataServiceTest.java | 102 |
2 files changed, 88 insertions, 30 deletions
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java index 2f3ed2b..239713d 100644 --- a/src/com/google/android/iwlan/IwlanDataService.java +++ b/src/com/google/android/iwlan/IwlanDataService.java @@ -124,13 +124,6 @@ public class IwlanDataService extends DataService { private static Transport sDefaultDataTransport = Transport.UNSPECIFIED_NETWORK; - enum LinkProtocolType { - UNKNOWN, - IPV4, - IPV6, - IPV4V6 - } - // TODO: see if network monitor callback impl can be shared between dataservice and // networkservice // This callback runs in the same thread as IwlanDataServiceHandler @@ -601,6 +594,7 @@ public class IwlanDataService extends DataService { events.add(IwlanEventListener.CARRIER_CONFIG_UNKNOWN_CARRIER_EVENT); events.add(IwlanEventListener.WIFI_CALLING_ENABLE_EVENT); events.add(IwlanEventListener.WIFI_CALLING_DISABLE_EVENT); + events.add(IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT); events.add(IwlanEventListener.CELLINFO_CHANGED_EVENT); events.add(IwlanEventListener.CALL_STATE_CHANGED_EVENT); IwlanEventListener.getInstance(mContext, slotIndex) @@ -1364,6 +1358,12 @@ public class IwlanDataService extends DataService { iwlanDataServiceProvider.mWfcEnabled = false; break; + case IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT: + iwlanDataServiceProvider = + (IwlanDataServiceProvider) getDataServiceProvider(msg.arg1); + iwlanDataServiceProvider.updateNetwork(sNetwork, sLinkProperties); + break; + case IwlanEventListener.CELLINFO_CHANGED_EVENT: List<CellInfo> cellInfolist = (List<CellInfo>) msg.obj; iwlanDataServiceProvider = @@ -2045,6 +2045,8 @@ public class IwlanDataService extends DataService { return "WIFI_CALLING_ENABLE_EVENT"; case IwlanEventListener.WIFI_CALLING_DISABLE_EVENT: return "WIFI_CALLING_DISABLE_EVENT"; + case IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT: + return "CROSS_SIM_CALLING_ENABLE_EVENT"; case IwlanEventListener.CELLINFO_CHANGED_EVENT: return "CELLINFO_CHANGED_EVENT"; case EVENT_TUNNEL_OPENED_METRICS: diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java index 98fd3eb..6862c97 100644 --- a/test/com/google/android/iwlan/IwlanDataServiceTest.java +++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java @@ -105,6 +105,7 @@ import java.util.concurrent.TimeUnit; public class IwlanDataServiceTest { private static final int DEFAULT_SLOT_INDEX = 0; private static final int DEFAULT_SUB_INDEX = 0; + private static final int INVALID_SUB_INDEX = -1; private static final int LINK_MTU = 1280; private static final String TEST_APN_NAME = "ims"; private static final String IP_ADDRESS = "192.0.2.1"; @@ -291,11 +292,11 @@ public class IwlanDataServiceTest { } private void onSystemDefaultNetworkConnected( - Network network, LinkProperties linkProperties, int transportType) { + Network network, LinkProperties linkProperties, int transportType, int subId) { NetworkCapabilities nc = prepareNetworkCapabilitiesForTest( transportType, - DEFAULT_SUB_INDEX /* unused if transportType is TRANSPORT_WIFI */, + subId /* unused if transportType is TRANSPORT_WIFI */, false /* isVcn */); NetworkCallback networkMonitorCallback = getNetworkMonitorCallback(); networkMonitorCallback.onCapabilitiesChanged(network, nc); @@ -305,7 +306,8 @@ public class IwlanDataServiceTest { private void onSystemDefaultNetworkConnected(int transportType) { Network newNetwork = createMockNetwork(mLinkProperties); - onSystemDefaultNetworkConnected(newNetwork, mLinkProperties, transportType); + onSystemDefaultNetworkConnected( + newNetwork, mLinkProperties, transportType, DEFAULT_SUB_INDEX); } private void onSystemDefaultNetworkLost() { @@ -315,7 +317,7 @@ public class IwlanDataServiceTest { } @Test - public void testWifionConnected() { + public void testWifiOnConnected() { onSystemDefaultNetworkConnected(TRANSPORT_WIFI); assertTrue( mIwlanDataService.isNetworkConnected( @@ -337,22 +339,23 @@ public class IwlanDataServiceTest { } @Test - public void testWifiOnReConnected() { + public void testWifiOnReconnected() { Network newNetwork = createMockNetwork(mLinkProperties); - onSystemDefaultNetworkConnected(newNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + newNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); verify(mMockEpdgTunnelManager, times(1)).updateNetwork(eq(newNetwork), eq(mLinkProperties)); onSystemDefaultNetworkLost(); - - newNetwork = createMockNetwork(mLinkProperties); - onSystemDefaultNetworkConnected(newNetwork, mLinkProperties, TRANSPORT_WIFI); - verify(mMockEpdgTunnelManager, times(1)).updateNetwork(eq(newNetwork), eq(mLinkProperties)); + onSystemDefaultNetworkConnected( + newNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); + verify(mMockEpdgTunnelManager, times(2)).updateNetwork(eq(newNetwork), eq(mLinkProperties)); } @Test public void testOnLinkPropertiesChangedForConnectedNetwork() { NetworkCallback networkCallback = getNetworkMonitorCallback(); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); clearInvocations(mMockEpdgTunnelManager); @@ -368,7 +371,8 @@ public class IwlanDataServiceTest { @Test public void testOnLinkPropertiesChangedForNonConnectedNetwork() { NetworkCallback networkCallback = getNetworkMonitorCallback(); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); clearInvocations(mMockEpdgTunnelManager); @@ -387,7 +391,8 @@ public class IwlanDataServiceTest { NetworkCallback networkCallback = getNetworkMonitorCallback(); mLinkProperties.setLinkAddresses( new ArrayList<>(Collections.singletonList(mMockIPv6LinkAddress))); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); clearInvocations(mMockEpdgTunnelManager); @@ -412,7 +417,8 @@ public class IwlanDataServiceTest { DataProfile dp = buildImsDataProfile(); NetworkCallback networkCallback = getNetworkMonitorCallback(); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); clearInvocations(mMockEpdgTunnelManager); @@ -436,7 +442,7 @@ public class IwlanDataServiceTest { } @Test - public void testNetworkNotConnectedWithCellularAndCrossSimDisabled() + public void testNetworkNotConnectedWithCellularOnSameSubAndCrossSimEnabled() throws InterruptedException { NetworkCapabilities nc = prepareNetworkCapabilitiesForTest( @@ -453,7 +459,8 @@ public class IwlanDataServiceTest { } @Test - public void testCrossSimNetworkConnectedWithTelephonyNetwork() throws InterruptedException { + public void testCrossSimNetworkConnectedWithCellularOnDifferentSub() + throws InterruptedException { NetworkCapabilities nc = prepareNetworkCapabilitiesForTest( TRANSPORT_CELLULAR, DEFAULT_SUB_INDEX + 1, false /* isVcn */); @@ -469,7 +476,8 @@ public class IwlanDataServiceTest { } @Test - public void testCrossSimNetworkConnectedWithVcn() throws InterruptedException { + public void testCrossSimNetworkConnectedWithVcnCellularOnDifferentSub() + throws InterruptedException { NetworkCapabilities nc = prepareNetworkCapabilitiesForTest( TRANSPORT_CELLULAR, DEFAULT_SUB_INDEX + 1, true /* isVcn */); @@ -485,6 +493,48 @@ public class IwlanDataServiceTest { } @Test + public void testOnCrossSimCallingEnable_doNotUpdateTunnelManagerIfCellularDataOnSameSub() + throws Exception { + when(mMockImsMmTelManager.isCrossSimCallingEnabled()).thenReturn(true); + + Network newNetwork = createMockNetwork(mLinkProperties); + onSystemDefaultNetworkConnected( + newNetwork, mLinkProperties, TRANSPORT_CELLULAR, DEFAULT_SUB_INDEX); + + mIwlanDataService + .mIwlanDataServiceHandler + .obtainMessage( + IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT, + DEFAULT_SLOT_INDEX, + 0 /* unused */) + .sendToTarget(); + mTestLooper.dispatchAll(); + verify(mMockEpdgTunnelManager, never()) + .updateNetwork(eq(newNetwork), any(LinkProperties.class)); + } + + @Test + public void testOnCrossSimCallingEnable_updateTunnelManagerIfCellularDataOnDifferentSub() + throws Exception { + when(mMockImsMmTelManager.isCrossSimCallingEnabled()).thenReturn(true); + + Network newNetwork = createMockNetwork(mLinkProperties); + onSystemDefaultNetworkConnected( + newNetwork, mLinkProperties, TRANSPORT_CELLULAR, DEFAULT_SUB_INDEX + 1); + verify(mMockEpdgTunnelManager, times(1)).updateNetwork(eq(newNetwork), eq(mLinkProperties)); + + mIwlanDataService + .mIwlanDataServiceHandler + .obtainMessage( + IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT, + DEFAULT_SLOT_INDEX, + 0 /* unused */) + .sendToTarget(); + mTestLooper.dispatchAll(); + verify(mMockEpdgTunnelManager, times(2)).updateNetwork(eq(newNetwork), eq(mLinkProperties)); + } + + @Test public void testAddDuplicateDataServiceProviderThrows() throws Exception { when(mMockIwlanDataServiceProvider.getSlotIndex()).thenReturn(DEFAULT_SLOT_INDEX); assertThrows( @@ -640,7 +690,8 @@ public class IwlanDataServiceTest { DataProfile dp = buildImsDataProfile(); /* Wifi is connected */ - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); mSpyIwlanDataServiceProvider.setupDataCall( AccessNetworkType.IWLAN, /* AccessNetworkType */ @@ -678,7 +729,8 @@ public class IwlanDataServiceTest { DataProfile dp = buildImsDataProfile(); /* Wifi is connected */ - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); mSpyIwlanDataServiceProvider.setupDataCall( AccessNetworkType.IWLAN, /* AccessNetworkType */ @@ -1131,7 +1183,8 @@ public class IwlanDataServiceTest { public void testDnsPrefetching() throws Exception { NetworkCallback networkCallback = getNetworkMonitorCallback(); /* Wifi is connected */ - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); networkCallback.onLinkPropertiesChanged(mMockNetwork, mLinkProperties); mIwlanDataService @@ -1340,7 +1393,8 @@ public class IwlanDataServiceTest { public void testIwlanTunnelStatsFailureCounts() { DataProfile dp = buildImsDataProfile(); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); when(ErrorPolicyManager.getInstance(eq(mMockContext), eq(DEFAULT_SLOT_INDEX))) .thenReturn(mMockErrorPolicyManager); @@ -1366,7 +1420,8 @@ public class IwlanDataServiceTest { when(mMockErrorPolicyManager.getDataFailCause(eq(TEST_APN_NAME))) .thenReturn(DataFailCause.ERROR_UNSPECIFIED); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); long count = 3L; for (int i = 0; i < count; i++) { @@ -1387,7 +1442,8 @@ public class IwlanDataServiceTest { when(calendar.getTime()).thenAnswer(i -> new Date(mMockedCalendarTime)); mSpyIwlanDataServiceProvider.setCalendar(calendar); - onSystemDefaultNetworkConnected(mMockNetwork, mLinkProperties, TRANSPORT_WIFI); + onSystemDefaultNetworkConnected( + mMockNetwork, mLinkProperties, TRANSPORT_WIFI, INVALID_SUB_INDEX); LongSummaryStatistics tunnelSetupSuccessStats = new LongSummaryStatistics(); LongSummaryStatistics tunnelUpStats = new LongSummaryStatistics(); |