Loading src/java/com/android/internal/telephony/uicc/UiccController.java +1 −0 Original line number Diff line number Diff line Loading @@ -1163,6 +1163,7 @@ public class UiccController extends Handler { } if (changed && resp.refreshResult == IccRefreshResponse.REFRESH_RESULT_RESET) { uiccCard.getUiccProfile().updateIccAvailability(true); // If there is any change on RESET, reset carrier config as well. From carrier config // perspective, this is treated the same as sim state unknown CarrierConfigManager configManager = (CarrierConfigManager) Loading src/java/com/android/internal/telephony/uicc/UiccProfile.java +4 −1 Original line number Diff line number Diff line Loading @@ -523,7 +523,10 @@ public class UiccProfile extends IccCard { } } private void updateIccAvailability(boolean allAppsChanged) { /** * ICC availability/state changed. Update corresponding fields and external state if needed. */ public void updateIccAvailability(boolean allAppsChanged) { synchronized (mLock) { UiccCardApplication newApp; IccRecords newRecords = null; Loading tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doReturn; Loading Loading @@ -60,6 +62,7 @@ public class UiccControllerTest extends TelephonyTest { private static final int ICC_CHANGED_EVENT = 0; private static final int EVENT_GET_ICC_STATUS_DONE = 3; private static final int EVENT_GET_SLOT_STATUS_DONE = 4; private static final int EVENT_SIM_REFRESH = 8; private static final int EVENT_EID_READY = 9; @Mock private Handler mMockedHandler; Loading @@ -73,6 +76,8 @@ public class UiccControllerTest extends TelephonyTest { private UiccCard mMockCard; @Mock private EuiccCard mMockEuiccCard; @Mock private UiccProfile mMockProfile; private IccCardApplicationStatus composeUiccApplicationStatus( IccCardApplicationStatus.AppType appType, Loading Loading @@ -631,4 +636,22 @@ public class UiccControllerTest extends TelephonyTest { assertEquals(mUiccControllerUT.convertToPublicCardId(knownEidFromApdu), mUiccControllerUT.getCardIdForDefaultEuicc()); } @Test public void testSimRefresh() { mUiccControllerUT.mUiccSlots[0] = mMockSlot; doReturn(mMockCard).when(mMockSlot).getUiccCard(); doReturn(mMockProfile).when(mMockCard).getUiccProfile(); doReturn(true).when(mMockCard).resetAppWithAid(nullable(String.class), eq(true)); IccRefreshResponse resp = new IccRefreshResponse(); resp.refreshResult = IccRefreshResponse.REFRESH_RESULT_RESET; AsyncResult ar = new AsyncResult(null, resp, null); Message msg = Message.obtain(mUiccControllerUT, EVENT_SIM_REFRESH, ar); mUiccControllerUT.handleMessage(msg); processAllMessages(); // verify that updateIccAvailability() is called on refresh with RESET verify(mMockProfile).updateIccAvailability(true); } } Loading
src/java/com/android/internal/telephony/uicc/UiccController.java +1 −0 Original line number Diff line number Diff line Loading @@ -1163,6 +1163,7 @@ public class UiccController extends Handler { } if (changed && resp.refreshResult == IccRefreshResponse.REFRESH_RESULT_RESET) { uiccCard.getUiccProfile().updateIccAvailability(true); // If there is any change on RESET, reset carrier config as well. From carrier config // perspective, this is treated the same as sim state unknown CarrierConfigManager configManager = (CarrierConfigManager) Loading
src/java/com/android/internal/telephony/uicc/UiccProfile.java +4 −1 Original line number Diff line number Diff line Loading @@ -523,7 +523,10 @@ public class UiccProfile extends IccCard { } } private void updateIccAvailability(boolean allAppsChanged) { /** * ICC availability/state changed. Update corresponding fields and external state if needed. */ public void updateIccAvailability(boolean allAppsChanged) { synchronized (mLock) { UiccCardApplication newApp; IccRecords newRecords = null; Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doReturn; Loading Loading @@ -60,6 +62,7 @@ public class UiccControllerTest extends TelephonyTest { private static final int ICC_CHANGED_EVENT = 0; private static final int EVENT_GET_ICC_STATUS_DONE = 3; private static final int EVENT_GET_SLOT_STATUS_DONE = 4; private static final int EVENT_SIM_REFRESH = 8; private static final int EVENT_EID_READY = 9; @Mock private Handler mMockedHandler; Loading @@ -73,6 +76,8 @@ public class UiccControllerTest extends TelephonyTest { private UiccCard mMockCard; @Mock private EuiccCard mMockEuiccCard; @Mock private UiccProfile mMockProfile; private IccCardApplicationStatus composeUiccApplicationStatus( IccCardApplicationStatus.AppType appType, Loading Loading @@ -631,4 +636,22 @@ public class UiccControllerTest extends TelephonyTest { assertEquals(mUiccControllerUT.convertToPublicCardId(knownEidFromApdu), mUiccControllerUT.getCardIdForDefaultEuicc()); } @Test public void testSimRefresh() { mUiccControllerUT.mUiccSlots[0] = mMockSlot; doReturn(mMockCard).when(mMockSlot).getUiccCard(); doReturn(mMockProfile).when(mMockCard).getUiccProfile(); doReturn(true).when(mMockCard).resetAppWithAid(nullable(String.class), eq(true)); IccRefreshResponse resp = new IccRefreshResponse(); resp.refreshResult = IccRefreshResponse.REFRESH_RESULT_RESET; AsyncResult ar = new AsyncResult(null, resp, null); Message msg = Message.obtain(mUiccControllerUT, EVENT_SIM_REFRESH, ar); mUiccControllerUT.handleMessage(msg); processAllMessages(); // verify that updateIccAvailability() is called on refresh with RESET verify(mMockProfile).updateIccAvailability(true); } }