Merge "Use PermissionUtils" am: 584e907d7a
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1559098 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I81a3b8d23d1d708675206b36367326c44113c46d
This commit is contained in:
@@ -15,9 +15,6 @@
|
||||
*/
|
||||
package android.net;
|
||||
|
||||
import static android.Manifest.permission.NETWORK_STACK;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
@@ -26,8 +23,7 @@ import android.content.Context;
|
||||
import android.os.IBinder;
|
||||
import android.os.ServiceManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import com.android.net.module.util.PermissionUtils;
|
||||
/**
|
||||
* Constants and utilities for client code communicating with the network stack service.
|
||||
* @hide
|
||||
@@ -79,9 +75,14 @@ public class NetworkStack {
|
||||
* @param context {@link android.content.Context} for the process.
|
||||
*
|
||||
* @hide
|
||||
*
|
||||
* @deprecated Use {@link PermissionUtils#enforceNetworkStackPermission} instead.
|
||||
*
|
||||
* TODO: remove this method and let the users call to PermissionUtils directly.
|
||||
*/
|
||||
@Deprecated
|
||||
public static void checkNetworkStackPermission(final @NonNull Context context) {
|
||||
checkNetworkStackPermissionOr(context);
|
||||
PermissionUtils.enforceNetworkStackPermission(context);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,31 +93,14 @@ public class NetworkStack {
|
||||
* @param otherPermissions The set of permissions that could be the candidate permissions , or
|
||||
* empty string if none of other permissions needed.
|
||||
* @hide
|
||||
*
|
||||
* @deprecated Use {@link PermissionUtils#enforceNetworkStackPermissionOr} instead.
|
||||
*
|
||||
* TODO: remove this method and let the users call to PermissionUtils directly.
|
||||
*/
|
||||
@Deprecated
|
||||
public static void checkNetworkStackPermissionOr(final @NonNull Context context,
|
||||
final @NonNull String... otherPermissions) {
|
||||
ArrayList<String> permissions = new ArrayList<String>(Arrays.asList(otherPermissions));
|
||||
permissions.add(NETWORK_STACK);
|
||||
permissions.add(PERMISSION_MAINLINE_NETWORK_STACK);
|
||||
enforceAnyPermissionOf(context, permissions.toArray(new String[0]));
|
||||
PermissionUtils.enforceNetworkStackPermissionOr(context, otherPermissions);
|
||||
}
|
||||
|
||||
private static void enforceAnyPermissionOf(final @NonNull Context context,
|
||||
final @NonNull String... permissions) {
|
||||
if (!checkAnyPermissionOf(context, permissions)) {
|
||||
throw new SecurityException("Requires one of the following permissions: "
|
||||
+ String.join(", ", permissions) + ".");
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean checkAnyPermissionOf(final @NonNull Context context,
|
||||
final @NonNull String... permissions) {
|
||||
for (String permission : permissions) {
|
||||
if (context.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -197,6 +197,7 @@ import com.android.modules.utils.BasicShellCommandHandler;
|
||||
import com.android.net.module.util.CollectionUtils;
|
||||
import com.android.net.module.util.LinkPropertiesUtils.CompareOrUpdateResult;
|
||||
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
|
||||
import com.android.net.module.util.PermissionUtils;
|
||||
import com.android.server.am.BatteryStatsService;
|
||||
import com.android.server.connectivity.AutodestructReference;
|
||||
import com.android.server.connectivity.DataConnectionStats;
|
||||
@@ -1511,7 +1512,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
@Override
|
||||
public Network getActiveNetworkForUid(int uid, boolean ignoreBlocked) {
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
return getActiveNetworkForUidInternal(uid, ignoreBlocked);
|
||||
}
|
||||
|
||||
@@ -1534,7 +1535,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
@Override
|
||||
public NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked) {
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
final NetworkState state = getUnfilteredActiveNetworkState(uid);
|
||||
filterNetworkStateForUid(state, uid, ignoreBlocked);
|
||||
return state.networkInfo;
|
||||
@@ -1878,7 +1879,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
@Override
|
||||
public NetworkState[] getAllNetworkState() {
|
||||
// This contains IMSI details, so make sure the caller is privileged.
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
|
||||
final ArrayList<NetworkState> result = new ArrayList<>();
|
||||
for (Network network : getAllNetworks()) {
|
||||
@@ -2302,7 +2303,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
// Public because it's used by mLockdownTracker.
|
||||
public void sendConnectedBroadcast(NetworkInfo info) {
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
sendGeneralBroadcast(info, CONNECTIVITY_ACTION);
|
||||
}
|
||||
|
||||
@@ -4685,7 +4686,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
@Override
|
||||
public void setGlobalProxy(final ProxyInfo proxyProperties) {
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
mProxyTracker.setGlobalProxy(proxyProperties);
|
||||
}
|
||||
|
||||
@@ -4887,7 +4888,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
@Override
|
||||
public void setRequireVpnForUids(boolean requireVpn, UidRange[] ranges) {
|
||||
NetworkStack.checkNetworkStackPermission(mContext);
|
||||
PermissionUtils.enforceNetworkStackPermission(mContext);
|
||||
mHandler.sendMessage(mHandler.obtainMessage(EVENT_SET_REQUIRE_VPN_FOR_UIDS,
|
||||
encodeBool(requireVpn), 0 /* arg2 */, ranges));
|
||||
}
|
||||
|
||||
@@ -15,20 +15,8 @@
|
||||
*/
|
||||
package android.net;
|
||||
|
||||
import static android.Manifest.permission.NETWORK_STACK;
|
||||
import static android.content.pm.PackageManager.PERMISSION_DENIED;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
|
||||
import static android.net.NetworkStack.checkNetworkStackPermission;
|
||||
import static android.net.NetworkStack.checkNetworkStackPermissionOr;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
|
||||
@@ -46,44 +34,15 @@ import org.mockito.MockitoAnnotations;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class NetworkStackTest {
|
||||
private static final String [] OTHER_PERMISSION = {"otherpermission1", "otherpermission2"};
|
||||
|
||||
@Rule
|
||||
public DevSdkIgnoreRule mDevSdkIgnoreRule = new DevSdkIgnoreRule();
|
||||
|
||||
@Mock Context mCtx;
|
||||
@Mock private IBinder mConnectorBinder;
|
||||
|
||||
@Before public void setUp() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckNetworkStackPermission() throws Exception {
|
||||
when(mCtx.checkCallingOrSelfPermission(eq(NETWORK_STACK))).thenReturn(PERMISSION_GRANTED);
|
||||
when(mCtx.checkCallingOrSelfPermission(eq(PERMISSION_MAINLINE_NETWORK_STACK)))
|
||||
.thenReturn(PERMISSION_DENIED);
|
||||
checkNetworkStackPermission(mCtx);
|
||||
checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
|
||||
|
||||
when(mCtx.checkCallingOrSelfPermission(eq(NETWORK_STACK))).thenReturn(PERMISSION_DENIED);
|
||||
when(mCtx.checkCallingOrSelfPermission(eq(PERMISSION_MAINLINE_NETWORK_STACK)))
|
||||
.thenReturn(PERMISSION_GRANTED);
|
||||
checkNetworkStackPermission(mCtx);
|
||||
checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
|
||||
|
||||
when(mCtx.checkCallingOrSelfPermission(any())).thenReturn(PERMISSION_DENIED);
|
||||
|
||||
try {
|
||||
checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
|
||||
} catch (SecurityException e) {
|
||||
// Expect to get a SecurityException
|
||||
return;
|
||||
}
|
||||
|
||||
fail("Expect fail but permission granted.");
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
public void testGetService() {
|
||||
NetworkStack.setServiceForTest(mConnectorBinder);
|
||||
|
||||
Reference in New Issue
Block a user