Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec89bbef authored by Muralidhar Reddy's avatar Muralidhar Reddy Committed by Muralidhar Reddy Mule
Browse files

Initial sim state unknown is not updated during cardstate absent event.

Test: Manual verification on P21 and P22, atest FrameworksTelephonyTests:UiccSlotTest
Bug: 274192269
Change-Id: Ic1abb3a96f8318cff87c7dcae6e19d0c890db139
parent b0e3f9b6
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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;
        }
    }

+18 −0
Original line number Diff line number Diff line
@@ -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());
    }
}