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

Commit 3194ecd5 authored by Sukanya Rajkhowa's avatar Sukanya Rajkhowa Committed by Amit Mahajan
Browse files

Set ServiceState before flags are evaluated

If APM is turned on while service state is OUT_OF_SERVICE and right when
polling for VOICE_REGISTRATION_STATE is being handled, the service state
change to APM is not notified to the registrants. Fix this by setting
service state before flags for change in state are evaluated

Bug: 22960426
Change-Id: I781344afe13120bc0fb8e6889c46b80f8a672db1
parent d7a35611
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -308,8 +308,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {

    @Override
    protected void pollStateDone() {
        log("pollStateDone: lte 1 ss=[" + mSS + "] newSS=[" + mNewSS + "]");

        updateRoamingState();

        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) {
@@ -318,6 +316,8 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
        }

        useDataRegStateForDataOnlyDevices();
        resetServiceStateInIwlanMode();
        log("pollStateDone: lte 1 ss=[" + mSS + "] newSS=[" + mNewSS + "]");

        boolean hasRegistered = mSS.getVoiceRegState() != ServiceState.STATE_IN_SERVICE
                && mNewSS.getVoiceRegState() == ServiceState.STATE_IN_SERVICE;
@@ -354,8 +354,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {

        boolean hasLocationChanged = !mNewCellLoc.equals(mCellLoc);

        resetServiceStateInIwlanMode();

        boolean has4gHandoff =
                mNewSS.getDataRegState() == ServiceState.STATE_IN_SERVICE &&
                (((mSS.getRilDataRadioTechnology() == ServiceState.RIL_RADIO_TECHNOLOGY_LTE) &&
+2 −4
Original line number Diff line number Diff line
@@ -1161,11 +1161,11 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
    }

    protected void pollStateDone() {
        if (DBG) log("pollStateDone: cdma oldSS=[" + mSS + "] newSS=[" + mNewSS + "]");

        updateRoamingState();

        useDataRegStateForDataOnlyDevices();
        resetServiceStateInIwlanMode();
        if (DBG) log("pollStateDone: cdma oldSS=[" + mSS + "] newSS=[" + mNewSS + "]");

        boolean hasRegistered =
            mSS.getVoiceRegState() != ServiceState.STATE_IN_SERVICE
@@ -1204,8 +1204,6 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {

        boolean hasLocationChanged = !mNewCellLoc.equals(mCellLoc);

		resetServiceStateInIwlanMode();

        TelephonyManager tm =
                (TelephonyManager) mPhone.getContext().getSystemService(Context.TELEPHONY_SERVICE);

+7 −10
Original line number Diff line number Diff line
@@ -1013,6 +1013,13 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
    }

    private void pollStateDone() {
        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) {
            mNewSS.setVoiceRoaming(true);
            mNewSS.setDataRoaming(true);
        }
        useDataRegStateForDataOnlyDevices();
        resetServiceStateInIwlanMode();

        if (DBG) {
            log("Poll ServiceState done: " +
                " oldSS=[" + mSS + "] newSS=[" + mNewSS + "]" +
@@ -1022,13 +1029,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
                " mNewReasonDataDenied=" + mNewReasonDataDenied);
        }

        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) {
            mNewSS.setVoiceRoaming(true);
            mNewSS.setDataRoaming(true);
        }

        useDataRegStateForDataOnlyDevices();

        boolean hasRegistered =
            mSS.getVoiceRegState() != ServiceState.STATE_IN_SERVICE
            && mNewSS.getVoiceRegState() == ServiceState.STATE_IN_SERVICE;
@@ -1068,9 +1068,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
        boolean hasDataRoamingOff = mSS.getDataRoaming() && !mNewSS.getDataRoaming();

        boolean hasLocationChanged = !mNewCellLoc.equals(mCellLoc);

		resetServiceStateInIwlanMode();

        TelephonyManager tm =
                (TelephonyManager) mPhone.getContext().getSystemService(Context.TELEPHONY_SERVICE);