Merge changes I638ed5cd,I29f15571,I21a22ed1 am: 750e8ca69e am: b1fbb5ca62
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1648068 Change-Id: Ia0b6ffa74536e3f20f13282d08bd858fc9e979bf
This commit is contained in:
@@ -11,6 +11,7 @@ package android.net {
|
|||||||
method @Nullable public android.net.ProxyInfo getGlobalProxy();
|
method @Nullable public android.net.ProxyInfo getGlobalProxy();
|
||||||
method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
|
method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
|
||||||
method @NonNull public static String getPrivateDnsMode(@NonNull android.content.Context);
|
method @NonNull public static String getPrivateDnsMode(@NonNull android.content.Context);
|
||||||
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerDefaultNetworkCallbackAsUid(int, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||||
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.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, @NonNull 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.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void setAcceptPartialConnectivity(@NonNull android.net.Network, boolean, boolean);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void setAcceptPartialConnectivity(@NonNull android.net.Network, boolean, boolean);
|
||||||
|
|||||||
@@ -3700,8 +3700,9 @@ public class ConnectivityManager {
|
|||||||
private static final HashMap<NetworkRequest, NetworkCallback> sCallbacks = new HashMap<>();
|
private static final HashMap<NetworkRequest, NetworkCallback> sCallbacks = new HashMap<>();
|
||||||
private static CallbackHandler sCallbackHandler;
|
private static CallbackHandler sCallbackHandler;
|
||||||
|
|
||||||
private NetworkRequest sendRequestForNetwork(NetworkCapabilities need, NetworkCallback callback,
|
private NetworkRequest sendRequestForNetwork(int asUid, NetworkCapabilities need,
|
||||||
int timeoutMs, NetworkRequest.Type reqType, int legacyType, CallbackHandler handler) {
|
NetworkCallback callback, int timeoutMs, NetworkRequest.Type reqType, int legacyType,
|
||||||
|
CallbackHandler handler) {
|
||||||
printStackTrace();
|
printStackTrace();
|
||||||
checkCallbackNotNull(callback);
|
checkCallbackNotNull(callback);
|
||||||
if (reqType != TRACK_DEFAULT && reqType != TRACK_SYSTEM_DEFAULT && need == null) {
|
if (reqType != TRACK_DEFAULT && reqType != TRACK_SYSTEM_DEFAULT && need == null) {
|
||||||
@@ -3726,8 +3727,8 @@ public class ConnectivityManager {
|
|||||||
getAttributionTag());
|
getAttributionTag());
|
||||||
} else {
|
} else {
|
||||||
request = mService.requestNetwork(
|
request = mService.requestNetwork(
|
||||||
need, reqType.ordinal(), messenger, timeoutMs, binder, legacyType,
|
asUid, need, reqType.ordinal(), messenger, timeoutMs, binder,
|
||||||
callbackFlags, callingPackageName, getAttributionTag());
|
legacyType, callbackFlags, callingPackageName, getAttributionTag());
|
||||||
}
|
}
|
||||||
if (request != null) {
|
if (request != null) {
|
||||||
sCallbacks.put(request, callback);
|
sCallbacks.put(request, callback);
|
||||||
@@ -3742,6 +3743,12 @@ public class ConnectivityManager {
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private NetworkRequest sendRequestForNetwork(NetworkCapabilities need, NetworkCallback callback,
|
||||||
|
int timeoutMs, NetworkRequest.Type reqType, int legacyType, CallbackHandler handler) {
|
||||||
|
return sendRequestForNetwork(Process.INVALID_UID, need, callback, timeoutMs, reqType,
|
||||||
|
legacyType, handler);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function to request a network with a particular legacy type.
|
* Helper function to request a network with a particular legacy type.
|
||||||
*
|
*
|
||||||
@@ -4227,8 +4234,40 @@ public class ConnectivityManager {
|
|||||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||||
public void registerDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
|
public void registerDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
|
||||||
@NonNull Handler handler) {
|
@NonNull Handler handler) {
|
||||||
|
registerDefaultNetworkCallbackAsUid(Process.INVALID_UID, networkCallback, handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers to receive notifications about changes in the default network for the specified
|
||||||
|
* UID. This may be a physical network or a virtual network, such as a VPN that applies to the
|
||||||
|
* UID. The callbacks will continue to be called until either the application exits or
|
||||||
|
* {@link #unregisterNetworkCallback(NetworkCallback)} is called.
|
||||||
|
*
|
||||||
|
* <p>To avoid performance issues due to apps leaking callbacks, the system will limit the
|
||||||
|
* number of outstanding requests to 100 per app (identified by their UID), shared with
|
||||||
|
* all variants of this method, of {@link #requestNetwork} as well as
|
||||||
|
* {@link ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback}.
|
||||||
|
* Requesting a network with this method will count toward this limit. If this limit is
|
||||||
|
* exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources,
|
||||||
|
* make sure to unregister the callbacks with
|
||||||
|
* {@link #unregisterNetworkCallback(NetworkCallback)}.
|
||||||
|
*
|
||||||
|
* @param uid the UID for which to track default network changes.
|
||||||
|
* @param networkCallback The {@link NetworkCallback} that the system will call as the
|
||||||
|
* UID's default network changes.
|
||||||
|
* @param handler {@link Handler} to specify the thread upon which the callback will be invoked.
|
||||||
|
* @throws RuntimeException if the app already has too many callbacks registered.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
@SuppressLint({"ExecutorRegistration", "PairedRegistration"})
|
||||||
|
@RequiresPermission(anyOf = {
|
||||||
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||||
|
android.Manifest.permission.NETWORK_SETTINGS})
|
||||||
|
public void registerDefaultNetworkCallbackAsUid(int uid,
|
||||||
|
@NonNull NetworkCallback networkCallback, @NonNull Handler handler) {
|
||||||
CallbackHandler cbHandler = new CallbackHandler(handler);
|
CallbackHandler cbHandler = new CallbackHandler(handler);
|
||||||
sendRequestForNetwork(null /* NetworkCapabilities need */, networkCallback, 0,
|
sendRequestForNetwork(uid, null /* need */, networkCallback, 0 /* timeoutMs */,
|
||||||
TRACK_DEFAULT, TYPE_NONE, cbHandler);
|
TRACK_DEFAULT, TYPE_NONE, cbHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ interface IConnectivityManager
|
|||||||
in NetworkCapabilities nc, in NetworkScore score, in NetworkAgentConfig config,
|
in NetworkCapabilities nc, in NetworkScore score, in NetworkAgentConfig config,
|
||||||
in int factorySerialNumber);
|
in int factorySerialNumber);
|
||||||
|
|
||||||
NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, int reqType,
|
NetworkRequest requestNetwork(int uid, in NetworkCapabilities networkCapabilities, int reqType,
|
||||||
in Messenger messenger, int timeoutSec, in IBinder binder, int legacy,
|
in Messenger messenger, int timeoutSec, in IBinder binder, int legacy,
|
||||||
int callbackFlags, String callingPackageName, String callingAttributionTag);
|
int callbackFlags, String callingPackageName, String callingAttributionTag);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user