Merge changes Iac9487e8,Ifa411c7b am: 999506022f am: 7d70dd9c33 am: bec7ce5cf4
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1622675 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: If1b3f0447705f910467a52d2504ba1aaef850a80
This commit is contained in:
@@ -8,7 +8,7 @@ package android.net {
|
||||
public class ConnectivityManager {
|
||||
method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot();
|
||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @Nullable android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import static android.net.IpSecManager.INVALID_RESOURCE_ID;
|
||||
import static android.net.NetworkRequest.Type.BACKGROUND_REQUEST;
|
||||
import static android.net.NetworkRequest.Type.LISTEN;
|
||||
import static android.net.NetworkRequest.Type.REQUEST;
|
||||
import static android.net.NetworkRequest.Type.TRACK_BEST;
|
||||
import static android.net.NetworkRequest.Type.TRACK_DEFAULT;
|
||||
import static android.net.NetworkRequest.Type.TRACK_SYSTEM_DEFAULT;
|
||||
import static android.net.QosCallback.QosCallbackRegistrationException;
|
||||
@@ -4189,6 +4190,18 @@ public class ConnectivityManager {
|
||||
TRACK_SYSTEM_DEFAULT, TYPE_NONE, cbHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
// TODO: Make it public api.
|
||||
@SuppressLint("ExecutorRegistration")
|
||||
public void registerBestMatchingNetworkCallback(@NonNull NetworkRequest request,
|
||||
@NonNull NetworkCallback networkCallback, @NonNull Handler handler) {
|
||||
final NetworkCapabilities nc = request.networkCapabilities;
|
||||
final CallbackHandler cbHandler = new CallbackHandler(handler);
|
||||
sendRequestForNetwork(nc, networkCallback, 0, TRACK_BEST, TYPE_NONE, cbHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests bandwidth update for a given {@link Network} and returns whether the update request
|
||||
* is accepted by ConnectivityService. Once accepted, ConnectivityService will poll underlying
|
||||
@@ -4979,10 +4992,10 @@ public class ConnectivityManager {
|
||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK
|
||||
})
|
||||
public void requestBackgroundNetwork(@NonNull NetworkRequest request,
|
||||
@Nullable Handler handler, @NonNull NetworkCallback networkCallback) {
|
||||
@NonNull Handler handler, @NonNull NetworkCallback networkCallback) {
|
||||
final NetworkCapabilities nc = request.networkCapabilities;
|
||||
sendRequestForNetwork(nc, networkCallback, 0, BACKGROUND_REQUEST,
|
||||
TYPE_NONE, handler == null ? getDefaultHandler() : new CallbackHandler(handler));
|
||||
TYPE_NONE, new CallbackHandler(handler));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -114,6 +114,10 @@ public class NetworkRequest implements Parcelable {
|
||||
* for the network (if any) that satisfies the default Internet
|
||||
* request.
|
||||
*
|
||||
* - TRACK_BEST, which causes the framework to send callbacks about
|
||||
* the single, highest scoring current network (if any) that matches
|
||||
* the specified NetworkCapabilities.
|
||||
*
|
||||
* - BACKGROUND_REQUEST, like REQUEST but does not cause any networks
|
||||
* to retain the NET_CAPABILITY_FOREGROUND capability. A network with
|
||||
* no foreground requests is in the background. A network that has
|
||||
@@ -136,6 +140,7 @@ public class NetworkRequest implements Parcelable {
|
||||
REQUEST,
|
||||
BACKGROUND_REQUEST,
|
||||
TRACK_SYSTEM_DEFAULT,
|
||||
TRACK_BEST,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -5547,6 +5547,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// request if the app changes network state. http://b/29964605
|
||||
enforceMeteredApnPolicy(networkCapabilities);
|
||||
break;
|
||||
case TRACK_BEST:
|
||||
throw new UnsupportedOperationException("Not implemented yet");
|
||||
default:
|
||||
throw new IllegalArgumentException("Unsupported request type " + reqType);
|
||||
}
|
||||
|
||||
@@ -376,13 +376,13 @@ public class ConnectivityManagerTest {
|
||||
eq(testPkgName), eq(testAttributionTag));
|
||||
reset(mService);
|
||||
|
||||
manager.requestBackgroundNetwork(request, null, callback);
|
||||
Handler handler = new Handler(ConnectivityThread.getInstanceLooper());
|
||||
manager.requestBackgroundNetwork(request, handler, callback);
|
||||
verify(mService).requestNetwork(eq(request.networkCapabilities),
|
||||
eq(BACKGROUND_REQUEST.ordinal()), any(), anyInt(), any(), eq(TYPE_NONE),
|
||||
eq(testPkgName), eq(testAttributionTag));
|
||||
reset(mService);
|
||||
|
||||
Handler handler = new Handler(ConnectivityThread.getInstanceLooper());
|
||||
manager.registerSystemDefaultNetworkCallback(callback, handler);
|
||||
verify(mService).requestNetwork(eq(null),
|
||||
eq(TRACK_SYSTEM_DEFAULT.ordinal()), any(), anyInt(), any(), eq(TYPE_NONE),
|
||||
|
||||
@@ -4027,7 +4027,8 @@ public class ConnectivityServiceTest {
|
||||
grantUsingBackgroundNetworksPermissionForUid(Binder.getCallingUid());
|
||||
final TestNetworkCallback cellBgCallback = new TestNetworkCallback();
|
||||
mCm.requestBackgroundNetwork(new NetworkRequest.Builder()
|
||||
.addTransportType(TRANSPORT_CELLULAR).build(), null, cellBgCallback);
|
||||
.addTransportType(TRANSPORT_CELLULAR).build(),
|
||||
mCsHandlerThread.getThreadHandler(), cellBgCallback);
|
||||
|
||||
// Make callbacks for monitoring.
|
||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||
@@ -11026,4 +11027,12 @@ public class ConnectivityServiceTest {
|
||||
verifyNoNetwork();
|
||||
mCm.unregisterNetworkCallback(cellCb);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterBestMatchingNetworkCallback() throws Exception {
|
||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||
assertThrows(UnsupportedOperationException.class,
|
||||
() -> mCm.registerBestMatchingNetworkCallback(request, new NetworkCallback(),
|
||||
mCsHandlerThread.getThreadHandler()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user