Add null check for carrierConfig

Since it may return null when Crash happens in CarrierConfigManager

Bug: 118402844
Test: RunSettingsRoboTests
Change-Id: I9db0f1a873b3e24936b021989f6716369569b17b
This commit is contained in:
jackqdyulei
2018-11-02 11:25:37 -07:00
parent a923a4113a
commit 16c5d77df8
2 changed files with 12 additions and 2 deletions

View File

@@ -62,12 +62,13 @@ public class ApnPreferenceController extends BasePreferenceController implements
public int getAvailabilityStatus() {
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
final boolean isCdmaApn = MobileNetworkUtils.isCdmaOptions(mContext, mSubId)
&& carrierConfig != null
&& carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_APN_SETTING_CDMA_BOOL);
final boolean isGsmApn = MobileNetworkUtils.isGsmOptions(mContext, mSubId)
&& carrierConfig != null
&& carrierConfig.getBoolean(CarrierConfigManager.KEY_APN_EXPAND_BOOL);
return carrierConfig != null
&& (isCdmaApn || isGsmApn)
return isCdmaApn || isGsmApn
? AVAILABLE
: CONDITIONALLY_UNAVAILABLE;
}

View File

@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
@@ -114,6 +115,14 @@ public class ApnPreferenceControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
public void getAvailabilityStatus_carrierConfigNull_returnUnavailable() {
doReturn(PhoneConstants.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(null);
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
public void handPreferenceTreeClick_fireIntent() {
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);