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

Commit 1ec98512 authored by Chen Xu's avatar Chen Xu Committed by android-build-merger
Browse files

Merge "reset carrier actions when exits roaming state."

am: 6c221339

Change-Id: I559ecedcaa02c1edc99a4dc08483a57ce3f8e279
parents 8e2e9d00 6c221339
Loading
Loading
Loading
Loading
+41 −7
Original line number Original line Diff line number Diff line
@@ -59,6 +59,8 @@ public class CarrierActionAgent extends Handler {
    public static final int CARRIER_ACTION_RESET                         = 2;
    public static final int CARRIER_ACTION_RESET                         = 2;
    public static final int EVENT_APM_SETTINGS_CHANGED                   = 3;
    public static final int EVENT_APM_SETTINGS_CHANGED                   = 3;
    public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED           = 4;
    public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED           = 4;
    public static final int EVENT_DATA_ROAMING_OFF                       = 5;
    public static final int EVENT_SIM_STATE_CHANGED                      = 6;


    /** Member variables */
    /** Member variables */
    private final Phone mPhone;
    private final Phone mPhone;
@@ -128,22 +130,46 @@ public class CarrierActionAgent extends Handler {
                break;
                break;
            case CARRIER_ACTION_RESET:
            case CARRIER_ACTION_RESET:
                log("CARRIER_ACTION_RESET");
                log("CARRIER_ACTION_RESET");
                carrierActionSetMeteredApnsEnabled(true);
                carrierActionReset();
                carrierActionSetRadioEnabled(true);
                // notify configured carrier apps for reset
                mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers(
                        new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET));
                break;
                break;
            case EVENT_APM_SETTINGS_CHANGED:
            case EVENT_APM_SETTINGS_CHANGED:
                log("EVENT_APM_SETTINGS_CHANGED");
                log("EVENT_APM_SETTINGS_CHANGED");
                if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(),
                if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(),
                        Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) {
                        Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) {
                    sendEmptyMessage(CARRIER_ACTION_RESET);
                    carrierActionReset();
                }
                }
                break;
                break;
            case EVENT_MOBILE_DATA_SETTINGS_CHANGED:
            case EVENT_MOBILE_DATA_SETTINGS_CHANGED:
                log("EVENT_MOBILE_DATA_SETTINGS_CHANGED");
                log("EVENT_MOBILE_DATA_SETTINGS_CHANGED");
                if (!mPhone.getDataEnabled()) sendEmptyMessage(CARRIER_ACTION_RESET);
                if (!mPhone.getDataEnabled()) carrierActionReset();
                break;
            case EVENT_DATA_ROAMING_OFF:
                log("EVENT_DATA_ROAMING_OFF");
                // reset carrier actions when exit roaming state.
                carrierActionReset();
                break;
            case EVENT_SIM_STATE_CHANGED:
                String iccState = (String) msg.obj;
                if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(iccState)) {
                    log("EVENT_SIM_STATE_CHANGED status: " + iccState);
                    carrierActionReset();
                    String mobileData = Settings.Global.MOBILE_DATA;
                    if (TelephonyManager.getDefault().getSimCount() != 1) {
                        mobileData = mobileData + mPhone.getSubId();
                    }
                    mSettingsObserver.observe(Settings.Global.getUriFor(mobileData),
                            EVENT_MOBILE_DATA_SETTINGS_CHANGED);
                    mSettingsObserver.observe(
                            Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON),
                            EVENT_APM_SETTINGS_CHANGED);
                    mPhone.getServiceStateTracker().registerForDataRoamingOff(
                            this, EVENT_DATA_ROAMING_OFF, null, false);
                } else if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(iccState)) {
                    log("EVENT_SIM_STATE_CHANGED status: " + iccState);
                    carrierActionReset();
                    mSettingsObserver.unobserve();
                    mPhone.getServiceStateTracker().unregisterForDataRoamingOff(this);
                }
                break;
                break;
            default:
            default:
                loge("Unknown carrier action: " + msg.what);
                loge("Unknown carrier action: " + msg.what);
@@ -175,6 +201,14 @@ public class CarrierActionAgent extends Handler {
        sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled));
        sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled));
    }
    }


    private void carrierActionReset() {
        carrierActionSetMeteredApnsEnabled(true);
        carrierActionSetRadioEnabled(true);
        // notify configured carrier apps for reset
        mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers(
                new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET));
    }

    private RegistrantList getRegistrantsFromAction(int action) {
    private RegistrantList getRegistrantsFromAction(int action) {
        switch (action) {
        switch (action) {
            case CARRIER_ACTION_SET_METERED_APNS_ENABLED:
            case CARRIER_ACTION_SET_METERED_APNS_ENABLED:
+3 −2
Original line number Original line Diff line number Diff line
@@ -843,12 +843,13 @@ public class ServiceStateTracker extends Handler {
     * @param h handler to notify
     * @param h handler to notify
     * @param what what code of message when delivered
     * @param what what code of message when delivered
     * @param obj placed in Message.obj
     * @param obj placed in Message.obj
     * @param notifyNow notify upon registration if data roaming is off
     */
     */
    public void registerForDataRoamingOff(Handler h, int what, Object obj) {
    public void registerForDataRoamingOff(Handler h, int what, Object obj, boolean notifyNow) {
        Registrant r = new Registrant(h, what, obj);
        Registrant r = new Registrant(h, what, obj);
        mDataRoamingOffRegistrants.add(r);
        mDataRoamingOffRegistrants.add(r);


        if (!mSS.getDataRoaming()) {
        if (notifyNow && !mSS.getDataRoaming()) {
            r.notifyRegistrant();
            r.notifyRegistrant();
        }
        }
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -1053,7 +1053,7 @@ public class DataConnection extends StateMachine {
            mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(),
            mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(),
                    DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null);
                    DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null);
            mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(),
            mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(),
                    DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null);
                    DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null, true);


            // Add ourselves to the list of data connections
            // Add ourselves to the list of data connections
            mDcController.addDc(DataConnection.this);
            mDcController.addDc(DataConnection.this);
+1 −1
Original line number Original line Diff line number Diff line
@@ -681,7 +681,7 @@ public class DcTracker extends Handler {
        mPhone.getServiceStateTracker().registerForDataRoamingOn(this,
        mPhone.getServiceStateTracker().registerForDataRoamingOn(this,
                DctConstants.EVENT_ROAMING_ON, null);
                DctConstants.EVENT_ROAMING_ON, null);
        mPhone.getServiceStateTracker().registerForDataRoamingOff(this,
        mPhone.getServiceStateTracker().registerForDataRoamingOff(this,
                DctConstants.EVENT_ROAMING_OFF, null);
                DctConstants.EVENT_ROAMING_OFF, null, true);
        mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this,
        mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this,
                DctConstants.EVENT_PS_RESTRICT_ENABLED, null);
                DctConstants.EVENT_PS_RESTRICT_ENABLED, null);
        mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this,
        mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this,
+2 −2
Original line number Original line Diff line number Diff line
@@ -577,7 +577,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {


        waitForMs(100);
        waitForMs(100);


        sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null);
        sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true);


        // Disable roaming
        // Disable roaming
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();
@@ -1001,7 +1001,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {


        waitForMs(200);
        waitForMs(200);


        sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null);
        sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true);
        sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null);
        sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null);
        sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null);
        sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null);