summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java9
-rw-r--r--tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java24
2 files changed, 31 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java b/services/core/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java
index 927dfd5e5919..4c950de2585e 100644
--- a/services/core/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java
@@ -16,6 +16,9 @@
package com.android.server.connectivity.tethering;
+import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
+import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
+
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
@@ -142,7 +145,11 @@ public class UpstreamNetworkMonitor {
// message to aid in any subsequent debugging
if (DBG) Log.d(TAG, "requesting mobile upstream network: " + mobileUpstreamRequest);
- cm().requestNetwork(mobileUpstreamRequest, mMobileNetworkCallback);
+ // The following use of the legacy type system cannot be removed until
+ // after upstream selection no longer finds networks by legacy type.
+ // See also b/34364553.
+ final int apnType = mDunRequired ? TYPE_MOBILE_DUN : TYPE_MOBILE_HIPRI;
+ cm().requestNetwork(mobileUpstreamRequest, mMobileNetworkCallback, 0, apnType);
}
public void releaseMobileNetworkRequest() {
diff --git a/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java b/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java
index b2a9a4937b6b..00420e9e1005 100644
--- a/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java
+++ b/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java
@@ -16,6 +16,8 @@
package com.android.server.connectivity.tethering;
+import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
+import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -114,6 +116,9 @@ public class UpstreamNetworkMonitorTest {
mUNM.registerMobileNetworkRequest();
assertTrue(mUNM.mobileNetworkRequested());
assertEquals(1, mCM.requested.size());
+ assertEquals(1, mCM.legacyTypeMap.size());
+ assertEquals(Integer.valueOf(TYPE_MOBILE_HIPRI),
+ mCM.legacyTypeMap.values().iterator().next());
assertFalse(mCM.isDunRequested());
mUNM.stop();
@@ -137,6 +142,9 @@ public class UpstreamNetworkMonitorTest {
mUNM.registerMobileNetworkRequest();
assertTrue(mUNM.mobileNetworkRequested());
assertEquals(1, mCM.requested.size());
+ assertEquals(1, mCM.legacyTypeMap.size());
+ assertEquals(Integer.valueOf(TYPE_MOBILE_DUN),
+ mCM.legacyTypeMap.values().iterator().next());
assertTrue(mCM.isDunRequested());
mUNM.stop();
@@ -148,6 +156,7 @@ public class UpstreamNetworkMonitorTest {
public Set<NetworkCallback> trackingDefault = new HashSet<>();
public Map<NetworkCallback, NetworkRequest> listening = new HashMap<>();
public Map<NetworkCallback, NetworkRequest> requested = new HashMap<>();
+ public Map<NetworkCallback, Integer> legacyTypeMap = new HashMap<>();
public TestConnectivityManager(Context ctx, IConnectivityManager svc) {
super(ctx, svc);
@@ -156,7 +165,8 @@ public class UpstreamNetworkMonitorTest {
boolean isEmpty() {
return trackingDefault.isEmpty() &&
listening.isEmpty() &&
- requested.isEmpty();
+ requested.isEmpty() &&
+ legacyTypeMap.isEmpty();
}
boolean isListeningForDun() {
@@ -184,6 +194,17 @@ public class UpstreamNetworkMonitorTest {
}
@Override
+ public void requestNetwork(NetworkRequest req, NetworkCallback cb,
+ int timeoutMs, int legacyType) {
+ assertFalse(requested.containsKey(cb));
+ requested.put(cb, req);
+ assertFalse(legacyTypeMap.containsKey(cb));
+ if (legacyType != ConnectivityManager.TYPE_NONE) {
+ legacyTypeMap.put(cb, legacyType);
+ }
+ }
+
+ @Override
public void registerNetworkCallback(NetworkRequest req, NetworkCallback cb) {
assertFalse(listening.containsKey(cb));
listening.put(cb, req);
@@ -203,6 +224,7 @@ public class UpstreamNetworkMonitorTest {
listening.remove(cb);
} else if (requested.containsKey(cb)) {
requested.remove(cb);
+ legacyTypeMap.remove(cb);
}
assertFalse(trackingDefault.contains(cb));