summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chalard Jean <jchalard@google.com> 2019-11-19 21:30:44 +0900
committer Chalard Jean <jchalard@google.com> 2019-12-02 18:44:10 +0900
commit28e6b26c1173bf40543cefa66f7afd0c77ce460a (patch)
treeba584f4c2742aab5fa1b247d242b337ac6759372
parent82001cf9939451a66827873ef811af8ac49634fd (diff)
[NS A18] Reverse listens and request-availables
This is a long standing bug that happens to now be trivial to fix, and also be beneficial for refactoring Test: FrameworksNetTests NetworkStackTests Change-Id: I38110f3a4a75936ea755788e7f9fee67863e14be
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java8
-rw-r--r--tests/net/java/com/android/server/ConnectivityServiceTest.java5
2 files changed, 5 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index a3a61720ac3d..6428a7012aab 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -6453,6 +6453,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
newNetwork.name(), score, newNetwork.getCurrentScore()));
}
+ // Notify requested networks are available after the default net is switched, but
+ // before LegacyTypeTracker sends legacy broadcasts
+ for (NetworkRequestInfo nri : addedRequests) notifyNetworkAvailable(newNetwork, nri);
+
// Second pass: process all listens.
if (wasBackgroundNetwork != newNetwork.isBackgroundNetwork()) {
// If the network went from background to foreground or vice versa, we need to update
@@ -6463,10 +6467,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
} else {
processListenRequests(newNetwork, false);
}
-
- // do this after the default net is switched, but
- // before LegacyTypeTracker sends legacy broadcasts
- for (NetworkRequestInfo nri : addedRequests) notifyNetworkAvailable(newNetwork, nri);
}
/**
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index c4e353bdca55..8eac95e52343 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -3134,14 +3134,11 @@ public class ConnectivityServiceTest {
.addTransportType(TRANSPORT_CELLULAR).build();
final TestNetworkCallback cellCallback = new TestNetworkCallback();
mCm.requestNetwork(cellRequest, cellCallback);
- // NOTE: This request causes the network's capabilities to change. This
- // is currently delivered before the onAvailable() callbacks.
- // TODO: Fix this.
- cellCallback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
cellCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
fgCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
// Expect a network capabilities update with FOREGROUND, because the most recent
// request causes its state to change.
+ cellCallback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
callback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
assertTrue(isForegroundNetwork(mCellNetworkAgent));
assertTrue(isForegroundNetwork(mWiFiNetworkAgent));