SubscriptionController: properly detect when MSIM has 1 SIM

We cannot use sSlotIdxToSubId to determine when to turn the SIM dialog
off, because when subscription information gets reloaded (on data change
for instance), we may add one, then disable SMS prompt, then add the
other, which is incorrect. Query the total number of SIMs from the info
updater.

Ticket: CYNGNOS-2185, CYNGNOS-2570

Change-Id: Iab1225c83b508e055d8a8de55c1e21e2aa153ca5
Signed-off-by: Roman Birg <roman@cyngn.com>
diff --git a/src/java/com/android/internal/telephony/PhoneFactory.java b/src/java/com/android/internal/telephony/PhoneFactory.java
index 3de9c8a..1524386 100644
--- a/src/java/com/android/internal/telephony/PhoneFactory.java
+++ b/src/java/com/android/internal/telephony/PhoneFactory.java
@@ -516,4 +516,8 @@
         }
         pw.decreaseIndent();
     }
+
+    public static SubscriptionInfoUpdater getSubscriptionInfoUpdater() {
+        return sSubInfoRecordUpdater;
+    }
 }
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 7565d98..15dfcb0 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -835,7 +835,7 @@
 
             if (DBG) logdl("[addSubInfoRecord]- info size=" + sSlotIdxToSubId.size());
 
-            if (sSlotIdxToSubId.size() <= 1) {
+            if (PhoneFactory.getSubscriptionInfoUpdater().getInsertedSimCount() <= 1) {
                 PhoneFactory.setSMSPromptEnabled(false);
             }
 
diff --git a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
index 6c14e95..1bc3e90 100755
--- a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
+++ b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
@@ -116,6 +116,7 @@
     private int mCurrentlyActiveUserId;
     private CarrierServiceBindHelper mCarrierServiceBindHelper;
     private boolean mIsShutdown;
+    private int mCurrentSimCount;
 
     public SubscriptionInfoUpdater(Context context, Phone[] phone, CommandsInterface[] ci) {
         logd("Constructor invoked");
@@ -677,6 +678,8 @@
             }
         }
 
+        mCurrentSimCount = insertedSimCount;
+
         if (!mIsShutdown && insertedSimCount == 1) {
             SubscriptionInfo sir = subInfos.get(0);
             int subId = sir.getSubscriptionId();
@@ -693,6 +696,10 @@
         logd("updateSubscriptionInfoByIccId:- SsubscriptionInfo update complete");
     }
 
+    protected int getInsertedSimCount() {
+        return mCurrentSimCount;
+    }
+
     private boolean isNewSim(String iccId, String[] oldIccId) {
         boolean newSim = true;
         for(int i = 0; i < PROJECT_SIM_NUM; i++) {