Merge "Reduce excess local prefix computations"

This commit is contained in:
Treehugger Robot
2018-10-22 08:04:41 +00:00
committed by Gerrit Code Review
2 changed files with 24 additions and 6 deletions

View File

@@ -399,9 +399,12 @@ 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.
recomputeLocalPrefixes();
// 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
@@ -417,9 +420,12 @@ 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.
recomputeLocalPrefixes();
// 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();
}
}
}

View File

@@ -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) {