Merge "Adjust the RAT preference when SIM is PIN locked" into 24D1-dev
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index 5c651da..daa4b4e 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -1057,8 +1057,8 @@
+ ", lastNetworkType=" + accessNetworkTypeToString(mLastNetworkType));
if (mLastRegResult != null
- && !SubscriptionManager.isValidSubscriptionId(getSubId())
- && sPreferGeranWhenSimAbsent.contains(mLastRegResult.getCountryIso())) {
+ && sPreferGeranWhenSimAbsent.contains(mLastRegResult.getCountryIso())
+ && !isSimReady()) {
logi("getNextPreferredNetworks preferGeran");
preferredNetworks.add(GERAN);
preferredNetworks.add(UTRAN);
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index 5062b32..f783a12 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -3971,7 +3971,7 @@
}
@Test
- public void testAdjustCsRatPreference() throws Exception {
+ public void testInvalidSubscriptionAdjustCsRatPreference() throws Exception {
doReturn(new String[] {"us"}).when(mResources).getStringArray(
eq(R.array.config_countries_prefer_geran_when_sim_absent));
@@ -3998,6 +3998,34 @@
}
@Test
+ public void testSimNotReadyAdjustCsRatPreference() throws Exception {
+ doReturn(new String[] {"us"}).when(mResources).getStringArray(
+ eq(R.array.config_countries_prefer_geran_when_sim_absent));
+
+ createSelector(SLOT_0_SUB_ID);
+ unsolBarringInfoChanged(false);
+ // SIM state is not ready.
+ doReturn(TelephonyManager.SIM_STATE_PIN_REQUIRED)
+ .when(mTelephonyManager).getSimState(anyInt());
+
+ EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
+ REGISTRATION_STATE_UNKNOWN, 0, false, true, 0, 0, "", "", "us");
+ SelectionAttributes attr = getSelectionAttributes(SLOT_0, SLOT_0_SUB_ID, regResult);
+ mDomainSelector.selectDomain(attr, mTransportSelectorCallback);
+ processAllMessages();
+
+ bindImsServiceUnregistered();
+
+ verifyPsDialed();
+
+ mDomainSelector.reselectDomain(attr);
+ processAllMessages();
+
+ // Verify adjusted RAT preference
+ verifyScanPreferred(DomainSelectionService.SCAN_TYPE_NO_PREFERENCE, GERAN);
+ }
+
+ @Test
public void testNotAdjustCsRatPreferenceCountryNotIdentified() throws Exception {
doReturn(new String[] {"us"}).when(mResources).getStringArray(
eq(R.array.config_countries_prefer_geran_when_sim_absent));