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

Commit 13fb7b5e authored by Ling Ma's avatar Ling Ma Committed by Android (Google) Code Review
Browse files

Merge "Revert "Allow IWLAN network when power off modem"" into main

parents c0c30941 411b9595
Loading
Loading
Loading
Loading
+23 −27
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ public class ServiceStateTracker extends Handler {
    public static final int DEFAULT_GPRS_CHECK_PERIOD_MILLIS = 60 * 1000;

    /**
     * The timer value to wait for all cellular data networks to be torn down.
     * The timer value to wait for all data networks to be torn down.
     */
    private static final long POWER_OFF_ALL_DATA_NETWORKS_DISCONNECTED_TIMEOUT =
            TimeUnit.SECONDS.toMillis(10);
@@ -274,7 +274,7 @@ public class ServiceStateTracker extends Handler {
    protected static final int EVENT_IMS_STATE_CHANGED                 = 46;
    protected static final int EVENT_IMS_STATE_DONE                    = 47;
    protected static final int EVENT_IMS_CAPABILITY_CHANGED            = 48;
    protected static final int EVENT_ALL_CELLULAR_DATA_DISCONNECTED = 49;
    protected static final int EVENT_ALL_DATA_DISCONNECTED             = 49;
    protected static final int EVENT_PHONE_TYPE_SWITCHED               = 50;
    protected static final int EVENT_RADIO_POWER_FROM_CARRIER          = 51;
    protected static final int EVENT_IMS_SERVICE_STATE_CHANGED         = 53;
@@ -612,11 +612,11 @@ public class ServiceStateTracker extends Handler {
    private int mLastKnownAreaCode = CellInfo.UNAVAILABLE;

    /**
     * Data network controller callback for all cellular data disconnected. This is used when
     * turning on airplane mode, where service state tracker should wait for all cellular data
     * disconnected on all subscriptions before powering down the modem.
     * Data network controller callback for all data disconnected. This is used when turning on
     * airplane mode, where service state tracker should wait for all data disconnected on all
     * subscriptions before powering down the modem.
     */
    private DataNetworkControllerCallback mAllCellularDataDisconnectedCallback;
    private DataNetworkControllerCallback mDataDisconnectedCallback;

    /**
     * AccessNetworksManagerCallback is used for preferred on the IWLAN when preferred transport
@@ -722,13 +722,12 @@ public class ServiceStateTracker extends Handler {
        registerForImsCapabilityChanged(mCSST,
                CarrierServiceStateTracker.CARRIER_EVENT_IMS_CAPABILITIES_CHANGED, null);

        mAllCellularDataDisconnectedCallback = new DataNetworkControllerCallback(this::post) {
        mDataDisconnectedCallback = new DataNetworkControllerCallback(this::post) {
            @Override
            public void onAnyCellularDataNetworkExistingChanged(boolean anyCellularDataExisting) {
                log("onAnyCellularDataNetworkExistingChanged: anyCellularDataExisting="
                        + anyCellularDataExisting);
                if (!anyCellularDataExisting) {
                    sendEmptyMessage(EVENT_ALL_CELLULAR_DATA_DISCONNECTED);
            public void onAnyDataNetworkExistingChanged(boolean anyDataExisting) {
                log("onAnyDataNetworkExistingChanged: anyDataExisting=" + anyDataExisting);
                if (!anyDataExisting) {
                    sendEmptyMessage(EVENT_ALL_DATA_DISCONNECTED);
                }
            }
        };
@@ -1209,7 +1208,7 @@ public class ServiceStateTracker extends Handler {
            case EVENT_SET_RADIO_POWER_OFF:
                synchronized(this) {
                    mPendingRadioPowerOffAfterDataOff = false;
                    log("Wait for all cellular data networks torn down timed out. Power off now.");
                    log("Wait for all data networks torn down timed out. Power off now.");
                    hangupAndPowerOff();
                }
                break;
@@ -1479,18 +1478,18 @@ public class ServiceStateTracker extends Handler {
                }
                break;

            case EVENT_ALL_CELLULAR_DATA_DISCONNECTED:
                log("EVENT_ALL_CELLULAR_DATA_DISCONNECTED");
            case EVENT_ALL_DATA_DISCONNECTED:
                log("EVENT_ALL_DATA_DISCONNECTED");
                synchronized (this) {
                    if (!mPendingRadioPowerOffAfterDataOff) return;
                    boolean areAllDataDisconnectedOnAllPhones = true;
                    for (Phone phone : PhoneFactory.getPhones()) {
                        if (phone.getDataNetworkController().areAllCellularDataDisconnected()) {
                        if (phone.getDataNetworkController().areAllDataDisconnected()) {
                            phone.getDataNetworkController()
                                .unregisterDataNetworkControllerCallback(
                                        mAllCellularDataDisconnectedCallback);
                                        mDataDisconnectedCallback);
                        } else {
                            log("Still waiting for all cellular data disconnected on phone: "
                            log("Still waiting for all data disconnected on phone: "
                                    + phone.getSubId());
                            areAllDataDisconnectedOnAllPhones = false;
                        }
@@ -4981,17 +4980,17 @@ public class ServiceStateTracker extends Handler {
                }

                for (Phone phone : PhoneFactory.getPhones()) {
                    if (!phone.getDataNetworkController().areAllCellularDataDisconnected()) {
                    if (!phone.getDataNetworkController().areAllDataDisconnected()) {
                        log("powerOffRadioSafely: Data is active on phone " + phone.getSubId()
                                + ". Wait for all cellular data disconnect.");
                                + ". Wait for all data disconnect.");
                        mPendingRadioPowerOffAfterDataOff = true;
                        phone.getDataNetworkController().registerDataNetworkControllerCallback(
                                mAllCellularDataDisconnectedCallback);
                                mDataDisconnectedCallback);
                    }
                }

                // Tear down outside of the disconnected check to prevent race conditions.
                mPhone.getDataNetworkController().tearDownAllCellularDataNetworks(
                mPhone.getDataNetworkController().tearDownAllDataNetworks(
                        DataNetwork.TEAR_DOWN_REASON_AIRPLANE_MODE_ON);

                if (mPendingRadioPowerOffAfterDataOff) {
@@ -5049,11 +5048,8 @@ public class ServiceStateTracker extends Handler {
     */
    protected void hangupAndPowerOff() {
        if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) return;
        // hang up all active non-WFC voice calls
        boolean isWfc = mPhone.getImsRegistrationTech() == ImsRegistrationImplBase
                .REGISTRATION_TECH_IWLAN;
        if (isWfc) log("hangupAndPowerOff: VoWifi registered.");
        if ((!mPhone.isPhoneTypeGsm() || mPhone.isInCall()) && !isWfc) {
        // hang up all active voice calls
        if (!mPhone.isPhoneTypeGsm() || mPhone.isInCall()) {
            mPhone.mCT.mRingingCall.hangupIfAlive();
            mPhone.mCT.mBackgroundCall.hangupIfAlive();
            mPhone.mCT.mForegroundCall.hangupIfAlive();
+0 −8
Original line number Diff line number Diff line
@@ -818,12 +818,6 @@ public class DataNetwork extends StateMachine {
        public abstract void onDisconnected(@NonNull DataNetwork dataNetwork,
                @DataFailureCause int cause, @TearDownReason int tearDownReason);

        /**
         * Called when handover between IWLAN and cellular network started.
         * @param dataNetwork The data network.
         */
        public abstract void onHandoverStarted(@NonNull DataNetwork dataNetwork);

        /**
         * Called when handover between IWLAN and cellular network succeeded.
         *
@@ -1592,8 +1586,6 @@ public class DataNetwork extends StateMachine {
            sendMessageDelayed(EVENT_STUCK_IN_TRANSIENT_STATE,
                    mDataConfigManager.getNetworkHandoverTimeoutMs());
            notifyPreciseDataConnectionState();
            mDataNetworkCallback.invokeFromExecutor(
                    () -> mDataNetworkCallback.onHandoverStarted(DataNetwork.this));
            updateNetworkScore(true /* keepConnectedForHandover */);
        }

Loading