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

Commit 11341cac authored by Ling Ma's avatar Ling Ma Committed by Gerrit Code Review
Browse files

Merge "Disconnect all networks on radio_not_available"

parents 21afa37b f2e0ea79
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -166,6 +166,9 @@ public class DataNetwork extends StateMachine {
    /** Event for detaching a network request. */
    private static final int EVENT_DETACH_NETWORK_REQUEST = 3;

    /** Event when detect radio not available. */
    private static final int  EVENT_RADIO_NOT_AVAILABLE = 4;

    /** Event for allocating PDU session id response. */
    private static final int EVENT_ALLOCATE_PDU_SESSION_ID_RESPONSE = 5;

@@ -1115,6 +1118,11 @@ public class DataNetwork extends StateMachine {
                    log("Ignore the handover to " + AccessNetworkConstants
                            .transportTypeToString(msg.arg1) + " request.");
                    break;
                case EVENT_RADIO_NOT_AVAILABLE:
                    mFailCause = DataFailCause.RADIO_NOT_AVAILABLE;
                    loge(eventToString(msg.what) + ": transition to disconnected state");
                    transitionTo(mDisconnectedState);
                    break;
                default:
                    loge("Unhandled event " + eventToString(msg.what));
                    break;
@@ -1569,6 +1577,7 @@ public class DataNetwork extends StateMachine {
        registerForBandwidthUpdate();
        mKeepaliveTracker.registerForKeepaliveStatus();
        mRil.registerForPcoData(this.getHandler(), EVENT_PCO_DATA_RECEIVED, null);
        mRil.registerForNotAvailable(this.getHandler(), EVENT_RADIO_NOT_AVAILABLE, null);
    }

    /**
@@ -1578,6 +1587,7 @@ public class DataNetwork extends StateMachine {
        unregisterForBandwidthUpdate();
        mKeepaliveTracker.unregisterForKeepaliveStatus();
        mRil.unregisterForPcoData(this.getHandler());
        mRil.unregisterForNotAvailable(this.getHandler());
    }

    @Override
@@ -3285,6 +3295,8 @@ public class DataNetwork extends StateMachine {
                return "EVENT_ATTACH_NETWORK_REQUEST";
            case EVENT_DETACH_NETWORK_REQUEST:
                return "EVENT_DETACH_NETWORK_REQUEST";
            case EVENT_RADIO_NOT_AVAILABLE:
                return "EVENT_RADIO_NOT_AVAILABLE";
            case EVENT_ALLOCATE_PDU_SESSION_ID_RESPONSE:
                return "EVENT_ALLOCATE_PDU_SESSION_ID_RESPONSE";
            case EVENT_SETUP_DATA_NETWORK_RESPONSE:
+12 −0
Original line number Diff line number Diff line
@@ -2357,6 +2357,18 @@ public class SimulatedCommands extends BaseCommands
        mPcoDataRegistrants.remove(h);
    }

    @Override
    public void registerForNotAvailable(Handler h, int what, Object obj) {
        SimulatedCommandsVerifier.getInstance().registerForNotAvailable(h, what, obj);
        super.registerForNotAvailable(h, what, obj);
    }

    @Override
    public void unregisterForNotAvailable(Handler h) {
        SimulatedCommandsVerifier.getInstance().unregisterForNotAvailable(h);
        super.unregisterForNotAvailable(h);
    }

    @Override
    public void registerForModemReset(Handler h, int what, Object obj) {
        SimulatedCommandsVerifier.getInstance().registerForModemReset(h, what, obj);
+28 −0
Original line number Diff line number Diff line
@@ -448,6 +448,31 @@ public class DataNetworkTest extends TelephonyTest {
        verify(mDataNetworkCallback).onConnected(eq(mDataNetworkUT));
    }

    @Test
    public void testRilCrash() throws Exception {
        NetworkRequestList networkRequestList = new NetworkRequestList();
        networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .build(), mPhone));
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
                DataAllowedReason.NORMAL, mDataNetworkCallback);
        processAllMessages();

        // verify connected
        verify(mDataNetworkCallback).onConnected(eq(mDataNetworkUT));

        // RIL crash
        mDataNetworkUT.sendMessage(4/*EVENT_RADIO_NOT_AVAILABLE*/);
        processAllMessages();

        verify(mDataNetworkCallback).onDisconnected(eq(mDataNetworkUT),
                eq(DataFailCause.RADIO_NOT_AVAILABLE));
    }

    @Test
    public void testCreateImsDataNetwork() throws Exception {
        NetworkRequestList networkRequestList = new NetworkRequestList();
@@ -967,6 +992,8 @@ public class DataNetworkTest extends TelephonyTest {
                anyInt(), eq(null));
        verify(mSimulatedCommandsVerifier).registerForPcoData(any(Handler.class), anyInt(),
                eq(null));
        verify(mSimulatedCommandsVerifier).registerForNotAvailable(any(Handler.class), anyInt(),
                eq(null));
        verify(mVcnManager).addVcnNetworkPolicyChangeListener(any(Executor.class),
                any(VcnNetworkPolicyChangeListener.class));
        verify(mSST).registerForCssIndicatorChanged(any(Handler.class), anyInt(), eq(null));
@@ -986,6 +1013,7 @@ public class DataNetworkTest extends TelephonyTest {
                any(LinkBandwidthEstimatorCallback.class));
        verify(mSimulatedCommandsVerifier).unregisterForNattKeepaliveStatus(any(Handler.class));
        verify(mSimulatedCommandsVerifier).unregisterForPcoData(any(Handler.class));
        verify(mSimulatedCommandsVerifier).unregisterForNotAvailable(any(Handler.class));
        verify(mVcnManager).removeVcnNetworkPolicyChangeListener(
                any(VcnNetworkPolicyChangeListener.class));
        verify(mSST).unregisterForCssIndicatorChanged(any(Handler.class));