Merge "Restore legacy types when registering mobile requests"

This commit is contained in:
Treehugger Robot
2017-01-18 09:34:36 +00:00
committed by Gerrit Code Review
2 changed files with 31 additions and 2 deletions

View File

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

View File

@@ -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() {
@@ -183,6 +193,17 @@ public class UpstreamNetworkMonitorTest {
requested.put(cb, req);
}
@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));
@@ -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));