[Settings] Avoid from Settings crash

Avoid from crash when null pointer.

Bug: 152336444
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=MobileNetworkActivityTest
Change-Id: I77314f697d8a99d77b9f5fe0a48ddbae69634743
This commit is contained in:
Bonian Chen
2020-03-25 05:48:37 +08:00
parent 87c0179c01
commit dcf701efc3
2 changed files with 23 additions and 5 deletions

View File

@@ -53,7 +53,8 @@ public class MobileNetworkActivity extends SettingsBaseActivity
@VisibleForTesting @VisibleForTesting
static final int SUB_ID_NULL = Integer.MIN_VALUE; static final int SUB_ID_NULL = Integer.MIN_VALUE;
private ProxySubscriptionManager mProxySubscriptionMgr; @VisibleForTesting
ProxySubscriptionManager mProxySubscriptionMgr;
private int mCurSubscriptionId; private int mCurSubscriptionId;
@Override @Override
@@ -102,9 +103,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);
} }
mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this); registerActiveSubscriptionsListener();
mProxySubscriptionMgr.setLifecycle(getLifecycle());
mProxySubscriptionMgr.addActiveSubscriptionsListener(this);
final Intent startIntent = getIntent(); final Intent startIntent = getIntent();
validate(startIntent); validate(startIntent);
@@ -119,15 +118,26 @@ public class MobileNetworkActivity extends SettingsBaseActivity
maybeShowContactDiscoveryDialog(mCurSubscriptionId); maybeShowContactDiscoveryDialog(mCurSubscriptionId);
} }
@VisibleForTesting
void registerActiveSubscriptionsListener() {
mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
mProxySubscriptionMgr.setLifecycle(getLifecycle());
mProxySubscriptionMgr.addActiveSubscriptionsListener(this);
}
/** /**
* Implementation of ProxySubscriptionManager.OnActiveSubscriptionChangedListener * Implementation of ProxySubscriptionManager.OnActiveSubscriptionChangedListener
*/ */
public void onChanged() { public void onChanged() {
SubscriptionInfo info = getSubscription(); SubscriptionInfo info = getSubscription();
int oldSubIndex = mCurSubscriptionId; int oldSubIndex = mCurSubscriptionId;
int subIndex = info.getSubscriptionId();
updateSubscriptions(info); updateSubscriptions(info);
// Remove the dialog if the subscription associated with this activity changes. // Remove the dialog if the subscription associated with this activity changes.
if (info == null) {
return;
}
int subIndex = info.getSubscriptionId();
if (subIndex != oldSubIndex) { if (subIndex != oldSubIndex) {
removeContactDiscoveryDialog(oldSubIndex); removeContactDiscoveryDialog(oldSubIndex);
} }

View File

@@ -22,6 +22,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.robolectric.Shadows.shadowOf; import static org.robolectric.Shadows.shadowOf;
import android.content.Context; import android.content.Context;
@@ -39,6 +40,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.network.ProxySubscriptionManager;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@@ -109,6 +111,12 @@ public class MobileNetworkActivityTest {
private SubscriptionInfo mSubscriptionInFragment; private SubscriptionInfo mSubscriptionInFragment;
@Override
void registerActiveSubscriptionsListener() {
mProxySubscriptionMgr = mock(ProxySubscriptionManager.class);
onChanged();
}
@Override @Override
void switchFragment(SubscriptionInfo subInfo) { void switchFragment(SubscriptionInfo subInfo) {
mSubscriptionInFragment = subInfo; mSubscriptionInFragment = subInfo;