Loading src/java/com/android/internal/telephony/uicc/UiccController.java +7 −3 Original line number Diff line number Diff line Loading @@ -1103,12 +1103,16 @@ public class UiccController extends Handler { options.toBundle()); } private boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) { /** * Check if slot status has changed from the last received one */ @VisibleForTesting public boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) { if (sLastSlotStatus == null || sLastSlotStatus.size() != slotStatusList.size()) { return true; } for (IccSlotStatus iccSlotStatus : slotStatusList) { if (!sLastSlotStatus.contains(iccSlotStatus)) { for (int i = 0; i < slotStatusList.size(); i++) { if (!sLastSlotStatus.get(i).equals(slotStatusList.get(i))) { return true; } } Loading tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +6 −0 Original line number Diff line number Diff line Loading @@ -423,6 +423,12 @@ public class ContextFixture implements TestFixture<Context> { sendBroadcast(intent); } @Override public void sendBroadcast(Intent intent, String receiverPermission, Bundle initialExtras) { logd("sendBroadcast called for " + intent.getAction()); sendBroadcast(intent); } @Override public void sendOrderedBroadcast(Intent intent, String receiverPermission) { logd("sendOrderedBroadcast called for " + intent.getAction()); Loading tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.telephony.uicc; import static junit.framework.Assert.fail; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; Loading Loading @@ -634,4 +635,32 @@ public class UiccControllerTest extends TelephonyTest { assertEquals(mUiccControllerUT.convertToPublicCardId(knownEidFromApdu), mUiccControllerUT.getCardIdForDefaultEuicc()); } @Test public void testSlotStatusChanged() { // simulate slot status loaded so that the UiccController sets the last slot status IccSlotStatus iss1 = new IccSlotStatus(); iss1.setSlotState(1 /* active */); iss1.eid = "eid1"; IccSlotStatus iss2 = new IccSlotStatus(); iss2.setSlotState(1 /* active */); iss2.eid = "eid2"; ArrayList<IccSlotStatus> status = new ArrayList<IccSlotStatus>(); status.add(iss1); status.add(iss2); AsyncResult ar = new AsyncResult(null, status, null); Message msg = Message.obtain(mUiccControllerUT, EVENT_GET_SLOT_STATUS_DONE, ar); mUiccControllerUT.handleMessage(msg); processAllMessages(); assertFalse(mUiccControllerUT.slotStatusChanged(status)); // change the order of the IccSlotStatus in the list status = new ArrayList<>(); status.add(iss2); status.add(iss1); // status should be treated different from last status assertTrue(mUiccControllerUT.slotStatusChanged(status)); } } Loading
src/java/com/android/internal/telephony/uicc/UiccController.java +7 −3 Original line number Diff line number Diff line Loading @@ -1103,12 +1103,16 @@ public class UiccController extends Handler { options.toBundle()); } private boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) { /** * Check if slot status has changed from the last received one */ @VisibleForTesting public boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) { if (sLastSlotStatus == null || sLastSlotStatus.size() != slotStatusList.size()) { return true; } for (IccSlotStatus iccSlotStatus : slotStatusList) { if (!sLastSlotStatus.contains(iccSlotStatus)) { for (int i = 0; i < slotStatusList.size(); i++) { if (!sLastSlotStatus.get(i).equals(slotStatusList.get(i))) { return true; } } Loading
tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +6 −0 Original line number Diff line number Diff line Loading @@ -423,6 +423,12 @@ public class ContextFixture implements TestFixture<Context> { sendBroadcast(intent); } @Override public void sendBroadcast(Intent intent, String receiverPermission, Bundle initialExtras) { logd("sendBroadcast called for " + intent.getAction()); sendBroadcast(intent); } @Override public void sendOrderedBroadcast(Intent intent, String receiverPermission) { logd("sendOrderedBroadcast called for " + intent.getAction()); Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.telephony.uicc; import static junit.framework.Assert.fail; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; Loading Loading @@ -634,4 +635,32 @@ public class UiccControllerTest extends TelephonyTest { assertEquals(mUiccControllerUT.convertToPublicCardId(knownEidFromApdu), mUiccControllerUT.getCardIdForDefaultEuicc()); } @Test public void testSlotStatusChanged() { // simulate slot status loaded so that the UiccController sets the last slot status IccSlotStatus iss1 = new IccSlotStatus(); iss1.setSlotState(1 /* active */); iss1.eid = "eid1"; IccSlotStatus iss2 = new IccSlotStatus(); iss2.setSlotState(1 /* active */); iss2.eid = "eid2"; ArrayList<IccSlotStatus> status = new ArrayList<IccSlotStatus>(); status.add(iss1); status.add(iss2); AsyncResult ar = new AsyncResult(null, status, null); Message msg = Message.obtain(mUiccControllerUT, EVENT_GET_SLOT_STATUS_DONE, ar); mUiccControllerUT.handleMessage(msg); processAllMessages(); assertFalse(mUiccControllerUT.slotStatusChanged(status)); // change the order of the IccSlotStatus in the list status = new ArrayList<>(); status.add(iss2); status.add(iss1); // status should be treated different from last status assertTrue(mUiccControllerUT.slotStatusChanged(status)); } }