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

Commit e52df5b6 authored by lucaslin's avatar lucaslin
Browse files

Remove the usage of hidden API and simplify the design

- ConnectivityManager will be a part of mainline module, so its
hidden API cannot be called by external caller.
- There is no need to listen onNetworkSuspended() and
onNetworkResumed() because if the network is suspended, then
NET_CAPABILITY_NOT_SUSPENDED will be removed and
onCapabilitiesChanged() will be called and the network capabilities
will be different from the previous one. And when the network is
resumed, NET_CAPABILITY_NOT_SUSPENDED will be added back to the
network capabilities. So the current design can be simplified.

Bug: 182963397
Test: atest FrameworksVcnTests
Change-Id: Ib8f8ea1c95503c946b8229670512af2db8be3165
parent 6dae2c8f
Loading
Loading
Loading
Loading
+1 −29
Original line number Original line Diff line number Diff line
@@ -290,25 +290,6 @@ public class UnderlyingNetworkTracker {
        maybeNotifyCallback();
        maybeNotifyCallback();
    }
    }


    private void handleNetworkSuspended(@NonNull Network network, boolean isSuspended) {
        mVcnContext.ensureRunningOnLooperThread();

        if (!isSameNetwork(mRecordInProgress, network)) {
            Slog.wtf(TAG, "Invalid update to isSuspended");
            return;
        }

        final NetworkCapabilities newCaps =
                new NetworkCapabilities(mRecordInProgress.getNetworkCapabilities());
        if (isSuspended) {
            newCaps.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
        } else {
            newCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
        }

        handleCapabilitiesChanged(network, newCaps);
    }

    private void handlePropertiesChanged(
    private void handlePropertiesChanged(
            @NonNull Network network, @NonNull LinkProperties linkProperties) {
            @NonNull Network network, @NonNull LinkProperties linkProperties) {
        mVcnContext.ensureRunningOnLooperThread();
        mVcnContext.ensureRunningOnLooperThread();
@@ -366,19 +347,10 @@ public class UnderlyingNetworkTracker {
        @Override
        @Override
        public void onCapabilitiesChanged(
        public void onCapabilitiesChanged(
                @NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
                @NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
            if (networkCapabilities.equals(mRecordInProgress.getNetworkCapabilities())) return;
            handleCapabilitiesChanged(network, networkCapabilities);
            handleCapabilitiesChanged(network, networkCapabilities);
        }
        }


        @Override
        public void onNetworkSuspended(@NonNull Network network) {
            handleNetworkSuspended(network, true /* isSuspended */);
        }

        @Override
        public void onNetworkResumed(@NonNull Network network) {
            handleNetworkSuspended(network, false /* isSuspended */);
        }

        @Override
        @Override
        public void onLinkPropertiesChanged(
        public void onLinkPropertiesChanged(
                @NonNull Network network, @NonNull LinkProperties linkProperties) {
                @NonNull Network network, @NonNull LinkProperties linkProperties) {
+12 −4
Original line number Original line Diff line number Diff line
@@ -328,7 +328,7 @@ public class UnderlyingNetworkTrackerTest {
    public void testRecordTrackerCallbackNotifiedForNetworkSuspended() {
    public void testRecordTrackerCallbackNotifiedForNetworkSuspended() {
        RouteSelectionCallback cb = verifyRegistrationOnAvailableAndGetCallback();
        RouteSelectionCallback cb = verifyRegistrationOnAvailableAndGetCallback();


        cb.onNetworkSuspended(mNetwork);
        cb.onCapabilitiesChanged(mNetwork, SUSPENDED_NETWORK_CAPABILITIES);


        UnderlyingNetworkRecord expectedRecord =
        UnderlyingNetworkRecord expectedRecord =
                new UnderlyingNetworkRecord(
                new UnderlyingNetworkRecord(
@@ -336,7 +336,11 @@ public class UnderlyingNetworkTrackerTest {
                        SUSPENDED_NETWORK_CAPABILITIES,
                        SUSPENDED_NETWORK_CAPABILITIES,
                        INITIAL_LINK_PROPERTIES,
                        INITIAL_LINK_PROPERTIES,
                        false /* isBlocked */);
                        false /* isBlocked */);
        verify(mNetworkTrackerCb).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
        verify(mNetworkTrackerCb, times(1)).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
        // onSelectedUnderlyingNetworkChanged() won't be fired twice if network capabilities doesn't
        // change.
        cb.onCapabilitiesChanged(mNetwork, SUSPENDED_NETWORK_CAPABILITIES);
        verify(mNetworkTrackerCb, times(1)).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
    }
    }


    @Test
    @Test
@@ -344,7 +348,7 @@ public class UnderlyingNetworkTrackerTest {
        RouteSelectionCallback cb =
        RouteSelectionCallback cb =
                verifyRegistrationOnAvailableAndGetCallback(SUSPENDED_NETWORK_CAPABILITIES);
                verifyRegistrationOnAvailableAndGetCallback(SUSPENDED_NETWORK_CAPABILITIES);


        cb.onNetworkResumed(mNetwork);
        cb.onCapabilitiesChanged(mNetwork, INITIAL_NETWORK_CAPABILITIES);


        UnderlyingNetworkRecord expectedRecord =
        UnderlyingNetworkRecord expectedRecord =
                new UnderlyingNetworkRecord(
                new UnderlyingNetworkRecord(
@@ -352,7 +356,11 @@ public class UnderlyingNetworkTrackerTest {
                        INITIAL_NETWORK_CAPABILITIES,
                        INITIAL_NETWORK_CAPABILITIES,
                        INITIAL_LINK_PROPERTIES,
                        INITIAL_LINK_PROPERTIES,
                        false /* isBlocked */);
                        false /* isBlocked */);
        verify(mNetworkTrackerCb).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
        verify(mNetworkTrackerCb, times(1)).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
        // onSelectedUnderlyingNetworkChanged() won't be fired twice if network capabilities doesn't
        // change.
        cb.onCapabilitiesChanged(mNetwork, INITIAL_NETWORK_CAPABILITIES);
        verify(mNetworkTrackerCb, times(1)).onSelectedUnderlyingNetworkChanged(eq(expectedRecord));
    }
    }


    @Test
    @Test