Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +20 −8 Original line number Diff line number Diff line Loading @@ -1318,8 +1318,10 @@ public class ServiceStateTracker extends Handler { case EVENT_IMS_STATE_DONE: ar = (AsyncResult) msg.obj; if (ar.exception == null) { int[] responseArray = (int[])ar.result; mImsRegistered = (responseArray[0] == 1) ? true : false; final int[] responseArray = (int[]) ar.result; final boolean imsRegistered = responseArray[0] == 1; mPhone.setImsRegistrationState(imsRegistered); mImsRegistered = imsRegistered; } break; Loading Loading @@ -2970,7 +2972,7 @@ public class ServiceStateTracker extends Handler { mRadioPowerLog.log(tmpLog); } if (mPhone.isPhoneTypeGsm() && mAlarmSwitch) { if (mAlarmSwitch) { if(DBG) log("mAlarmSwitch == true"); Context context = mPhone.getContext(); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Loading @@ -2985,7 +2987,7 @@ public class ServiceStateTracker extends Handler { } else if ((!mDesiredPowerState || mRadioDisabledByCarrier) && mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) { // If it's on and available and we want it off gracefully if (mPhone.isPhoneTypeGsm() && mPowerOffDelayNeed) { if (mPowerOffDelayNeed) { if (mImsRegistrationOnOff && !mAlarmSwitch) { if(DBG) log("mImsRegistrationOnOff == true"); Context context = mPhone.getContext(); Loading Loading @@ -3122,15 +3124,25 @@ public class ServiceStateTracker extends Handler { sendMessage(obtainMessage(EVENT_IMS_SERVICE_STATE_CHANGED)); } public void setImsRegistrationState(boolean registered) { log("ImsRegistrationState - registered : " + registered); /** * Sets the Ims registration state. If the 3 second shut down timer has begun and the state * is set to unregistered, the timer is cancelled and the radio is shutdown immediately. * * @param registered whether ims is registered */ public void setImsRegistrationState(final boolean registered) { log("setImsRegistrationState: {registered=" + registered + " mImsRegistrationOnOff=" + mImsRegistrationOnOff + " mAlarmSwitch=" + mAlarmSwitch + "}"); if (mImsRegistrationOnOff && !registered) { if (mAlarmSwitch) { mImsRegistrationOnOff = registered; Context context = mPhone.getContext(); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); final Context context = mPhone.getContext(); final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.cancel(mRadioOffIntent); mAlarmSwitch = false; Loading src/java/com/android/internal/telephony/imsphone/ImsPhone.java +13 −11 Original line number Diff line number Diff line Loading @@ -2100,11 +2100,6 @@ public class ImsPhone extends ImsPhoneBase { RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED); } public void setImsRegistrationState(@RegistrationManager.ImsRegistrationState int value) { if (DBG) logd("setImsRegistrationState: " + value); mImsMmTelRegistrationHelper.updateRegistrationState(value); } @Override public void callEndCleanupHandOverCallIfAny() { mCT.callEndCleanupHandOverCallIfAny(); Loading Loading @@ -2387,12 +2382,13 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsRegistered(int imsRadioTech) { if (DBG) { logd("onImsMmTelConnected imsRadioTech=" logd("handleImsRegistered: onImsMmTelConnected imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); } mRegLocalLog.log("onImsMmTelConnected imsRadioTech=" mRegLocalLog.log("handleImsRegistered: onImsMmTelConnected imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); setServiceState(ServiceState.STATE_IN_SERVICE); getDefaultPhone().setImsRegistrationState(true); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.CONNECTED, null); mImsStats.onImsRegistered(imsRadioTech); } Loading @@ -2400,12 +2396,13 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsRegistering(int imsRadioTech) { if (DBG) { logd("onImsMmTelProgressing imsRadioTech=" logd("handleImsRegistering: onImsMmTelProgressing imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); } mRegLocalLog.log("onImsMmTelProgressing imsRadioTech=" mRegLocalLog.log("handleImsRegistering: onImsMmTelProgressing imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); setServiceState(ServiceState.STATE_OUT_OF_SERVICE); getDefaultPhone().setImsRegistrationState(false); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.PROGRESSING, null); mImsStats.onImsRegistering(imsRadioTech); Loading @@ -2413,10 +2410,15 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsUnregistered(ImsReasonInfo imsReasonInfo) { if (DBG) logd("onImsMmTelDisconnected imsReasonInfo=" + imsReasonInfo); mRegLocalLog.log("onImsMmTelDisconnected imsRadioTech=" + imsReasonInfo); if (DBG) { logd("handleImsUnregistered: onImsMmTelDisconnected imsReasonInfo=" + imsReasonInfo); } mRegLocalLog.log("handleImsUnregistered: onImsMmTelDisconnected imsRadioTech=" + imsReasonInfo); setServiceState(ServiceState.STATE_OUT_OF_SERVICE); processDisconnectReason(imsReasonInfo); getDefaultPhone().setImsRegistrationState(false); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.DISCONNECTED, imsReasonInfo); mImsStats.onImsUnregistered(imsReasonInfo); Loading src/java/com/android/internal/telephony/imsphone/ImsRegistrationCallbackHelper.java +3 −2 Original line number Diff line number Diff line Loading @@ -109,8 +109,9 @@ public class ImsRegistrationCallbackHelper { public synchronized void updateRegistrationState( @RegistrationManager.ImsRegistrationState int newState) { synchronized (mLock) { Log.d(TAG, "updateRegistrationState: registration state from " + mRegistrationState + " to " + newState); Log.d(TAG, "updateRegistrationState: registration state from " + RegistrationManager.registrationStateToString(mRegistrationState) + " to " + RegistrationManager.registrationStateToString(newState)); mRegistrationState = newState; } } Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +24 −2 Original line number Diff line number Diff line Loading @@ -36,9 +36,10 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.IAlarmManager; import android.app.AlarmManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; Loading Loading @@ -125,7 +126,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Mock private Handler mTestHandler; @Mock protected IAlarmManager mAlarmManager; protected AlarmManager mAlarmManager; private CellularNetworkService mCellularNetworkService; Loading Loading @@ -231,6 +232,8 @@ public class ServiceStateTrackerTest extends TelephonyTest { logd("ServiceStateTrackerTest +Setup!"); super.setUp("ServiceStateTrackerTest"); doReturn(mAlarmManager).when(mContext).getSystemService(eq(Context.ALARM_SERVICE)); mContextFixture.putResource(R.string.config_wwan_network_service_package, "com.android.phone"); mContextFixture.putResource(R.string.config_wlan_network_service_package, Loading Loading @@ -1917,6 +1920,25 @@ public class ServiceStateTrackerTest extends TelephonyTest { != TelephonyManager.RADIO_POWER_UNAVAILABLE); } @Test @SmallTest public void testSetImsRegisteredStateRunsShutdownImmediately() throws Exception { doReturn(true).when(mPhone).isPhoneTypeGsm(); sst.setImsRegistrationState(true); mSimulatedCommands.setRadioPowerFailResponse(false); sst.setRadioPower(true); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState()); sst.requestShutdown(); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); sst.setImsRegistrationState(false); verify(mAlarmManager).cancel(any(PendingIntent.class)); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); assertEquals(TelephonyManager.RADIO_POWER_UNAVAILABLE, mSimulatedCommands.getRadioState()); } @Test @SmallTest public void testSetTimeFromNITZStr() throws Exception { Loading tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java +2 −16 Original line number Diff line number Diff line Loading @@ -668,7 +668,7 @@ public class ImsPhoneTest extends TelephonyTest { @SmallTest public void testImsRegistered() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_IN_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_REGISTERED); mImsPhoneUT.setImsRegistered(true); assertTrue(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); Loading @@ -678,25 +678,11 @@ public class ImsPhoneTest extends TelephonyTest { assertEquals(RegistrationManager.REGISTRATION_STATE_REGISTERED, regResult.intValue()); } @Test @SmallTest public void testImsRegistering() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_OUT_OF_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_REGISTERING); assertFalse(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); mImsPhoneUT.getImsRegistrationState(result::offer); Integer regResult = result.poll(1000, TimeUnit.MILLISECONDS); assertNotNull(regResult); assertEquals(RegistrationManager.REGISTRATION_STATE_REGISTERING, regResult.intValue()); } @Test @SmallTest public void testImsDeregistered() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_OUT_OF_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED); mImsPhoneUT.setImsRegistered(false); assertFalse(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); Loading Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +20 −8 Original line number Diff line number Diff line Loading @@ -1318,8 +1318,10 @@ public class ServiceStateTracker extends Handler { case EVENT_IMS_STATE_DONE: ar = (AsyncResult) msg.obj; if (ar.exception == null) { int[] responseArray = (int[])ar.result; mImsRegistered = (responseArray[0] == 1) ? true : false; final int[] responseArray = (int[]) ar.result; final boolean imsRegistered = responseArray[0] == 1; mPhone.setImsRegistrationState(imsRegistered); mImsRegistered = imsRegistered; } break; Loading Loading @@ -2970,7 +2972,7 @@ public class ServiceStateTracker extends Handler { mRadioPowerLog.log(tmpLog); } if (mPhone.isPhoneTypeGsm() && mAlarmSwitch) { if (mAlarmSwitch) { if(DBG) log("mAlarmSwitch == true"); Context context = mPhone.getContext(); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Loading @@ -2985,7 +2987,7 @@ public class ServiceStateTracker extends Handler { } else if ((!mDesiredPowerState || mRadioDisabledByCarrier) && mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) { // If it's on and available and we want it off gracefully if (mPhone.isPhoneTypeGsm() && mPowerOffDelayNeed) { if (mPowerOffDelayNeed) { if (mImsRegistrationOnOff && !mAlarmSwitch) { if(DBG) log("mImsRegistrationOnOff == true"); Context context = mPhone.getContext(); Loading Loading @@ -3122,15 +3124,25 @@ public class ServiceStateTracker extends Handler { sendMessage(obtainMessage(EVENT_IMS_SERVICE_STATE_CHANGED)); } public void setImsRegistrationState(boolean registered) { log("ImsRegistrationState - registered : " + registered); /** * Sets the Ims registration state. If the 3 second shut down timer has begun and the state * is set to unregistered, the timer is cancelled and the radio is shutdown immediately. * * @param registered whether ims is registered */ public void setImsRegistrationState(final boolean registered) { log("setImsRegistrationState: {registered=" + registered + " mImsRegistrationOnOff=" + mImsRegistrationOnOff + " mAlarmSwitch=" + mAlarmSwitch + "}"); if (mImsRegistrationOnOff && !registered) { if (mAlarmSwitch) { mImsRegistrationOnOff = registered; Context context = mPhone.getContext(); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); final Context context = mPhone.getContext(); final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.cancel(mRadioOffIntent); mAlarmSwitch = false; Loading
src/java/com/android/internal/telephony/imsphone/ImsPhone.java +13 −11 Original line number Diff line number Diff line Loading @@ -2100,11 +2100,6 @@ public class ImsPhone extends ImsPhoneBase { RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED); } public void setImsRegistrationState(@RegistrationManager.ImsRegistrationState int value) { if (DBG) logd("setImsRegistrationState: " + value); mImsMmTelRegistrationHelper.updateRegistrationState(value); } @Override public void callEndCleanupHandOverCallIfAny() { mCT.callEndCleanupHandOverCallIfAny(); Loading Loading @@ -2387,12 +2382,13 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsRegistered(int imsRadioTech) { if (DBG) { logd("onImsMmTelConnected imsRadioTech=" logd("handleImsRegistered: onImsMmTelConnected imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); } mRegLocalLog.log("onImsMmTelConnected imsRadioTech=" mRegLocalLog.log("handleImsRegistered: onImsMmTelConnected imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); setServiceState(ServiceState.STATE_IN_SERVICE); getDefaultPhone().setImsRegistrationState(true); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.CONNECTED, null); mImsStats.onImsRegistered(imsRadioTech); } Loading @@ -2400,12 +2396,13 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsRegistering(int imsRadioTech) { if (DBG) { logd("onImsMmTelProgressing imsRadioTech=" logd("handleImsRegistering: onImsMmTelProgressing imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); } mRegLocalLog.log("onImsMmTelProgressing imsRadioTech=" mRegLocalLog.log("handleImsRegistering: onImsMmTelProgressing imsRadioTech=" + AccessNetworkConstants.transportTypeToString(imsRadioTech)); setServiceState(ServiceState.STATE_OUT_OF_SERVICE); getDefaultPhone().setImsRegistrationState(false); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.PROGRESSING, null); mImsStats.onImsRegistering(imsRadioTech); Loading @@ -2413,10 +2410,15 @@ public class ImsPhone extends ImsPhoneBase { @Override public void handleImsUnregistered(ImsReasonInfo imsReasonInfo) { if (DBG) logd("onImsMmTelDisconnected imsReasonInfo=" + imsReasonInfo); mRegLocalLog.log("onImsMmTelDisconnected imsRadioTech=" + imsReasonInfo); if (DBG) { logd("handleImsUnregistered: onImsMmTelDisconnected imsReasonInfo=" + imsReasonInfo); } mRegLocalLog.log("handleImsUnregistered: onImsMmTelDisconnected imsRadioTech=" + imsReasonInfo); setServiceState(ServiceState.STATE_OUT_OF_SERVICE); processDisconnectReason(imsReasonInfo); getDefaultPhone().setImsRegistrationState(false); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.DISCONNECTED, imsReasonInfo); mImsStats.onImsUnregistered(imsReasonInfo); Loading
src/java/com/android/internal/telephony/imsphone/ImsRegistrationCallbackHelper.java +3 −2 Original line number Diff line number Diff line Loading @@ -109,8 +109,9 @@ public class ImsRegistrationCallbackHelper { public synchronized void updateRegistrationState( @RegistrationManager.ImsRegistrationState int newState) { synchronized (mLock) { Log.d(TAG, "updateRegistrationState: registration state from " + mRegistrationState + " to " + newState); Log.d(TAG, "updateRegistrationState: registration state from " + RegistrationManager.registrationStateToString(mRegistrationState) + " to " + RegistrationManager.registrationStateToString(newState)); mRegistrationState = newState; } } Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +24 −2 Original line number Diff line number Diff line Loading @@ -36,9 +36,10 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.IAlarmManager; import android.app.AlarmManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; Loading Loading @@ -125,7 +126,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Mock private Handler mTestHandler; @Mock protected IAlarmManager mAlarmManager; protected AlarmManager mAlarmManager; private CellularNetworkService mCellularNetworkService; Loading Loading @@ -231,6 +232,8 @@ public class ServiceStateTrackerTest extends TelephonyTest { logd("ServiceStateTrackerTest +Setup!"); super.setUp("ServiceStateTrackerTest"); doReturn(mAlarmManager).when(mContext).getSystemService(eq(Context.ALARM_SERVICE)); mContextFixture.putResource(R.string.config_wwan_network_service_package, "com.android.phone"); mContextFixture.putResource(R.string.config_wlan_network_service_package, Loading Loading @@ -1917,6 +1920,25 @@ public class ServiceStateTrackerTest extends TelephonyTest { != TelephonyManager.RADIO_POWER_UNAVAILABLE); } @Test @SmallTest public void testSetImsRegisteredStateRunsShutdownImmediately() throws Exception { doReturn(true).when(mPhone).isPhoneTypeGsm(); sst.setImsRegistrationState(true); mSimulatedCommands.setRadioPowerFailResponse(false); sst.setRadioPower(true); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState()); sst.requestShutdown(); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); sst.setImsRegistrationState(false); verify(mAlarmManager).cancel(any(PendingIntent.class)); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); assertEquals(TelephonyManager.RADIO_POWER_UNAVAILABLE, mSimulatedCommands.getRadioState()); } @Test @SmallTest public void testSetTimeFromNITZStr() throws Exception { Loading
tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java +2 −16 Original line number Diff line number Diff line Loading @@ -668,7 +668,7 @@ public class ImsPhoneTest extends TelephonyTest { @SmallTest public void testImsRegistered() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_IN_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_REGISTERED); mImsPhoneUT.setImsRegistered(true); assertTrue(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); Loading @@ -678,25 +678,11 @@ public class ImsPhoneTest extends TelephonyTest { assertEquals(RegistrationManager.REGISTRATION_STATE_REGISTERED, regResult.intValue()); } @Test @SmallTest public void testImsRegistering() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_OUT_OF_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_REGISTERING); assertFalse(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); mImsPhoneUT.getImsRegistrationState(result::offer); Integer regResult = result.poll(1000, TimeUnit.MILLISECONDS); assertNotNull(regResult); assertEquals(RegistrationManager.REGISTRATION_STATE_REGISTERING, regResult.intValue()); } @Test @SmallTest public void testImsDeregistered() throws Exception { mImsPhoneUT.setServiceState(ServiceState.STATE_OUT_OF_SERVICE); mImsPhoneUT.setImsRegistrationState(RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED); mImsPhoneUT.setImsRegistered(false); assertFalse(mImsPhoneUT.isImsRegistered()); LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1); Loading