Merge "[Settings] Support phone number talkback" into sc-v2-dev am: 14d03e77ad

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16430899

Change-Id: I4492b8cd17c4ad4b288a356722a92936d97898f5
This commit is contained in:
Bonian Chen
2021-12-13 09:46:35 +00:00
committed by Automerger Merge Worker
10 changed files with 242 additions and 77 deletions

View File

@@ -33,6 +33,7 @@ import static com.android.settings.deviceinfo.simstatus.SimStatusDialogControlle
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_LABEL_ID;
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_VALUE_ID;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
@@ -76,12 +77,16 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@RunWith(AndroidJUnit4.class)
public class SimStatusDialogControllerTest {
@Mock
private SimStatusDialogFragment mDialog;
@Mock
private TelephonyManager mTelephonyManager;
@Mock
private SubscriptionInfo mSubscriptionInfo;
@@ -107,6 +112,9 @@ public class SimStatusDialogControllerTest {
@Mock
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
private AtomicBoolean mEuiccEnabled;
private AtomicReference<String> mEid;
private AtomicInteger mUpdatePhoneNumberCount;
private static final String TEST_EID_FROM_CARD = "11111111111111111111111111111111";
private static final String TEST_EID_FROM_MANAGER = "22222222222222222222222222222222";
@@ -137,7 +145,26 @@ public class SimStatusDialogControllerTest {
doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
mUpdatePhoneNumberCount = new AtomicInteger();
mEuiccEnabled = new AtomicBoolean(false);
mEid = new AtomicReference<String>("");
mController = new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */) {
@Override
public TelephonyManager getTelephonyManager() {
return mTelephonyManager;
}
@Override
public AtomicReference<String> getEid(int slotIndex) {
return mEuiccEnabled.get() ? mEid : null;
}
@Override
public void updatePhoneNumber() {
super.updatePhoneNumber();
mUpdatePhoneNumberCount.incrementAndGet();
}
};
// CellSignalStrength setup
doReturn(0).when(mCellSignalStrengthCdma).getDbm();
doReturn(0).when(mCellSignalStrengthCdma).getAsuLevel();
@@ -155,7 +182,7 @@ public class SimStatusDialogControllerTest {
.getLogicalToPhysicalSlotMapping();
when(mEuiccManager.isEnabled()).thenReturn(false);
when(mEuiccManager.getEid()).thenReturn("");
mEuiccEnabled.set(false);
when(mEuiccManager.createForCardId(anyInt())).thenReturn(mEuiccManager);
mPersistableBundle = new PersistableBundle();
@@ -181,7 +208,7 @@ public class SimStatusDialogControllerTest {
public void initialize_shouldUpdatePhoneNumber() {
mController.initialize();
verify(mController).updatePhoneNumber();
assertTrue(mUpdatePhoneNumberCount.get() > 0);
}
@Test
@@ -407,10 +434,9 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(null);
mEuiccEnabled.set(true);
mEid.set(null);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Keep 'Not available' if neither the card nor the associated manager can provide EID.
@@ -447,11 +473,10 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
mEuiccEnabled.set(true);
mEid.set(TEST_EID_FROM_CARD);
when(mEuiccManager.createForCardId(0)).thenReturn(mEuiccManager);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Set EID retrieved from the card.
@@ -488,13 +513,12 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
mEuiccEnabled.set(true);
mEid.set(TEST_EID_FROM_MANAGER);
when(mEuiccManager.createForCardId(0)).thenThrow(
new RuntimeException("Unexpected card ID was specified"));
when(mEuiccManager.createForCardId(1)).thenReturn(mEuiccManager);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Set EID retrieved from the manager associated with the card which cannot provide EID.
@@ -502,6 +526,7 @@ public class SimStatusDialogControllerTest {
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
}
@Ignore
@Test
public void initialize_updateEid_shouldRemoveEid() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -531,9 +556,9 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
mEuiccEnabled.set(true);
mEid.set(TEST_EID_FROM_MANAGER);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
@@ -563,10 +588,9 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(null);
mEuiccEnabled.set(true);
mEid.set(null);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Keep 'Not available' if the default eUICC manager cannot provide EID in Single SIM mode.
@@ -594,12 +618,11 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
mEuiccEnabled.set(true);
mEid.set(TEST_EID_FROM_MANAGER);
when(mEuiccManager.createForCardId(anyInt())).thenThrow(
new RuntimeException("EID shall be retrieved from the default eUICC manager"));
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Set EID retrieved from the default eUICC manager in Single SIM mode.
@@ -627,12 +650,11 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(true);
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
mEuiccEnabled.set(true);
mEid.set(TEST_EID_FROM_MANAGER);
when(mEuiccManager.createForCardId(anyInt())).thenThrow(
new RuntimeException("EID shall be retrieved from the default eUICC manager"));
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Set EID retrieved from the default eUICC manager in Single SIM mode.
@@ -660,14 +682,12 @@ public class SimStatusDialogControllerTest {
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
when(mEuiccManager.isEnabled()).thenReturn(false);
when(mEuiccManager.getEid()).thenReturn(null);
mEuiccEnabled.set(false);
mEid.set(null);
doNothing().when(mController).requestForUpdateEid();
mController.updateEid(mController.getEid(0));
mController.initialize();
// Remove EID if the default eUICC manager indicates that eSIM is not enabled.
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_LABEL_ID));
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
}