Allow SUW to access registerSystemDefaultNetworkCallback
registerSystemDefaultNetworkCallback is required by WifiTrackerLib to detect the system default network for UI purposes. Currently this API is allowed for holders of the NETWORK_SETTINGS permission, but not NETWORK_SETUP_WIZARD. Since SUW also uses WifiTrackerLib, we should allow this API for NETWORK_SETUP_WIZARD as well. Bug: 230643853 Test: atest ConnectivityServiceTest Change-Id: Ic01a186f91ed67b4603b6b8964921be7473a483a
This commit is contained in:
@@ -15,7 +15,7 @@ package android.net {
|
|||||||
method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.LinkProperties getRedactedLinkPropertiesForPackage(@NonNull android.net.LinkProperties, int, @NonNull String);
|
method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.LinkProperties getRedactedLinkPropertiesForPackage(@NonNull android.net.LinkProperties, int, @NonNull String);
|
||||||
method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.NetworkCapabilities getRedactedNetworkCapabilitiesForPackage(@NonNull android.net.NetworkCapabilities, int, @NonNull String);
|
method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.NetworkCapabilities getRedactedNetworkCapabilitiesForPackage(@NonNull android.net.NetworkCapabilities, int, @NonNull String);
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerDefaultNetworkCallbackForUid(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 registerDefaultNetworkCallbackForUid(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, android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS}) 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, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS}) 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 removeUidFromMeteredNetworkAllowList(int);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void removeUidFromMeteredNetworkAllowList(int);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void removeUidFromMeteredNetworkDenyList(int);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void removeUidFromMeteredNetworkDenyList(int);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void replaceFirewallChain(int, @NonNull int[]);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void replaceFirewallChain(int, @NonNull int[]);
|
||||||
|
|||||||
@@ -4856,6 +4856,7 @@ public class ConnectivityManager {
|
|||||||
@RequiresPermission(anyOf = {
|
@RequiresPermission(anyOf = {
|
||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||||
android.Manifest.permission.NETWORK_SETTINGS,
|
android.Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||||
android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS})
|
android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS})
|
||||||
public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
|
public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
|
||||||
@NonNull Handler handler) {
|
@NonNull Handler handler) {
|
||||||
|
|||||||
@@ -2863,9 +2863,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enforceSettingsOrUseRestrictedNetworksPermission() {
|
private void enforceSettingsOrSetupWizardOrUseRestrictedNetworksPermission() {
|
||||||
enforceAnyPermissionOf(mContext,
|
enforceAnyPermissionOf(mContext,
|
||||||
android.Manifest.permission.NETWORK_SETTINGS,
|
android.Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||||
Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS);
|
Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS);
|
||||||
}
|
}
|
||||||
@@ -6808,7 +6809,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
break;
|
break;
|
||||||
case TRACK_SYSTEM_DEFAULT:
|
case TRACK_SYSTEM_DEFAULT:
|
||||||
enforceSettingsOrUseRestrictedNetworksPermission();
|
enforceSettingsOrSetupWizardOrUseRestrictedNetworksPermission();
|
||||||
networkCapabilities = new NetworkCapabilities(defaultNc);
|
networkCapabilities = new NetworkCapabilities(defaultNc);
|
||||||
break;
|
break;
|
||||||
case BACKGROUND_REQUEST:
|
case BACKGROUND_REQUEST:
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import static android.Manifest.permission.LOCAL_MAC_ADDRESS;
|
|||||||
import static android.Manifest.permission.MANAGE_TEST_NETWORKS;
|
import static android.Manifest.permission.MANAGE_TEST_NETWORKS;
|
||||||
import static android.Manifest.permission.NETWORK_FACTORY;
|
import static android.Manifest.permission.NETWORK_FACTORY;
|
||||||
import static android.Manifest.permission.NETWORK_SETTINGS;
|
import static android.Manifest.permission.NETWORK_SETTINGS;
|
||||||
|
import static android.Manifest.permission.NETWORK_SETUP_WIZARD;
|
||||||
import static android.Manifest.permission.NETWORK_STACK;
|
import static android.Manifest.permission.NETWORK_STACK;
|
||||||
import static android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD;
|
import static android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD;
|
||||||
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
||||||
@@ -5294,6 +5295,13 @@ public class ConnectivityServiceTest {
|
|||||||
callback.expectAvailableCallbacksUnvalidated(mCellAgent);
|
callback.expectAvailableCallbacksUnvalidated(mCellAgent);
|
||||||
mCm.unregisterNetworkCallback(callback);
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
|
||||||
|
mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
|
||||||
|
mServiceContext.setPermission(NETWORK_SETUP_WIZARD, PERMISSION_GRANTED);
|
||||||
|
mCm.registerSystemDefaultNetworkCallback(callback, handler);
|
||||||
|
callback.expectAvailableCallbacksUnvalidated(mCellAgent);
|
||||||
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
|
||||||
|
mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
|
||||||
mCm.registerDefaultNetworkCallbackForUid(APP1_UID, callback, handler);
|
mCm.registerDefaultNetworkCallbackForUid(APP1_UID, callback, handler);
|
||||||
callback.expectAvailableCallbacksUnvalidated(mCellAgent);
|
callback.expectAvailableCallbacksUnvalidated(mCellAgent);
|
||||||
mCm.unregisterNetworkCallback(callback);
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
|||||||
Reference in New Issue
Block a user