Merge "Added the bug number to the flag" into main
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 0f56973..7e9f3ff 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -238,7 +238,7 @@
     private static final int EVENT_SATELLITE_CONFIG_DATA_UPDATED = 40;
     private static final int EVENT_SATELLITE_SUPPORTED_STATE_CHANGED = 41;
     private static final int EVENT_NOTIFY_NTN_HYSTERESIS_TIMED_OUT = 42;
-    private static final int EVENT_EVALUATE_ESOS_PROFILES_PRIORITIZATION = 43;
+    private static final int CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION = 43;
     private static final int CMD_UPDATE_PROVISION_SATELLITE_TOKEN = 44;
     private static final int EVENT_UPDATE_PROVISION_SATELLITE_TOKEN_DONE = 45;
     private static final int EVENT_NOTIFY_NTN_ELIGIBILITY_HYSTERESIS_TIMED_OUT = 46;
@@ -519,6 +519,17 @@
     private final Object mIsWifiConnectedLock = new Object();
     @GuardedBy("mIsWifiConnectedLock")
     private boolean mIsWifiConnected = false;
+    private BroadcastReceiver
+            mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    if (intent.getAction().equals(
+                            SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED)) {
+                        plogd("Default SMS subscription changed");
+                        sendRequestAsync(CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION, null, null);
+                    }
+                }
+            };
 
     /**
      * @return The singleton instance of SatelliteController.
@@ -651,7 +662,7 @@
                 getDemoPointingNotAlignedDurationMillisFromResources();
         mSatelliteEmergencyModeDurationMillis =
                 getSatelliteEmergencyModeDurationFromOverlayConfig(context);
-        sendMessageDelayed(obtainMessage(EVENT_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
+        sendMessageDelayed(obtainMessage(CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
                 /* delayMillis= */ TimeUnit.MINUTES.toMillis(1));
 
         SubscriptionManager subscriptionManager = mContext.getSystemService(
@@ -661,6 +672,7 @@
             subscriptionManager.addOnSubscriptionsChangedListener(
                     new HandlerExecutor(new Handler(looper)), mSubscriptionsChangedListener);
         }
+        registerDefaultSmsSubscriptionChangedBroadcastReceiver();
     }
 
     class SatelliteSubscriptionsChangedListener
@@ -1576,7 +1588,7 @@
                 break;
             }
 
-            case EVENT_EVALUATE_ESOS_PROFILES_PRIORITIZATION: {
+            case CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION: {
                 evaluateESOSProfilesPrioritization();
                 break;
             }
@@ -4356,13 +4368,13 @@
         processNewCarrierConfigData(subId);
         resetCarrierRoamingSatelliteModeParams(subId);
         handleStateChangedForCarrierRoamingNtnEligibility();
-        sendMessageDelayed(obtainMessage(EVENT_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
+        sendMessageDelayed(obtainMessage(CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
                 TimeUnit.MINUTES.toMillis(1));
     }
 
     // imsi, msisdn, default sms subId change
     private void handleSubscriptionsChanged() {
-        sendMessageDelayed(obtainMessage(EVENT_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
+        sendMessageDelayed(obtainMessage(CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
                 TimeUnit.MINUTES.toMillis(1));
     }
 
@@ -5621,11 +5633,12 @@
      */
     private void evaluateESOSProfilesPrioritization() {
         if (!mFeatureFlags.carrierRoamingNbIotNtn()) {
+            plogd("evaluateESOSProfilesPrioritization: Flag CarrierRoamingNbIotNtn is disabled");
             return;
         }
         List<SubscriptionInfo> allSubInfos = mSubscriptionManagerService.getAllSubInfoList(
                 mContext.getOpPackageName(), mContext.getAttributionTag());
-        //key : priority, low value is high, value : List<SubscriptionInfo>
+        // Key : priority - lower value has higher priority; Value : List<SubscriptionInfo>
         Map<Integer, List<SubscriptionInfo>> newSubsInfoListPerPriority = new HashMap<>();
         for (SubscriptionInfo info : allSubInfos) {
             int subId = info.getSubscriptionId();
@@ -5643,15 +5656,18 @@
             if (keyPriority != -1) {
                 newSubsInfoListPerPriority.computeIfAbsent(keyPriority,
                         k -> new ArrayList<>()).add(info);
+            } else {
+                plogw("evaluateESOSProfilesPrioritization: Got -1 keyPriority for subId="
+                        + info.getSubscriptionId());
             }
         }
 
         if (newSubsInfoListPerPriority.size() == 0) {
-            logd("evaluateESOSProfilesPrioritization: no available");
+            logd("evaluateESOSProfilesPrioritization: no satellite subscription available");
             return;
         }
 
-        // if priority is changed, send broadcast for provisioned ESOS subs ids
+        // If priority has changed, send broadcast for provisioned ESOS subs IDs
         synchronized (mSatelliteTokenProvisionedLock) {
             if (isPriorityChanged(mSubsInfoListPerPriority, newSubsInfoListPerPriority)) {
                 mSubsInfoListPerPriority = newSubsInfoListPerPriority;
@@ -6022,4 +6038,15 @@
             }
         }
     }
+
+    private void registerDefaultSmsSubscriptionChangedBroadcastReceiver() {
+        if (!mFeatureFlags.carrierRoamingNbIotNtn()) {
+            plogd("registerDefaultSmsSubscriptionChangedBroadcastReceiver: Flag "
+                    + "CarrierRoamingNbIotNtn is disabled");
+            return;
+        }
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED);
+        mContext.registerReceiver(mDefaultSmsSubscriptionChangedBroadcastReceiver, intentFilter);
+    }
 }