From 3dd2878437d996382429fceed9988d3db8288752 Mon Sep 17 00:00:00 2001 From: Jeremy Goldman Date: Mon, 1 Feb 2021 10:42:53 +0800 Subject: [PATCH] SubscriptionUtil checks that SubscriptionInfo is null before accessing. Test: atest -c SubscriptionUtilTest Bug: 178707680 Change-Id: I03938405929c3307460107671bbe695ee5e0f6e9 --- .../settings/network/SubscriptionUtil.java | 3 +++ .../network/SubscriptionUtilTest.java | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index ff5de3e4d40..6dcba0a552b 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -338,6 +338,9 @@ public class SubscriptionUtil { @VisibleForTesting public static CharSequence getUniqueSubscriptionDisplayName( SubscriptionInfo info, Context context) { + if (info == null) { + return ""; + } return getUniqueSubscriptionDisplayName(info.getSubscriptionId(), context); } diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java index b36675aa397..8c99b40a346 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java @@ -380,6 +380,26 @@ public class SubscriptionUtilTest { assertEquals(CARRIER_1, name); } + @Test + public void getUniqueDisplayName_nullSubscriptionInfo_emptyStringReturned() { + final SubscriptionInfo info1 = mock(SubscriptionInfo.class); + when(info1.getSubscriptionId()).thenReturn(SUBID_1); + when(info1.getDisplayName()).thenReturn(CARRIER_1); + when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( + Arrays.asList(info1)); + + TelephonyManager sub1Telmgr = mock(TelephonyManager.class); + when(sub1Telmgr.getLine1Number()).thenReturn("1112223333"); + when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr); + + SubscriptionInfo info2 = null; + final CharSequence name = + SubscriptionUtil.getUniqueSubscriptionDisplayName(info2, mContext); + + assertThat(name).isNotNull(); + assertTrue(TextUtils.isEmpty(name)); + } + @Test public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse();