[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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user