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

Commit c854536d authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I9ae4ac33,Ib14df8d6

* changes:
  Allow IWLAN data in PS restricted condition
  Fixed phone process crash in some rare conditions
parents 0ad1f820 7ec34710
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -296,7 +296,7 @@ public class DataNetworkController extends Handler {
    private final @NonNull Set<DataNetworkControllerCallback> mDataNetworkControllerCallbacks =
            new ArraySet<>();

    /** Indicates if packet switch data is restricted by the network. */
    /** Indicates if packet switch data is restricted by the cellular network. */
    private boolean mPsRestricted = false;

    /** Indicates if NR advanced is allowed by PCO. */
@@ -1467,8 +1467,8 @@ public class DataNetworkController extends Handler {
            evaluation.addDataDisallowedReason(DataDisallowedReason.ROAMING_DISABLED);
        }

        // Check if data is restricted by the network.
        if (mPsRestricted) {
        // Check if data is restricted by the cellular network.
        if (mPsRestricted && transport == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) {
            evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_RESTRICTED_BY_NETWORK);
        }

+18 −27
Original line number Diff line number Diff line
@@ -760,14 +760,19 @@ public class DataServiceManager extends Handler {
     * @param onCompleteMessage The result callback for this request.
     */
    public void startHandover(int cid, @NonNull Message onCompleteMessage) {
        DataServiceCallbackWrapper callback =
                setupCallbackHelper("startHandover", onCompleteMessage);
        if (callback == null) {
            loge("startHandover: callback == null");
        if (DBG) log("startHandover");
        if (!mBound) {
            loge("Data service not bound.");
            sendCompleteMessage(onCompleteMessage, DataServiceCallback.RESULT_ERROR_ILLEGAL_STATE);
            return;
        }

        DataServiceCallbackWrapper callback =
                new DataServiceCallbackWrapper("startHandover");
        if (onCompleteMessage != null) {
            mMessageMap.put(callback.asBinder(), onCompleteMessage);
        }

        try {
            sendMessageDelayed(obtainMessage(EVENT_WATCHDOG_TIMEOUT, callback),
                    REQUEST_UNRESPONDED_TIMEOUT);
@@ -790,13 +795,19 @@ public class DataServiceManager extends Handler {
     * @param onCompleteMessage The result callback for this request.
     */
    public void cancelHandover(int cid, @NonNull Message onCompleteMessage) {
        DataServiceCallbackWrapper callback =
                setupCallbackHelper("cancelHandover", onCompleteMessage);
        if (callback == null) {
        if (DBG) log("cancelHandover");
        if (!mBound) {
            loge("Data service not bound.");
            sendCompleteMessage(onCompleteMessage, DataServiceCallback.RESULT_ERROR_ILLEGAL_STATE);
            return;
        }

        DataServiceCallbackWrapper callback =
                new DataServiceCallbackWrapper("cancelHandover");
        if (onCompleteMessage != null) {
            mMessageMap.put(callback.asBinder(), onCompleteMessage);
        }

        try {
            sendMessageDelayed(obtainMessage(EVENT_WATCHDOG_TIMEOUT, callback),
                    REQUEST_UNRESPONDED_TIMEOUT);
@@ -808,26 +819,6 @@ public class DataServiceManager extends Handler {
        }
    }

    @Nullable
    private DataServiceCallbackWrapper setupCallbackHelper(
            @NonNull final String operationName, @NonNull final Message onCompleteMessage) {
        if (DBG) log(operationName);
        if (!mBound) {
            sendCompleteMessage(onCompleteMessage, DataServiceCallback.RESULT_ERROR_ILLEGAL_STATE);
            return null;
        }

        DataServiceCallbackWrapper callback =
                new DataServiceCallbackWrapper(operationName);
        if (onCompleteMessage != null) {
            if (DBG) log(operationName + ": onCompleteMessage set");
            mMessageMap.put(callback.asBinder(), onCompleteMessage);
        } else {
            if (DBG) log(operationName + ": onCompleteMessage not set");
        }
        return callback;
    }

    /**
     * Set an APN to initial attach network.
     *
+16 −0
Original line number Diff line number Diff line
@@ -2077,12 +2077,28 @@ public class SimulatedCommands extends BaseCommands

    @Override
    public void setInitialAttachApn(DataProfile dataProfile, boolean isRoaming, Message result) {
        SimulatedCommandsVerifier.getInstance().setInitialAttachApn(dataProfile, isRoaming, result);
        resultSuccess(result, null);
    }

    @Override
    public void setDataProfile(DataProfile[] dps, boolean isRoaming, Message result) {
        SimulatedCommandsVerifier.getInstance().setDataProfile(dps, isRoaming, result);
        resultSuccess(result, null);
    }

    @Override
    public void startHandover(Message result, int callId) {
        SimulatedCommandsVerifier.getInstance().startHandover(result, callId);
        resultSuccess(result, null);
    };

    @Override
    public void cancelHandover(Message result, int callId) {
        SimulatedCommandsVerifier.getInstance().cancelHandover(result, callId);
        resultSuccess(result, null);
    };

    public void setImsRegistrationState(int[] regState) {
        mImsRegState = regState;
    }
+8 −0
Original line number Diff line number Diff line
@@ -1535,4 +1535,12 @@ public class SimulatedCommandsVerifier implements CommandsInterface {
    @Override
    public void unregisterForSlicingConfigChanged(Handler h) {
    }

    @Override
    public void startHandover(Message result, int callId) {
    }

    @Override
    public void cancelHandover(Message result, int callId) {
    }
}
+35 −0
Original line number Diff line number Diff line
@@ -1193,6 +1193,41 @@ public class DataNetworkControllerTest extends TelephonyTest {
        verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    }

    @Test
    public void testPsRestrictedAllowIwlan() throws Exception {
        // IMS preferred on IWLAN.
        doReturn(AccessNetworkConstants.TRANSPORT_TYPE_WLAN).when(mAccessNetworksManager)
                .getPreferredTransportByNetworkCapability(
                        eq(NetworkCapabilities.NET_CAPABILITY_IMS));

        // PS restricted
        mDataNetworkControllerUT.obtainMessage(6/*EVENT_PS_RESTRICT_ENABLED*/).sendToTarget();
        processAllMessages();

        // PS restricted, new setup NOT allowed
        mDataNetworkControllerUT.addNetworkRequest(
                createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
        setSuccessfulSetupDataResponse(mMockedDataServiceManagers
                .get(AccessNetworkConstants.TRANSPORT_TYPE_WWAN), 2);
        processAllMessages();
        verifyAllDataDisconnected();

        // Request IMS
        mDataNetworkControllerUT.addNetworkRequest(
                createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_IMS,
                        NetworkCapabilities.NET_CAPABILITY_MMTEL));
        setSuccessfulSetupDataResponse(mMockedDataServiceManagers
                .get(AccessNetworkConstants.TRANSPORT_TYPE_WLAN), 3);
        processAllMessages();

        // Make sure IMS on IWLAN.
        verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_IMS);
        assertThat(getDataNetworks()).hasSize(1);
        DataNetwork dataNetwork = getDataNetworks().get(0);
        assertThat(dataNetwork.getTransport()).isEqualTo(
                AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
    }

    @Test
    public void testRatChanges() throws Exception {
        serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
Loading