[Settings] Avoid crash for VoIP account displayed as default voice

When displaying VoIP account in Default voice account UI within
mobile network configuration, some null pointer checking need to
applied due to this is no longer a real account bind to SIM card.

Bug: 157334667
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DefaultSubscriptionControllerTest
Change-Id: I3927362676c867ac245f16e1d00ea953b21ec1d4
This commit is contained in:
Bonian Chen
2020-05-25 22:53:25 +08:00
parent 1821ab5e5b
commit ce0f3c66a0
2 changed files with 44 additions and 9 deletions

View File

@@ -21,6 +21,7 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -32,6 +33,9 @@ import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.network.SubscriptionUtil;
@@ -46,9 +50,6 @@ import org.robolectric.RuntimeEnvironment;
import java.util.Arrays;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
@RunWith(RobolectricTestRunner.class)
public class DefaultSubscriptionControllerTest {
@Mock
@@ -91,6 +92,20 @@ public class DefaultSubscriptionControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
public void isCallingAccountBindToSubscription_invalidAccount_withoutCrash() {
doReturn(null).when(mController).getPhoneAccount(any());
mController.isCallingAccountBindToSubscription(null);
}
@Test
public void getLabelFromCallingAccount_invalidAccount_emptyString() {
doReturn(null).when(mController).getPhoneAccount(any());
assertThat(mController.getLabelFromCallingAccount(null)).isEqualTo("");
}
@Test
public void displayPreference_twoSubscriptionsSub1Default_correctListPreferenceValues() {
final SubscriptionInfo sub1 = createMockSub(111, "sub1");