Don't notify on network switch if source network is validated.

Sometimes we switch away from a network to another (e.g., wifi to
cell data) not because the old network is unvalidated, but
because the score is lowered by a low signal strength.

In this case, don't notify the user of a network switch.

Bug: 31132499
Change-Id: I996a6e00096f8cb864fa9b00b36921725a4edb53
This commit is contained in:
Lorenzo Colitti
2016-08-29 14:03:11 +09:00
parent ddc5fd88fe
commit fde640e59d
2 changed files with 9 additions and 3 deletions

View File

@@ -4699,9 +4699,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (VDBG) log(" accepting network in place of " + currentNetwork.name());
currentNetwork.removeRequest(nri.request.requestId);
currentNetwork.lingerRequest(nri.request, now, mLingerDelayMs);
if (isDefaultRequest(nri)) {
mLingerMonitor.noteLingerDefaultNetwork(currentNetwork, newNetwork);
}
affectedNetworks.add(currentNetwork);
} else {
if (VDBG) log(" accepting network in place of null");
@@ -4722,6 +4719,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (isDefaultRequest(nri)) {
isNewDefault = true;
oldDefaultNetwork = currentNetwork;
if (currentNetwork != null) {
mLingerMonitor.noteLingerDefaultNetwork(currentNetwork, newNetwork);
}
}
}
} else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {

View File

@@ -242,6 +242,12 @@ public class LingerMonitor {
return;
}
// Only show the notification if we switched away because a network became unvalidated, not
// because its score changed.
// TODO: instead of just skipping notification, keep a note of it, and show it if it becomes
// unvalidated.
if (fromNai.lastValidated) return;
if (isNotificationEnabled(fromNai, toNai)) {
notify(fromNai, toNai, forceToast);
}