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

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

Merge "Unregister callback on data network disconnect" into tm-qpr-dev

parents ed17a4bf 6c85b1e8
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -545,6 +545,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;

@@ -870,12 +874,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;
@@ -1562,6 +1568,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
@@ -1185,16 +1185,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