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

Commit 6873b4b8 authored by Daniel Bright's avatar Daniel Bright Committed by Gerrit Code Review
Browse files

Merge "Call SST#setImsRegState on ImsPhone set reg state"

parents 747871c1 6c17f85f
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -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;

@@ -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);
@@ -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();
@@ -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;

+13 −11
Original line number Diff line number Diff line
@@ -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();
@@ -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);
        }
@@ -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);
@@ -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);
+3 −2
Original line number Diff line number Diff line
@@ -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;
        }
    }
+24 −2
Original line number Diff line number Diff line
@@ -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;
@@ -125,7 +126,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {
    @Mock
    private Handler mTestHandler;
    @Mock
    protected IAlarmManager mAlarmManager;
    protected AlarmManager mAlarmManager;

    private CellularNetworkService mCellularNetworkService;

@@ -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,
@@ -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 {
+2 −16
Original line number Diff line number Diff line
@@ -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);
@@ -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);