[Settings] Avoid rename inactive subscription from NullPointerException

1. Init instance before accessing it
2. Re-enable test case

Bug: 147321836
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=RenameMobileNetworkDialogFragmentTest
Change-Id: Ifc245bec739b4c81d2cee04b091bcdb54d567d4a
This commit is contained in:
Bonian Chen
2020-01-30 22:25:44 +08:00
parent 8ad24a25ad
commit 1b71b5e601
2 changed files with 43 additions and 22 deletions

View File

@@ -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<SubscriptionInfo> 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;