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

Commit 0113ebb4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Unregister callback on data network disconnect"

parents d9073212 b709ee9d
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -551,6 +551,10 @@ public class DataNetwork extends StateMachine {
    /** Data network controller. */
    private final @NonNull DataNetworkController mDataNetworkController;

    /** Data network controller callback. */
    private final @NonNull DataNetworkController.DataNetworkControllerCallback
            mDataNetworkControllerCallback;

    /** Data config manager. */
    private final @NonNull DataConfigManager mDataConfigManager;

@@ -887,12 +891,14 @@ public class DataNetwork extends StateMachine {
        mAccessNetworksManager = phone.getAccessNetworksManager();
        mVcnManager = mPhone.getContext().getSystemService(VcnManager.class);
        mDataNetworkController = phone.getDataNetworkController();
        mDataNetworkController.registerDataNetworkControllerCallback(
                new DataNetworkController.DataNetworkControllerCallback(getHandler()::post) {
        mDataNetworkControllerCallback = new DataNetworkController.DataNetworkControllerCallback(
                getHandler()::post) {
            @Override
            public void onSubscriptionPlanOverride() {
                sendMessage(EVENT_SUBSCRIPTION_PLAN_OVERRIDE);
                    }});
            }};
        mDataNetworkController.registerDataNetworkControllerCallback(
                mDataNetworkControllerCallback);
        mDataConfigManager = mDataNetworkController.getDataConfigManager();
        mDataCallSessionStats = new DataCallSessionStats(mPhone);
        mDataNetworkCallback = callback;
@@ -1585,6 +1591,8 @@ public class DataNetwork extends StateMachine {
            }
            notifyPreciseDataConnectionState();
            mNetworkAgent.unregister();
            mDataNetworkController.unregisterDataNetworkControllerCallback(
                    mDataNetworkControllerCallback);
            mDataCallSessionStats.onDataCallDisconnected(mFailCause);

            if (mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WLAN
+19 −3
Original line number Diff line number Diff line
@@ -1215,16 +1215,32 @@ public class DataNetworkControllerTest extends TelephonyTest {

    @Test
    public void testDataNetworkControllerCallback() throws Exception {
        Field field = DataNetworkController.class.getDeclaredField(
                "mDataNetworkControllerCallbacks");
        field.setAccessible(true);
        Set<DataNetworkControllerCallback> dataNetworkControllerCallbacks =
                (Set<DataNetworkControllerCallback>) field.get(mDataNetworkControllerUT);

        // Verify register callback
        mDataNetworkControllerUT.registerDataNetworkControllerCallback(
                mMockedDataNetworkControllerCallback);
        TelephonyNetworkRequest request = createNetworkRequest(
                NetworkCapabilities.NET_CAPABILITY_INTERNET);
        mDataNetworkControllerUT.addNetworkRequest(request);
        processAllMessages();
        testSetupDataNetwork();
        verify(mMockedDataNetworkControllerCallback).onAnyDataNetworkExistingChanged(eq(true));
        verify(mMockedDataNetworkControllerCallback).onInternetDataNetworkConnected(any());

        mDataNetworkControllerUT.unregisterDataNetworkControllerCallback(
                mMockedDataNetworkControllerCallback);
        int countOfCallbacks = dataNetworkControllerCallbacks.size();

        // Verify unregister callback
        mDataNetworkControllerUT.removeNetworkRequest(request);
        processAllMessages();
        getDataNetworks().get(0).tearDown(DataNetwork
                .TEAR_DOWN_REASON_CONNECTIVITY_SERVICE_UNWANTED);
        processAllFutureMessages();

        assertEquals(countOfCallbacks - 1, dataNetworkControllerCallbacks.size());
    }

    @Test