summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAswin Sankar <apsankar@google.com>2023-05-16 01:23:37 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-05-16 01:23:37 +0000
commitf359003a4274f93fa956971bbce1de6537454b0c (patch)
tree2fdf42a06a1217ed3ada4bd15c3bd0ddb2108eb7
parent62ef3bdefe24fc76f16b3a654674a644d64aea23 (diff)
parent1bcf45c0b244973b43a2cef379fba6250da460b0 (diff)
downloadIwlan-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.java16
-rw-r--r--test/com/google/android/iwlan/IwlanDataServiceTest.java102
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();