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

Commit 69955497 authored by markchien's avatar markchien
Browse files

Reduce excess local prefix computations

only recomputing on the LISTEN_ALL callback

Test: - build, flash, booted
      - runtest frameworks-net

bug: 110335330

Change-Id: I606574f1a8a2899ed4688d7d5ec2cbe0f2638a94
parent 03c76607
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -399,10 +399,13 @@ public class UpstreamNetworkMonitor {
        @Override
        public void onLinkPropertiesChanged(Network network, LinkProperties newLp) {
            handleLinkProp(network, newLp);
            // TODO(b/110335330): reduce the number of times this is called by
            // only recomputing on the LISTEN_ALL callback.
            // Any non-LISTEN_ALL callback will necessarily concern a network that will
            // also match the LISTEN_ALL callback by construction of the LISTEN_ALL callback.
            // So it's not useful to do this work for non-LISTEN_ALL callbacks.
            if (mCallbackType == CALLBACK_LISTEN_ALL) {
                recomputeLocalPrefixes();
            }
        }

        @Override
        public void onNetworkSuspended(Network network) {
@@ -417,11 +420,14 @@ public class UpstreamNetworkMonitor {
        @Override
        public void onLost(Network network) {
            handleLost(mCallbackType, network);
            // TODO(b/110335330): reduce the number of times this is called by
            // only recomputing on the LISTEN_ALL callback.
            // Any non-LISTEN_ALL callback will necessarily concern a network that will
            // also match the LISTEN_ALL callback by construction of the LISTEN_ALL callback.
            // So it's not useful to do this work for non-LISTEN_ALL callbacks.
            if (mCallbackType == CALLBACK_LISTEN_ALL) {
                recomputeLocalPrefixes();
            }
        }
    }

    private void releaseCallback(NetworkCallback cb) {
        if (cb != null) cm().unregisterNetworkCallback(cb);
+12 −0
Original line number Diff line number Diff line
@@ -475,6 +475,18 @@ public class UpstreamNetworkMonitorTest {
        assertPrefixSet(local, EXCLUDES, wifiLinkPrefixes);
        assertPrefixSet(local, INCLUDES, cellLinkPrefixes);
        assertPrefixSet(local, INCLUDES, dunLinkPrefixes);

        // [5] Pretend mobile disconnected.
        cellAgent.fakeDisconnect();
        local = mUNM.getLocalPrefixes();
        assertPrefixSet(local, EXCLUDES, wifiLinkPrefixes);
        assertPrefixSet(local, EXCLUDES, cellLinkPrefixes);
        assertPrefixSet(local, INCLUDES, dunLinkPrefixes);

        // [6] Pretend DUN disconnected.
        dunAgent.fakeDisconnect();
        local = mUNM.getLocalPrefixes();
        assertTrue(local.isEmpty());
    }

    private void assertSatisfiesLegacyType(int legacyType, NetworkState ns) {