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));