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

Commit 082eaec2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "pending tear down check all DNs" into main

parents da314434 937a7a2e
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -227,7 +227,6 @@ public class ServiceStateTracker extends Handler {
    private final RegistrantList mAreaCodeChangedRegistrants = new RegistrantList();

    /* Radio power off pending flag */
    // @GuardedBy("this")
    private volatile boolean mPendingRadioPowerOffAfterDataOff = false;

    /** Waiting period before recheck gprs and voice registration. */
@@ -5016,20 +5015,10 @@ public class ServiceStateTracker extends Handler {
    }

    /**
     * process the pending request to turn radio off after data is disconnected
     *
     * return true if there is pending request to process; false otherwise.
     * return true if there is pending disconnect data request to process; false otherwise.
     */
    public boolean processPendingRadioPowerOffAfterDataOff() {
        synchronized(this) {
            if (mPendingRadioPowerOffAfterDataOff) {
                if (DBG) log("Process pending request to turn radio off.");
                hangupAndPowerOff();
                mPendingRadioPowerOffAfterDataOff = false;
                return true;
            }
            return false;
        }
    public boolean isPendingRadioPowerOffAfterDataOff() {
        return mPendingRadioPowerOffAfterDataOff;
    }

    private void onCarrierConfigurationChanged(int slotIndex) {
+2 −11
Original line number Diff line number Diff line
@@ -399,12 +399,6 @@ public class DataNetworkController extends Handler {
    /** Event counter for WWAN setup data failure within time window to trigger anomaly report. */
    private @NonNull SlidingWindowEventCounter mSetupDataCallWwanFailureCounter;

    /**
     * {@code true} if {@link #tearDownAllDataNetworks(int)} was invoked and waiting for all
     * networks torn down.
     */
    private boolean mPendingTearDownAllNetworks = false;

    /**
     * The capabilities of the latest released IMS request. To detect back to back release/request
     * IMS network.
@@ -1628,7 +1622,7 @@ public class DataNetworkController extends Handler {
        }

        // Check if there are pending tear down all networks request.
        if (mPendingTearDownAllNetworks) {
        if (mPhone.getServiceStateTracker().isPendingRadioPowerOffAfterDataOff()) {
            evaluation.addDataDisallowedReason(DataDisallowedReason.PENDING_TEAR_DOWN_ALL);
        }

@@ -2944,7 +2938,6 @@ public class DataNetworkController extends Handler {
        mDataNetworkList.remove(dataNetwork);
        trackSetupDataCallFailure(dataNetwork.getTransport(), cause);
        if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) {
            mPendingTearDownAllNetworks = false;
            mAnyDataNetworkExisting = false;
            mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor(
                    () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting)));
@@ -3275,7 +3268,6 @@ public class DataNetworkController extends Handler {

        if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) {
            log("All data networks disconnected now.");
            mPendingTearDownAllNetworks = false;
            mAnyDataNetworkExisting = false;
            mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor(
                    () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting)));
@@ -4009,14 +4001,13 @@ public class DataNetworkController extends Handler {
     *
     * @param reason The reason to tear down.
     */
    public void onTearDownAllDataNetworks(@TearDownReason int reason) {
    private void onTearDownAllDataNetworks(@TearDownReason int reason) {
        log("onTearDownAllDataNetworks: reason=" + DataNetwork.tearDownReasonToString(reason));
        if (mDataNetworkList.isEmpty()) {
            log("tearDownAllDataNetworks: No pending networks. All disconnected now.");
            return;
        }

        mPendingTearDownAllNetworks = true;
        for (DataNetwork dataNetwork : mDataNetworkList) {
            if (!dataNetwork.isDisconnecting()) {
                tearDownGracefully(dataNetwork, reason);
+19 −0
Original line number Diff line number Diff line
@@ -5395,4 +5395,23 @@ public class DataNetworkControllerTest extends TelephonyTest {
        verify(mMockedWwanDataServiceManager, never()).deactivateDataCall(anyInt(),
                eq(DataService.REQUEST_REASON_NORMAL), any(Message.class));
    }

    @Test
    public void testRadioOffTearDown() throws Exception  {
        testSetupDataNetwork();
        doReturn(true).when(mSST).isPendingRadioPowerOffAfterDataOff();
        mDataNetworkControllerUT.tearDownAllDataNetworks(
                DataNetwork.TEAR_DOWN_REASON_AIRPLANE_MODE_ON);
        processAllMessages();
        verifyAllDataDisconnected();
        verify(mMockedDataNetworkControllerCallback).onAnyDataNetworkExistingChanged(eq(false));

        clearInvocations(mMockedDataNetworkControllerCallback);
        mDataNetworkControllerUT.addNetworkRequest(
                createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
        processAllMessages();
        verifyAllDataDisconnected();
        verify(mMockedDataNetworkControllerCallback, never()).onAnyDataNetworkExistingChanged(
                anyBoolean());
    }
}