Merge "Add disable pSIM option in Settings"

This commit is contained in:
Xiangyu/Malcolm Chen
2019-12-09 22:30:06 +00:00
committed by Android (Google) Code Review
9 changed files with 79 additions and 19 deletions

View File

@@ -22,6 +22,7 @@ import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -30,7 +31,6 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
@@ -46,7 +46,6 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -155,6 +154,7 @@ public class MobileNetworkListControllerTest {
when(sub1.isEmbedded()).thenReturn(true);
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(eq(1));
doReturn(false).when(mSubscriptionManager).isActiveSubscriptionId(eq(2));
doReturn(false).when(mSubscriptionManager).canDisablePhysicalSubscription();
when(sub2.isEmbedded()).thenReturn(false);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
@@ -166,13 +166,21 @@ public class MobileNetworkListControllerTest {
final ArgumentCaptor<Preference> preferenceCaptor = ArgumentCaptor.forClass(
Preference.class);
verify(mPreferenceScreen, times(2)).addPreference(preferenceCaptor.capture());
final Preference pref1 = preferenceCaptor.getAllValues().get(0);
final Preference pref2 = preferenceCaptor.getAllValues().get(1);
Preference pref1 = preferenceCaptor.getAllValues().get(0);
Preference pref2 = preferenceCaptor.getAllValues().get(1);
assertThat(pref1.getSummary()).isEqualTo("Active / Downloaded SIM");
assertThat(pref2.getSummary()).isEqualTo("Tap to activate sub2");
pref2.getOnPreferenceClickListener().onPreferenceClick(pref2);
verify(mSubscriptionManager).setSubscriptionEnabled(eq(2), eq(true));
// If disabling pSIM is allowed, summary of inactive pSIM should be different.
clearInvocations(mPreferenceScreen);
clearInvocations(mSubscriptionManager);
doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription();
mController.onResume();
pref2 = preferenceCaptor.getAllValues().get(1);
assertThat(pref2.getSummary()).isEqualTo("Inactive / SIM");
}
@Test

View File

@@ -29,7 +29,6 @@ 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;
import android.content.Intent;
import android.net.ConnectivityManager;
@@ -52,7 +51,6 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -168,7 +166,7 @@ public class MobileNetworkSummaryControllerTest {
}
@Test
public void getSummary_oneInactivePSim_correctSummaryAndClickHandler() {
public void getSummary_oneInactivePSim_cannotDisablePsim_correctSummaryAndClickHandler() {
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
when(sub1.getSubscriptionId()).thenReturn(1);
when(sub1.getDisplayName()).thenReturn("sub1");
@@ -185,6 +183,30 @@ public class MobileNetworkSummaryControllerTest {
verify(mSubscriptionManager).setSubscriptionEnabled(eq(sub1.getSubscriptionId()), eq(true));
}
@Test
public void getSummary_oneInactivePSim_canDisablePsim_correctSummaryAndClickHandler() {
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
when(sub1.getSubscriptionId()).thenReturn(1);
when(sub1.getDisplayName()).thenReturn("sub1");
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1));
when(mSubscriptionManager.isActiveSubscriptionId(eq(1))).thenReturn(false);
when(mSubscriptionManager.canDisablePhysicalSubscription()).thenReturn(true);
mController.displayPreference(mPreferenceScreen);
mController.onResume();
assertThat(mController.getSummary()).isEqualTo("sub1");
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
doNothing().when(mContext).startActivity(intentCaptor.capture());
mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
Intent intent = intentCaptor.getValue();
assertThat(intent.getComponent().getClassName()).isEqualTo(
MobileNetworkActivity.class.getName());
assertThat(intent.getIntExtra(Settings.EXTRA_SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID)).isEqualTo(sub1.getSubscriptionId());
}
@Test
public void getSummary_twoSubscriptions_correctSummaryAndFragment() {
final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);

View File

@@ -18,11 +18,13 @@ package com.android.settings.network.telephony;
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.when;
import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import com.android.settings.network.SubscriptionUtil;
@@ -45,12 +47,15 @@ public class DisableSimFooterPreferenceControllerTest {
private SubscriptionInfo mInfo;
private Context mContext;
@Mock
private SubscriptionManager mSubscriptionManager;
private DisableSimFooterPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mContext = spy(RuntimeEnvironment.application);
doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
when(mInfo.getSubscriptionId()).thenReturn(SUB_ID);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mInfo));
mController = new DisableSimFooterPreferenceController(mContext, PREF_KEY);
@@ -69,9 +74,18 @@ public class DisableSimFooterPreferenceControllerTest {
}
@Test
public void isAvailable_pSIM_available() {
public void isAvailable_pSIM_available_cannot_disable_pSIM() {
when(mInfo.isEmbedded()).thenReturn(false);
mController.init(SUB_ID);
doReturn(false).when(mSubscriptionManager).canDisablePhysicalSubscription();
assertThat(mController.isAvailable()).isTrue();
}
@Test
public void isAvailable_pSIM_available_can_disable_pSIM() {
when(mInfo.isEmbedded()).thenReturn(false);
mController.init(SUB_ID);
doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription();
assertThat(mController.isAvailable()).isFalse();
}
}

View File

@@ -105,6 +105,10 @@ public class MobileNetworkSwitchControllerTest {
when(mSubscription.isEmbedded()).thenReturn(false);
mController.displayPreference(mScreen);
assertThat(mSwitchBar.isShowing()).isFalse();
when(mSubscriptionManager.canDisablePhysicalSubscription()).thenReturn(true);
mController.displayPreference(mScreen);
assertThat(mSwitchBar.isShowing()).isTrue();
}
@Test