diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-05 02:48:34 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-05 02:48:34 +0000 |
commit | a9ff1ec7cdefa1167605a3b509ed0d7aa4bd2d4e (patch) | |
tree | 8ea0153a4828ec621d4c867ca70945c16fc9dc2e | |
parent | 0c6e1b35c1a2bb05d537704ce7311c2c4b81b129 (diff) | |
parent | 0bf2f4f5f61c515749d7c2bbb578d47e42188e92 (diff) | |
download | telephony-android13-d1-s2-release.tar.gz |
Merge cherrypicks of [19509234] into tm-d1-release.android-13.0.0_r9android-13.0.0_r10android13-d1-s2-releaseandroid13-d1-s1-release
Change-Id: I4670959d4341b21c6f7a766ce8416b67800e2e13
-rw-r--r-- | src/java/com/android/internal/telephony/data/DataNetworkController.java | 6 | ||||
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java | 50 |
2 files changed, 53 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataNetworkController.java b/src/java/com/android/internal/telephony/data/DataNetworkController.java index ad6a06714e..729c97ea26 100644 --- a/src/java/com/android/internal/telephony/data/DataNetworkController.java +++ b/src/java/com/android/internal/telephony/data/DataNetworkController.java @@ -710,9 +710,9 @@ public class DataNetworkController extends Handler { + "\"" + ruleString + "\""); } - if (source.contains(AccessNetworkType.UNKNOWN)) { - throw new IllegalArgumentException("Source access networks contains unknown. " - + "\"" + ruleString + "\""); + if (source.contains(AccessNetworkType.UNKNOWN) && type != RULE_TYPE_DISALLOWED) { + throw new IllegalArgumentException("Unknown access network can be only specified in" + + " the disallowed rule. \"" + ruleString + "\""); } if (target.contains(AccessNetworkType.UNKNOWN)) { diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java index c0691acda1..2db1560001 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java @@ -1585,6 +1585,16 @@ public class DataNetworkControllerTest extends TelephonyTest { NetworkCapabilities.NET_CAPABILITY_IMS, NetworkCapabilities.NET_CAPABILITY_EIMS); assertThat(handoverRule.isOnlyForRoaming).isTrue(); + handoverRule = new HandoverRule("source=EUTRAN|NGRAN|IWLAN|UNKNOWN, " + + "target=EUTRAN|NGRAN|IWLAN, type=disallowed, capabilities = IMS|EIMS"); + assertThat(handoverRule.sourceAccessNetworks).containsExactly(AccessNetworkType.EUTRAN, + AccessNetworkType.NGRAN, AccessNetworkType.IWLAN, AccessNetworkType.UNKNOWN); + assertThat(handoverRule.targetAccessNetworks).containsExactly(AccessNetworkType.EUTRAN, + AccessNetworkType.NGRAN, AccessNetworkType.IWLAN); + assertThat(handoverRule.type).isEqualTo(HandoverRule.RULE_TYPE_DISALLOWED); + assertThat(handoverRule.networkCapabilities).containsExactly( + NetworkCapabilities.NET_CAPABILITY_IMS, NetworkCapabilities.NET_CAPABILITY_EIMS); + assertThrows(IllegalArgumentException.class, () -> new HandoverRule("V2hhdCBUaGUgRnVjayBpcyB0aGlzIQ==")); @@ -1595,6 +1605,14 @@ public class DataNetworkControllerTest extends TelephonyTest { () -> new HandoverRule("source=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, type=allowed")); assertThrows(IllegalArgumentException.class, + () -> new HandoverRule("source=GERAN, target=UNKNOWN, type=disallowed, " + + "capabilities=IMS")); + + assertThrows(IllegalArgumentException.class, + () -> new HandoverRule("source=UNKNOWN, target=IWLAN, type=allowed, " + + "capabilities=IMS")); + + assertThrows(IllegalArgumentException.class, () -> new HandoverRule("source=GERAN, target=IWLAN, type=wtf")); assertThrows(IllegalArgumentException.class, @@ -2852,6 +2870,38 @@ public class DataNetworkControllerTest extends TelephonyTest { } @Test + public void testHandoverDataNetworkSourceOos() throws Exception { + testSetupImsDataNetwork(); + // Configured handover is allowed from OOS to 4G/5G/IWLAN. + mCarrierConfig.putStringArray( + CarrierConfigManager.KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY, + new String[]{ + "source=EUTRAN|NGRAN|IWLAN|UNKNOWN, target=EUTRAN|NGRAN|IWLAN, " + + "type=disallowed, capabilities=IMS|EIMS|MMS|XCAP|CBS" + }); + carrierConfigChanged(); + serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE, + NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING); + + updateTransport(NetworkCapabilities.NET_CAPABILITY_IMS, + AccessNetworkConstants.TRANSPORT_TYPE_WLAN); + + // Verify IMS network was torn down on source first. + verify(mMockedWwanDataServiceManager).deactivateDataCall(anyInt(), + eq(DataService.REQUEST_REASON_NORMAL), any(Message.class)); + + // Verify that IWLAN is brought up again on IWLAN. + verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(), + any(DataProfile.class), anyBoolean(), anyBoolean(), + eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(), + any(Message.class)); + + DataNetwork dataNetwork = getDataNetworks().get(0); + assertThat(dataNetwork.getTransport()).isEqualTo( + AccessNetworkConstants.TRANSPORT_TYPE_WLAN); + } + + @Test public void testHandoverDataNetworkNonVops() throws Exception { ServiceState ss = new ServiceState(); |