resolve merge conflicts of f15b282 to nyc-mr1-dev
Change-Id: Ib1294563c6ae20454e44bfa5fc9fb2797864b8f5
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 6b2d9df..ee455af 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -2144,7 +2144,7 @@
networkCapabilities.hasCapability(NET_CAPABILITY_FOREGROUND)) {
Slog.wtf(TAG, "BUG: " + nai + " has CS-managed capability.");
}
- updateCapabilities(nai, networkCapabilities);
+ updateCapabilities(nai.getCurrentScore(), nai, networkCapabilities);
break;
}
case NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED: {
@@ -2221,7 +2221,7 @@
final int oldScore = nai.getCurrentScore();
nai.lastValidated = valid;
nai.everValidated |= valid;
- updateCapabilities(nai, nai.networkCapabilities);
+ updateCapabilities(oldScore, nai, nai.networkCapabilities);
// If score has changed, rebroadcast to NetworkFactories. b/17726566
if (oldScore != nai.getCurrentScore()) sendUpdatedScoreToFactories(nai);
}
@@ -2245,9 +2245,10 @@
}
// If captive portal status has changed, update capabilities.
if (nai != null && (visible != nai.lastCaptivePortalDetected)) {
+ final int oldScore = nai.getCurrentScore();
nai.lastCaptivePortalDetected = visible;
nai.everCaptivePortalDetected |= visible;
- updateCapabilities(nai, nai.networkCapabilities);
+ updateCapabilities(oldScore, nai, nai.networkCapabilities);
}
if (!visible) {
mNotifier.clearNotification(netId);
@@ -2619,7 +2620,7 @@
mNetworkForRequestId.remove(nri.request.requestId);
if (!wasBackgroundNetwork && nai.isBackgroundNetwork()) {
// Went from foreground to background.
- updateCapabilities(nai, nai.networkCapabilities);
+ updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
}
}
@@ -4490,10 +4491,13 @@
* augmented with any stateful capabilities implied from {@code networkAgent}
* (e.g., validated status and captive portal status).
*
+ * @param oldScore score of the network before any of the changes that prompted us
+ * to call this function.
* @param nai the network having its capabilities updated.
* @param networkCapabilities the new network capabilities.
*/
- private void updateCapabilities(NetworkAgentInfo nai, NetworkCapabilities networkCapabilities) {
+ private void updateCapabilities(
+ int oldScore, NetworkAgentInfo nai, NetworkCapabilities networkCapabilities) {
if (nai.everConnected && !nai.networkCapabilities.equalImmutableCapabilities(
networkCapabilities)) {
Slog.wtf(TAG, "BUG: " + nai + " changed immutable capabilities: "
@@ -4531,7 +4535,6 @@
}
}
- final int oldScore = nai.getCurrentScore();
final NetworkCapabilities prevNc = nai.networkCapabilities;
synchronized (nai) {
nai.networkCapabilities = networkCapabilities;
@@ -4673,7 +4676,8 @@
teardownUnneededNetwork(oldNetwork);
} else {
// Put the network in the background.
- updateCapabilities(oldNetwork, oldNetwork.networkCapabilities);
+ updateCapabilities(oldNetwork.getCurrentScore(), oldNetwork,
+ oldNetwork.networkCapabilities);
}
}
@@ -4886,7 +4890,7 @@
// its foreground state. It is safe to do this after rematching the requests because
// NET_CAPABILITY_FOREGROUND does not affect requests, as is not a requestable
// capability and does not affect the network's score (see the Slog.wtf call above).
- updateCapabilities(newNetwork, newNetwork.networkCapabilities);
+ updateCapabilities(score, newNetwork, newNetwork.networkCapabilities);
} else {
processListenRequests(newNetwork, false);
}