Dismiss the "no service" notification if SIM is removed

Test: atest PhoneGlobalsTest, NotificationMgrTest
Bug: 281848802
Change-Id: I40b949e90e88068775dc9f12513888b34d0522b1
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index 226664d..6f8826f 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -871,7 +871,10 @@
         }
     }
 
-    private void dismissNetworkSelectionNotificationForInactiveSubId() {
+    /**
+     * Dismiss the network selection "no service" notification for all inactive subscriptions.
+     */
+    public void dismissNetworkSelectionNotificationForInactiveSubId() {
         for (int i = 0; i < mSelectedUnavailableNotify.size(); i++) {
             int subId = mSelectedUnavailableNotify.keyAt(i);
             if (!mSubscriptionManager.isActiveSubId(subId)) {
@@ -881,15 +884,6 @@
         }
     }
 
-    /* package */ void postTransientNotification(int notifyId, CharSequence msg) {
-        if (mToast != null) {
-            mToast.cancel();
-        }
-
-        mToast = Toast.makeText(mContext, msg, Toast.LENGTH_LONG);
-        mToast.show();
-    }
-
     private void log(String msg) {
         Log.d(LOG_TAG, msg);
     }
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index abbd816..c902e68 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -323,17 +323,20 @@
                     break;
 
                 case EVENT_SIM_STATE_CHANGED:
-                    // Marks the event where the SIM goes into ready state.
-                    // Right now, this is only used for the PUK-unlocking
-                    // process.
                     EventSimStateChangedBag bag = (EventSimStateChangedBag)msg.obj;
+                    // Dismiss the "No services" notification if the SIM is removed.
+                    if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(bag.mIccStatus)) {
+                        notificationMgr.dismissNetworkSelectionNotificationForInactiveSubId();
+                    }
+
+                    // Marks the event where the SIM goes into ready state.
+                    // Right now, this is only used for the PUK-unlocking process.
                     if (IccCardConstants.INTENT_VALUE_ICC_READY.equals(bag.mIccStatus)
                             || IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(bag.mIccStatus)
                             || IccCardConstants.INTENT_VALUE_ICC_NOT_READY.equals(bag.mIccStatus)
                             || IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(bag.mIccStatus)) {
-                        // when the right event is triggered and there
-                        // are UI objects in the foreground, we close
-                        // them to display the lock panel.
+                        // When the right event is triggered and there are UI objects in the
+                        // foreground, we close them to display the lock panel.
                         if (mPUKEntryActivity != null) {
                             Log.i(LOG_TAG, "Dismiss puk entry activity");
                             mPUKEntryActivity.finish();