From 82bf2a66b763700165e4cdbb8d7db4a2a3762dda Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Tue, 24 May 2022 18:21:59 +0800 Subject: [PATCH 1/2] Changing the condition since the esim may be removable The condition whether the slot is esim slot should use getIsEuicc api since the esim may be removable. Bug: 233338345 Test: atest UiccSlotUtilTest Change-Id: I47dc068e57a0faa7f7ce85af7933a48caa2c93e4 Merged-In: I47dc068e57a0faa7f7ce85af7933a48caa2c93e4 --- .../settings/network/EnableMultiSimSidecar.java | 3 ++- src/com/android/settings/network/UiccSlotUtil.java | 3 ++- .../ToggleSubscriptionDialogActivity.java | 1 + .../sim/receivers/SimSlotChangeHandler.java | 2 +- .../android/settings/network/UiccSlotUtilTest.java | 14 ++++++++++++++ 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/network/EnableMultiSimSidecar.java b/src/com/android/settings/network/EnableMultiSimSidecar.java index aefd55f00e8..5545a69dd21 100644 --- a/src/com/android/settings/network/EnableMultiSimSidecar.java +++ b/src/com/android/settings/network/EnableMultiSimSidecar.java @@ -190,7 +190,8 @@ public class EnableMultiSimSidecar extends AsyncTaskSidecar { Set activeRemovableLogicalSlotIds = new ArraySet<>(); for (UiccSlotInfo info : infos) { for (UiccPortInfo portInfo :info.getPorts()) { - if (info != null && portInfo.isActive() && info.isRemovable()) { + if (info != null && portInfo.isActive() && info.isRemovable() + && !info.getIsEuicc()) { activeRemovableLogicalSlotIds.add(portInfo.getLogicalSlotIndex()); } } diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java index 8fdc3700dd6..2a08c1c3476 100644 --- a/src/com/android/settings/network/UiccSlotUtil.java +++ b/src/com/android/settings/network/UiccSlotUtil.java @@ -193,7 +193,7 @@ public class UiccSlotUtil { if (slotInfo == null) { return false; } - return !slotInfo.isRemovable(); + return slotInfo.getIsEuicc(); }) .findFirst().orElse(-1); @@ -249,6 +249,7 @@ public class UiccSlotUtil { if (slotId == INVALID_PHYSICAL_SLOT_ID) { for (int i = 0; i < slots.length; i++) { if (slots[i].isRemovable() + && !slots[i].getIsEuicc() && !slots[i].getPorts().stream().findFirst().get().isActive() && slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_ERROR && slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_RESTRICTED) { diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java index cc2986d5344..2a902e5785a 100644 --- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java +++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java @@ -589,6 +589,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc .anyMatch( slot -> slot != null && slot.isRemovable() + && !slot.getIsEuicc() && slot.getPorts().stream().anyMatch( port -> port.isActive()) && slot.getCardStateInfo() diff --git a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java index 4a6b96c1fa3..da3db8b1369 100644 --- a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java +++ b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java @@ -294,7 +294,7 @@ public class SimSlotChangeHandler { return null; } for (UiccSlotInfo slotInfo : slotInfos) { - if (slotInfo != null && slotInfo.isRemovable()) { + if (slotInfo != null && slotInfo.isRemovable() && !slotInfo.getIsEuicc()) { return slotInfo; } } diff --git a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java index 2cf984558be..5aa73eaa308 100644 --- a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java +++ b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java @@ -92,6 +92,14 @@ public class UiccSlotUtilTest { assertThat(testSlot).isEqualTo(0); } + @Test + public void getEsimSlotId_twoSimSlotsDeviceAndRemovableEsimIsSlot1_returnTheCorrectEsimSlot() { + when(mTelephonyManager.getUiccSlotsInfo()).thenReturn( + twoSimSlotsDeviceActivePsimActiveRemovableEsim()); + int testSlot = UiccSlotUtil.getEsimSlotId(mContext); + + assertThat(testSlot).isEqualTo(1); + } @Test public void getEsimSlotId_twoSimSlotsDeviceAndEsimIsSlot1_returnTheCorrectEsimSlot() { @@ -729,6 +737,12 @@ public class UiccSlotUtilTest { createUiccSlotInfo(true, false, 1, true)}; } + private UiccSlotInfo[] twoSimSlotsDeviceActivePsimActiveRemovableEsim() { + return new UiccSlotInfo[]{ + createUiccSlotInfo(false, true, 0, true), + createUiccSlotInfo(true, true, 1, true)}; + } + private UiccSlotInfo[] twoSimSlotsDeviceActiveEsimActivePsim() { return new UiccSlotInfo[]{ createUiccSlotInfo(true, false, 0, true), From 7d71d3f4518ac636500a52980b773ad2a0eba1b7 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Fri, 27 May 2022 16:40:31 +0800 Subject: [PATCH 2/2] [MEP] The removale slot can read the esim card Revert the wrong logic for removale slot part at ag/18579901, the removable slot can read the esim card. Bug: 233338345 Test: atest UiccSlotUtilTest Change-Id: Ic2ac6a5cc4d5846b8b1e2ca766348f239bb1b719 Merged-In: Ic2ac6a5cc4d5846b8b1e2ca766348f239bb1b719 --- src/com/android/settings/network/EnableMultiSimSidecar.java | 3 +-- src/com/android/settings/network/UiccSlotUtil.java | 1 - .../network/telephony/ToggleSubscriptionDialogActivity.java | 1 - .../android/settings/sim/receivers/SimSlotChangeHandler.java | 2 +- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/network/EnableMultiSimSidecar.java b/src/com/android/settings/network/EnableMultiSimSidecar.java index 5545a69dd21..aefd55f00e8 100644 --- a/src/com/android/settings/network/EnableMultiSimSidecar.java +++ b/src/com/android/settings/network/EnableMultiSimSidecar.java @@ -190,8 +190,7 @@ public class EnableMultiSimSidecar extends AsyncTaskSidecar { Set activeRemovableLogicalSlotIds = new ArraySet<>(); for (UiccSlotInfo info : infos) { for (UiccPortInfo portInfo :info.getPorts()) { - if (info != null && portInfo.isActive() && info.isRemovable() - && !info.getIsEuicc()) { + if (info != null && portInfo.isActive() && info.isRemovable()) { activeRemovableLogicalSlotIds.add(portInfo.getLogicalSlotIndex()); } } diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java index 2a08c1c3476..c27621a06dd 100644 --- a/src/com/android/settings/network/UiccSlotUtil.java +++ b/src/com/android/settings/network/UiccSlotUtil.java @@ -249,7 +249,6 @@ public class UiccSlotUtil { if (slotId == INVALID_PHYSICAL_SLOT_ID) { for (int i = 0; i < slots.length; i++) { if (slots[i].isRemovable() - && !slots[i].getIsEuicc() && !slots[i].getPorts().stream().findFirst().get().isActive() && slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_ERROR && slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_RESTRICTED) { diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java index 2a902e5785a..cc2986d5344 100644 --- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java +++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java @@ -589,7 +589,6 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc .anyMatch( slot -> slot != null && slot.isRemovable() - && !slot.getIsEuicc() && slot.getPorts().stream().anyMatch( port -> port.isActive()) && slot.getCardStateInfo() diff --git a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java index da3db8b1369..4a6b96c1fa3 100644 --- a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java +++ b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java @@ -294,7 +294,7 @@ public class SimSlotChangeHandler { return null; } for (UiccSlotInfo slotInfo : slotInfos) { - if (slotInfo != null && slotInfo.isRemovable() && !slotInfo.getIsEuicc()) { + if (slotInfo != null && slotInfo.isRemovable()) { return slotInfo; } }