Loading src/java/com/android/internal/telephony/uicc/IccCardProxy.java +0 −5 Original line number Diff line number Diff line Loading @@ -382,10 +382,6 @@ public class IccCardProxy extends Handler implements IccCard { } private void registerUiccCardEvents() { if (mUiccSlot != null) { // todo: reregistration is not needed unless slot mapping changes mUiccSlot.registerForAbsent(this, EVENT_ICC_ABSENT, null); } if (mUiccApplication != null) { mUiccApplication.registerForReady(this, EVENT_APP_READY, null); } Loading @@ -399,7 +395,6 @@ public class IccCardProxy extends Handler implements IccCard { } private void unregisterUiccCardEvents() { if (mUiccSlot != null) mUiccSlot.unregisterForAbsent(this); if (mUiccCard != null) mUiccCard.unregisterForCarrierPrivilegeRulesLoaded(this); if (mUiccApplication != null) { mUiccApplication.unregisterForReady(this); Loading src/java/com/android/internal/telephony/uicc/UiccSlot.java +3 −39 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.content.res.Resources; import android.os.Handler; import android.os.Message; import android.os.PowerManager; import android.os.Registrant; import android.os.RegistrantList; import android.telephony.Rlog; import android.util.LocalLog; import android.view.WindowManager; Loading Loading @@ -62,9 +60,6 @@ public class UiccSlot extends Handler { private String mIccId; private Integer mPhoneId = null; // todo: remove if this is not needed private RegistrantList mAbsentRegistrants = new RegistrantList(); private static final int EVENT_CARD_REMOVED = 13; private static final int EVENT_CARD_ADDED = 14; Loading Loading @@ -98,7 +93,6 @@ public class UiccSlot extends Handler { // No notifications while radio is off or we just powering up if (radioState == RadioState.RADIO_ON && mLastRadioState == RadioState.RADIO_ON) { if (DBG) log("update: notify card removed"); mAbsentRegistrants.notifyRegistrants(); sendMessage(obtainMessage(EVENT_CARD_REMOVED, null)); } Loading Loading @@ -147,11 +141,10 @@ public class UiccSlot extends Handler { if (iss.slotState == IccSlotStatus.SlotState.SLOTSTATE_INACTIVE) { if (mActive) { mActive = false; // treat as radio state unavailable onRadioStateUnavailable(); // set mPhoneId to null only after sim state changed broadcast is sent as it // needs the phoneId. The broadcast is sent from onRadioStateUnavailable() mLastRadioState = RadioState.RADIO_UNAVAILABLE; mPhoneId = null; if (mUiccCard != null) mUiccCard.dispose(); mUiccCard = null; } parseAtr(iss.atr); mCardState = iss.cardState; Loading Loading @@ -321,30 +314,6 @@ public class UiccSlot extends Handler { mLastRadioState = RadioState.RADIO_UNAVAILABLE; } /** * Notifies handler of any transition into State.ABSENT */ public void registerForAbsent(Handler h, int what, Object obj) { synchronized (mLock) { Registrant r = new Registrant(h, what, obj); mAbsentRegistrants.add(r); if (mCardState == CardState.CARDSTATE_ABSENT) { r.notifyRegistrant(); } } } /** * Unregister a handler for card absent notification */ public void unregisterForAbsent(Handler h) { synchronized (mLock) { mAbsentRegistrants.remove(h); } } private void log(String msg) { Rlog.d(TAG, msg); } Loading @@ -365,11 +334,6 @@ public class UiccSlot extends Handler { pw.println(" mCi=" + mCi); pw.println(" mActive=" + mActive); pw.println(" mLastRadioState=" + mLastRadioState); pw.println(" mAbsentRegistrants: size=" + mAbsentRegistrants.size()); for (int i = 0; i < mAbsentRegistrants.size(); i++) { pw.println(" mAbsentRegistrants[" + i + "]=" + ((Registrant) mAbsentRegistrants.get(i)).getHandler()); } pw.println(" mCardState=" + mCardState); if (mUiccCard != null) { pw.println(" mUiccCard=" + mUiccCard); Loading tests/telephonytests/src/com/android/internal/telephony/uicc/UiccSlotTest.java +0 −34 Original line number Diff line number Diff line Loading @@ -15,14 +15,10 @@ */ package com.android.internal.telephony.uicc; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.verify; import android.os.Handler; import android.os.HandlerThread; Loading @@ -34,7 +30,6 @@ import com.android.internal.telephony.TelephonyTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; public class UiccSlotTest extends TelephonyTest { Loading Loading @@ -98,35 +93,6 @@ public class UiccSlotTest extends TelephonyTest { super.tearDown(); } @Test @SmallTest public void testCardAbsentListener() { mUiccSlot.registerForAbsent(mMockedHandler, UICCCARD_ABSENT, null); /* assume hotswap capable, avoid bootup on card removal */ mContextFixture.putBooleanResource(com.android.internal.R.bool.config_hotswapCapable, true); mSimulatedCommands.setRadioPower(true, null); /* Mock Card State transition from card_present to card_absent */ logd("UICC Card Present update"); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_PRESENT; // mUiccSlot.update() needs to be called from the handler thread because it creates UiccCard Message mCardUpdate = mTestHandler.obtainMessage(UICCCARD_UPDATE_CARD_STATE_EVENT); setReady(false); mCardUpdate.sendToTarget(); waitUntilReady(); logd("UICC Card absent update"); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_ABSENT; mUiccSlot.update(mSimulatedCommands, mIccCardStatus, 0 /* phoneId */); waitForMs(50); ArgumentCaptor<Message> mCaptorMessage = ArgumentCaptor.forClass(Message.class); ArgumentCaptor<Long> mCaptorLong = ArgumentCaptor.forClass(Long.class); verify(mMockedHandler, atLeast(1)).sendMessageDelayed(mCaptorMessage.capture(), mCaptorLong.capture()); assertEquals(UICCCARD_ABSENT, mCaptorMessage.getValue().what); } @Test @SmallTest public void testUpdateSlotStatus() { Loading Loading
src/java/com/android/internal/telephony/uicc/IccCardProxy.java +0 −5 Original line number Diff line number Diff line Loading @@ -382,10 +382,6 @@ public class IccCardProxy extends Handler implements IccCard { } private void registerUiccCardEvents() { if (mUiccSlot != null) { // todo: reregistration is not needed unless slot mapping changes mUiccSlot.registerForAbsent(this, EVENT_ICC_ABSENT, null); } if (mUiccApplication != null) { mUiccApplication.registerForReady(this, EVENT_APP_READY, null); } Loading @@ -399,7 +395,6 @@ public class IccCardProxy extends Handler implements IccCard { } private void unregisterUiccCardEvents() { if (mUiccSlot != null) mUiccSlot.unregisterForAbsent(this); if (mUiccCard != null) mUiccCard.unregisterForCarrierPrivilegeRulesLoaded(this); if (mUiccApplication != null) { mUiccApplication.unregisterForReady(this); Loading
src/java/com/android/internal/telephony/uicc/UiccSlot.java +3 −39 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.content.res.Resources; import android.os.Handler; import android.os.Message; import android.os.PowerManager; import android.os.Registrant; import android.os.RegistrantList; import android.telephony.Rlog; import android.util.LocalLog; import android.view.WindowManager; Loading Loading @@ -62,9 +60,6 @@ public class UiccSlot extends Handler { private String mIccId; private Integer mPhoneId = null; // todo: remove if this is not needed private RegistrantList mAbsentRegistrants = new RegistrantList(); private static final int EVENT_CARD_REMOVED = 13; private static final int EVENT_CARD_ADDED = 14; Loading Loading @@ -98,7 +93,6 @@ public class UiccSlot extends Handler { // No notifications while radio is off or we just powering up if (radioState == RadioState.RADIO_ON && mLastRadioState == RadioState.RADIO_ON) { if (DBG) log("update: notify card removed"); mAbsentRegistrants.notifyRegistrants(); sendMessage(obtainMessage(EVENT_CARD_REMOVED, null)); } Loading Loading @@ -147,11 +141,10 @@ public class UiccSlot extends Handler { if (iss.slotState == IccSlotStatus.SlotState.SLOTSTATE_INACTIVE) { if (mActive) { mActive = false; // treat as radio state unavailable onRadioStateUnavailable(); // set mPhoneId to null only after sim state changed broadcast is sent as it // needs the phoneId. The broadcast is sent from onRadioStateUnavailable() mLastRadioState = RadioState.RADIO_UNAVAILABLE; mPhoneId = null; if (mUiccCard != null) mUiccCard.dispose(); mUiccCard = null; } parseAtr(iss.atr); mCardState = iss.cardState; Loading Loading @@ -321,30 +314,6 @@ public class UiccSlot extends Handler { mLastRadioState = RadioState.RADIO_UNAVAILABLE; } /** * Notifies handler of any transition into State.ABSENT */ public void registerForAbsent(Handler h, int what, Object obj) { synchronized (mLock) { Registrant r = new Registrant(h, what, obj); mAbsentRegistrants.add(r); if (mCardState == CardState.CARDSTATE_ABSENT) { r.notifyRegistrant(); } } } /** * Unregister a handler for card absent notification */ public void unregisterForAbsent(Handler h) { synchronized (mLock) { mAbsentRegistrants.remove(h); } } private void log(String msg) { Rlog.d(TAG, msg); } Loading @@ -365,11 +334,6 @@ public class UiccSlot extends Handler { pw.println(" mCi=" + mCi); pw.println(" mActive=" + mActive); pw.println(" mLastRadioState=" + mLastRadioState); pw.println(" mAbsentRegistrants: size=" + mAbsentRegistrants.size()); for (int i = 0; i < mAbsentRegistrants.size(); i++) { pw.println(" mAbsentRegistrants[" + i + "]=" + ((Registrant) mAbsentRegistrants.get(i)).getHandler()); } pw.println(" mCardState=" + mCardState); if (mUiccCard != null) { pw.println(" mUiccCard=" + mUiccCard); Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/UiccSlotTest.java +0 −34 Original line number Diff line number Diff line Loading @@ -15,14 +15,10 @@ */ package com.android.internal.telephony.uicc; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.verify; import android.os.Handler; import android.os.HandlerThread; Loading @@ -34,7 +30,6 @@ import com.android.internal.telephony.TelephonyTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; public class UiccSlotTest extends TelephonyTest { Loading Loading @@ -98,35 +93,6 @@ public class UiccSlotTest extends TelephonyTest { super.tearDown(); } @Test @SmallTest public void testCardAbsentListener() { mUiccSlot.registerForAbsent(mMockedHandler, UICCCARD_ABSENT, null); /* assume hotswap capable, avoid bootup on card removal */ mContextFixture.putBooleanResource(com.android.internal.R.bool.config_hotswapCapable, true); mSimulatedCommands.setRadioPower(true, null); /* Mock Card State transition from card_present to card_absent */ logd("UICC Card Present update"); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_PRESENT; // mUiccSlot.update() needs to be called from the handler thread because it creates UiccCard Message mCardUpdate = mTestHandler.obtainMessage(UICCCARD_UPDATE_CARD_STATE_EVENT); setReady(false); mCardUpdate.sendToTarget(); waitUntilReady(); logd("UICC Card absent update"); mIccCardStatus.mCardState = IccCardStatus.CardState.CARDSTATE_ABSENT; mUiccSlot.update(mSimulatedCommands, mIccCardStatus, 0 /* phoneId */); waitForMs(50); ArgumentCaptor<Message> mCaptorMessage = ArgumentCaptor.forClass(Message.class); ArgumentCaptor<Long> mCaptorLong = ArgumentCaptor.forClass(Long.class); verify(mMockedHandler, atLeast(1)).sendMessageDelayed(mCaptorMessage.capture(), mCaptorLong.capture()); assertEquals(UICCCARD_ABSENT, mCaptorMessage.getValue().what); } @Test @SmallTest public void testUpdateSlotStatus() { Loading