diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index ab8327c7f97..fa5deab2bb9 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -48,6 +48,8 @@ import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.DeviceInfoUtils; +import java.util.List; + /** * A dialog allowing the display name of a mobile network subscription to be changed */ @@ -115,9 +117,9 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen .setPositiveButton(R.string.mobile_network_sim_name_rename, (dialog, which) -> { mSubscriptionManager.setDisplayName(mNameView.getText().toString(), mSubId, SubscriptionManager.NAME_SOURCE_USER_INPUT); - mSubscriptionManager.setIconTint( - mColors[mColorSpinner.getSelectedItemPosition()].getColor(), - mSubId); + final Color color = (mColorSpinner == null) ? mColors[0] + : mColors[mColorSpinner.getSelectedItemPosition()]; + mSubscriptionManager.setIconTint(color.getColor(), mSubId); }) .setNegativeButton(android.R.string.cancel, null); return builder.create(); @@ -126,7 +128,17 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen @VisibleForTesting protected void populateView(View view) { mNameView = view.findViewById(R.id.name_edittext); - final SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId); + SubscriptionInfo info = null; + final List infoList = mSubscriptionManager + .getAvailableSubscriptionInfoList(); + if (infoList != null) { + for (SubscriptionInfo subInfo : infoList) { + if (subInfo.getSubscriptionId() == mSubId) { + info = subInfo; + break; + } + } + } if (info == null) { Log.w(TAG, "got null SubscriptionInfo for mSubId:" + mSubId); return; diff --git a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java index a69ab53f563..b40698662d7 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java @@ -23,12 +23,12 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; import android.telephony.ServiceState; @@ -48,7 +48,6 @@ import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -56,7 +55,13 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; +import org.robolectric.shadows.ShadowTelephonyManager; + +import java.util.ArrayList; +import java.util.List; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowAlertDialogCompat.class) @@ -65,6 +70,8 @@ public class RenameMobileNetworkDialogFragmentTest { @Mock private TelephonyManager mTelephonyMgr; @Mock + private ServiceState mServiceState; + @Mock private SubscriptionManager mSubscriptionMgr; @Mock private SubscriptionInfo mSubscriptionInfo; @@ -72,23 +79,35 @@ public class RenameMobileNetworkDialogFragmentTest { private FragmentActivity mActivity; private RenameMobileNetworkDialogFragment mFragment; private int mSubscriptionId = 1234; + private List mSubscriptionInfoList; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).setup().get()); + + Context context = spy(RuntimeEnvironment.application); + + final ShadowTelephonyManager stm = Shadow.extract(context.getSystemService( + TelephonyManager.class)); + stm.setTelephonyManagerForSubscriptionId(mSubscriptionId, mTelephonyMgr); + when(mTelephonyMgr.createForSubscriptionId(anyInt())).thenReturn(mTelephonyMgr); + + when(mTelephonyMgr.getServiceState()).thenReturn(mServiceState); + when(mServiceState.getOperatorAlphaLong()).thenReturn("fake carrier name"); when(mSubscriptionInfo.getSubscriptionId()).thenReturn(mSubscriptionId); when(mSubscriptionInfo.getDisplayName()).thenReturn("test"); + when(mSubscriptionMgr.setDisplayName(any(), anyInt(), anyInt())).thenReturn(0); + + mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).setup().get()); mFragment = spy(RenameMobileNetworkDialogFragment.newInstance(mSubscriptionId)); - doReturn(mTelephonyMgr).when(mFragment).getTelephonyManager(any()); doReturn(mSubscriptionMgr).when(mFragment).getSubscriptionManager(any()); - final ServiceState serviceState = mock(ServiceState.class); - when(serviceState.getOperatorAlphaLong()).thenReturn("fake carrier name"); - when(mTelephonyMgr.createForSubscriptionId(anyInt())).thenReturn(mTelephonyMgr); - when(mTelephonyMgr.getServiceState()).thenReturn(serviceState); + mSubscriptionInfoList = new ArrayList(); + mSubscriptionInfoList.add(mSubscriptionInfo); + when(mSubscriptionMgr.getAvailableSubscriptionInfoList()).thenReturn( + mSubscriptionInfoList); } @Test @@ -100,10 +119,7 @@ public class RenameMobileNetworkDialogFragmentTest { } @Test - @Ignore public void dialog_cancelButtonClicked_setDisplayNameAndIconTintNotCalled() { - when(mSubscriptionMgr.getActiveSubscriptionInfo(mSubscriptionId)).thenReturn( - mSubscriptionInfo); final AlertDialog dialog = startDialog(); final EditText nameView = mFragment.getNameView(); nameView.setText("test2"); @@ -116,11 +132,7 @@ public class RenameMobileNetworkDialogFragmentTest { } @Test - @Ignore public void dialog_saveButtonClicked_setDisplayNameAndIconTint() { - when(mSubscriptionMgr.getActiveSubscriptionInfo(mSubscriptionId)).thenReturn( - mSubscriptionInfo); - final AlertDialog dialog = startDialog(); final EditText nameView = mFragment.getNameView(); nameView.setText("test2"); @@ -140,12 +152,9 @@ public class RenameMobileNetworkDialogFragmentTest { } @Test - @Ignore public void populateView_infoIsOpportunistic_hideNumberLabel() { final View view = LayoutInflater.from(mActivity).inflate( R.layout.dialog_mobile_network_rename, null); - when(mSubscriptionMgr.getActiveSubscriptionInfo(mSubscriptionId)).thenReturn( - mSubscriptionInfo); when(mSubscriptionInfo.isOpportunistic()).thenReturn(true); startDialog();