[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: I2375043f16b5a25372af5c9f413fb8384850316c
Merged-In: Ifc245bec739b4c81d2cee04b091bcdb54d567d4a
This commit is contained in:
Bonian Chen
2020-01-30 22:34:15 +08:00
parent 45834d96a8
commit ab459dc194
2 changed files with 47 additions and 22 deletions

View File

@@ -39,15 +39,17 @@ import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.DeviceInfoUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
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;