Fix preferred network list of network scan
Fix the case that NR is not included in the preferred network list.
Bug: 327597390
Test: atest EmergencyCallDomainSelectorTest
Change-Id: Ic430347cd908460a40a1f9af7da2a878af4e58f0
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index 53b3659..8612913 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -890,10 +890,13 @@
} else if (csPreferred || mLastNetworkType == EUTRAN || mLastNetworkType == NGRAN) {
if (!csPreferred && mLastNetworkType == NGRAN && mLtePreferredAfterNrFailure) {
// LTE is preferred after dialing over NR failed.
- List<Integer> imsRats = getImsNetworkTypeConfiguration();
- imsRats.remove(Integer.valueOf(NGRAN));
- preferredNetworks = generatePreferredNetworks(imsRats,
+ preferredNetworks = generatePreferredNetworks(getImsNetworkTypeConfiguration(),
getCsNetworkTypeConfiguration());
+ // Make NGRAN have the lowest priority
+ if (preferredNetworks.contains(NGRAN)) {
+ preferredNetworks.remove(Integer.valueOf(NGRAN));
+ preferredNetworks.add(NGRAN);
+ }
} else if (csPriority > NOT_SUPPORTED) {
// PS tried, generate the list with CS preferred.
preferredNetworks = generatePreferredNetworks(getCsNetworkTypeConfiguration(),
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index 50085e7..1bdcd52 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -2868,10 +2868,11 @@
verify(mWwanSelectorCallback, times(1)).onRequestEmergencyNetworkScan(
any(), anyInt(), anyBoolean(), any(), any());
- assertEquals(3, mAccessNetwork.size());
+ assertEquals(4, mAccessNetwork.size());
assertEquals(EUTRAN, (int) mAccessNetwork.get(0));
assertEquals(UTRAN, (int) mAccessNetwork.get(1));
assertEquals(GERAN, (int) mAccessNetwork.get(2));
+ assertEquals(NGRAN, (int) mAccessNetwork.get(3));
}
@Test