Loading src/java/com/android/internal/telephony/uicc/UiccSlot.java +3 −1 Original line number Diff line number Diff line Loading @@ -379,13 +379,15 @@ public class UiccSlot extends Handler { } private void disposeUiccCardIfNeeded(boolean isStateUnknown, int portIndex) { // First dispose UiccPort corresponding to the portIndex if (mUiccCard != null) { // First dispose UiccPort corresponding to the portIndex mUiccCard.disposePort(portIndex); if (ArrayUtils.isEmpty(mUiccCard.getUiccPortList())) { // No UiccPort objects are found, safe to dispose the card nullifyUiccCard(isStateUnknown); } } else { mStateIsUnknown = isStateUnknown; } } Loading tests/telephonytests/src/com/android/internal/telephony/uicc/UiccSlotTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -561,4 +561,22 @@ public class UiccSlotTest extends TelephonyTest { assertEquals(IccSlotStatus.MultipleEnabledProfilesMode.MEP_B, mUiccSlot.getSupportedMepMode()); } @Test @SmallTest public void testSimStateUnknown() { int phoneId = 0; int slotIndex = 0; // Initially state is unknown assertTrue(mUiccSlot.isStateUnknown()); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_ABSENT; mUiccSlot.update(mSimulatedCommands, mIccCardStatus, phoneId, slotIndex); assertNull(mUiccSlot.getUiccCard()); // As CardState is absent, state should not be unknown assertFalse(mUiccSlot.isStateUnknown()); // radio state unavailable mUiccSlot.onRadioStateUnavailable(phoneId); // When radio is not available, state is unknown assertTrue(mUiccSlot.isStateUnknown()); } } Loading
src/java/com/android/internal/telephony/uicc/UiccSlot.java +3 −1 Original line number Diff line number Diff line Loading @@ -379,13 +379,15 @@ public class UiccSlot extends Handler { } private void disposeUiccCardIfNeeded(boolean isStateUnknown, int portIndex) { // First dispose UiccPort corresponding to the portIndex if (mUiccCard != null) { // First dispose UiccPort corresponding to the portIndex mUiccCard.disposePort(portIndex); if (ArrayUtils.isEmpty(mUiccCard.getUiccPortList())) { // No UiccPort objects are found, safe to dispose the card nullifyUiccCard(isStateUnknown); } } else { mStateIsUnknown = isStateUnknown; } } Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/UiccSlotTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -561,4 +561,22 @@ public class UiccSlotTest extends TelephonyTest { assertEquals(IccSlotStatus.MultipleEnabledProfilesMode.MEP_B, mUiccSlot.getSupportedMepMode()); } @Test @SmallTest public void testSimStateUnknown() { int phoneId = 0; int slotIndex = 0; // Initially state is unknown assertTrue(mUiccSlot.isStateUnknown()); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_ABSENT; mUiccSlot.update(mSimulatedCommands, mIccCardStatus, phoneId, slotIndex); assertNull(mUiccSlot.getUiccCard()); // As CardState is absent, state should not be unknown assertFalse(mUiccSlot.isStateUnknown()); // radio state unavailable mUiccSlot.onRadioStateUnavailable(phoneId); // When radio is not available, state is unknown assertTrue(mUiccSlot.isStateUnknown()); } }