Use displayName instead of operator name in MMS data notification

When the phone is in DSDS mode and the user tries to send an MMS message
from the SIM that isn't the default for data, we need to pop up a
notification letting them know that the action can't succeed unless they
turn on the advanced option to allow data use for MMS messages. This
notification was using the operator name instead of the subscription
display name, so it didn't reflect any renaming the user might have done
to keep track of their SIMs, which is obviously confusing especially if
they have two different SIMs for the same carrier. This CL switches to
using the subscription display name in this notification.

Fixes: 134771858
Test: make RunSettingsRoboTests
Change-Id: I6995bf9dd6d5e9544e26f0d8e30e97c4e73ab783
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index a303e42..fb83a4d 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -40,12 +40,14 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
+import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settingslib.HelpUtils;
 
@@ -104,6 +106,11 @@
             Log.w(TAG, "onEnableMmsDataRequest invalid sub ID " + subId);
             return;
         }
+        final SubscriptionInfo info = subscriptionManager.getActiveSubscriptionInfo(subId);
+        if (info == null) {
+            Log.w(TAG, "onEnableMmsDataRequest null SubscriptionInfo for sub ID " + subId);
+            return;
+        }
 
         // Getting request reason from extra, which will determine the notification title.
         CharSequence notificationTitle = null;
@@ -128,7 +135,7 @@
         }
 
         CharSequence notificationSummary = context.getResources().getString(
-                R.string.enable_mms_notification_summary, tm.getSimOperatorName());
+                R.string.enable_mms_notification_summary, SubscriptionUtil.getDisplayName(info));
 
         cancelEnableMmsNotification(context);
 
diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
index 5a2dd48..9b53636 100644
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -49,6 +49,7 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
@@ -80,8 +81,10 @@
     private PackageManager mPackageManager;
     @Mock
     private Resources mResources;
+    @Mock
+    private SubscriptionInfo mSubInfo;
 
-    private final String mFakeOperatorName = "fake_operator_name";
+    private final String mFakeDisplayName = "fake_display_name";
     private final CharSequence mFakeNotificationChannelTitle = "fake_notification_channel_title";
     private final CharSequence mFakeNotificationTitle = "fake_notification_title";
     private final String mFakeNotificationSummary = "fake_notification_Summary";
@@ -113,9 +116,10 @@
                 .thenReturn(PackageManager.PERMISSION_GRANTED);
 
         when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.getSimOperatorName()).thenReturn(mFakeOperatorName);
         when(mTelephonyManager.isDataEnabledForApn(TYPE_MMS)).thenReturn(false);
         when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(true);
+        when(mSubscriptionManager.getActiveSubscriptionInfo(mSubId)).thenReturn(mSubInfo);
+        when(mSubInfo.getDisplayName()).thenReturn(mFakeDisplayName);
         when(mContext.getResources()).thenReturn(mResources);
 
         when(mResources.getText(R.string.enable_sending_mms_notification_title))
@@ -123,7 +127,7 @@
         when(mResources.getText(R.string.enable_mms_notification_channel_title))
                 .thenReturn(mFakeNotificationChannelTitle);
         when(mResources.getString(R.string.enable_mms_notification_summary,
-                mFakeOperatorName)).thenReturn(mFakeNotificationSummary);
+                mFakeDisplayName)).thenReturn(mFakeNotificationSummary);
 
         when(mResources.getText(R.string.dual_cdma_sim_warning_notification_channel_title))
                 .thenReturn(mFakeDualCdmaWarningChannelTitle);