[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
static final int SUB_ID_NULL = Integer.MIN_VALUE;
private ProxySubscriptionManager mProxySubscriptionMgr;
@VisibleForTesting
ProxySubscriptionManager mProxySubscriptionMgr;
private int mCurSubscriptionId;
@Override
@@ -102,9 +103,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity
actionBar.setDisplayHomeAsUpEnabled(true);
}
mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
mProxySubscriptionMgr.setLifecycle(getLifecycle());
mProxySubscriptionMgr.addActiveSubscriptionsListener(this);
registerActiveSubscriptionsListener();
final Intent startIntent = getIntent();
validate(startIntent);
@@ -119,15 +118,26 @@ public class MobileNetworkActivity extends SettingsBaseActivity
maybeShowContactDiscoveryDialog(mCurSubscriptionId);
}
@VisibleForTesting
void registerActiveSubscriptionsListener() {
mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
mProxySubscriptionMgr.setLifecycle(getLifecycle());
mProxySubscriptionMgr.addActiveSubscriptionsListener(this);
}
/**
* Implementation of ProxySubscriptionManager.OnActiveSubscriptionChangedListener
*/
public void onChanged() {
SubscriptionInfo info = getSubscription();
int oldSubIndex = mCurSubscriptionId;
int subIndex = info.getSubscriptionId();
updateSubscriptions(info);
// Remove the dialog if the subscription associated with this activity changes.
if (info == null) {
return;
}
int subIndex = info.getSubscriptionId();
if (subIndex != 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.doReturn;
import static org.mockito.Mockito.mock;
import static org.robolectric.Shadows.shadowOf;
import android.content.Context;
@@ -39,6 +40,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.network.ProxySubscriptionManager;
import org.junit.After;
import org.junit.Before;
@@ -109,6 +111,12 @@ public class MobileNetworkActivityTest {
private SubscriptionInfo mSubscriptionInFragment;
@Override
void registerActiveSubscriptionsListener() {
mProxySubscriptionMgr = mock(ProxySubscriptionManager.class);
onChanged();
}
@Override
void switchFragment(SubscriptionInfo subInfo) {
mSubscriptionInFragment = subInfo;