Merge "Remove unused methods and restrict visibility in LocationPermissionChecker" into main

This commit is contained in:
Treehugger Robot 2024-08-29 11:19:24 +00:00 • committed by Gerrit Code Review
commit 6f005ff41b
2 changed files with 16 additions and 52 deletions

View file

@ -16,6 +16,8 @@
package com.android.net.module.util;
import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.Nullable;
@ -112,47 +114,9 @@ public class LocationPermissionChecker {
*
* @return {@link LocationPermissionCheckStatus} the result of the location permission check.
*/
public @LocationPermissionCheckStatus int checkLocationPermissionWithDetailInfo(
@VisibleForTesting(visibility = PRIVATE)
public @LocationPermissionCheckStatus int checkLocationPermissionInternal(
String pkgName, @Nullable String featureId, int uid, @Nullable String message) {
final int result = checkLocationPermissionInternal(pkgName, featureId, uid, message);
switch (result) {
case ERROR_LOCATION_MODE_OFF:
Log.e(TAG, "Location mode is disabled for the device");
break;
case ERROR_LOCATION_PERMISSION_MISSING:
Log.e(TAG, "UID " + uid + " has no location permission");
break;
}
return result;
}
/**
* Enforce the caller has location permission.
*
* This API determines if the location mode enabled for the caller and the caller has
* ACCESS_COARSE_LOCATION permission is targetSDK<29, otherwise, has ACCESS_FINE_LOCATION.
* SecurityException is thrown if the caller has no permission or the location mode is disabled.
*
* @param pkgName package name of the application requesting access
* @param featureId The feature in the package
* @param uid The uid of the package
* @param message A message describing why the permission was checked. Only needed if this is
* not inside of a two-way binder call from the data receiver
*/
public void enforceLocationPermission(String pkgName, @Nullable String featureId, int uid,
@Nullable String message) throws SecurityException {
final int result = checkLocationPermissionInternal(pkgName, featureId, uid, message);
switch (result) {
case ERROR_LOCATION_MODE_OFF:
throw new SecurityException("Location mode is disabled for the device");
case ERROR_LOCATION_PERMISSION_MISSING:
throw new SecurityException("UID " + uid + " has no location permission");
}
}
private int checkLocationPermissionInternal(String pkgName, @Nullable String featureId,
int uid, @Nullable String message) {
checkPackage(uid, pkgName);
// Apps with NETWORK_SETTINGS, NETWORK_SETUP_WIZARD, NETWORK_STACK & MAINLINE_NETWORK_STACK
@ -221,7 +185,7 @@ public class LocationPermissionChecker {
/**
* Retrieves a handle to LocationManager (if not already done) and check if location is enabled.
*/
public boolean isLocationModeEnabled() {
private boolean isLocationModeEnabled() {
final LocationManager LocationManager = mContext.getSystemService(LocationManager.class);
try {
return LocationManager.isLocationEnabledForUser(UserHandle.of(
@ -278,7 +242,7 @@ public class LocationPermissionChecker {
/**
* Returns true if the |uid| holds NETWORK_SETTINGS permission.
*/
public boolean checkNetworkSettingsPermission(int uid) {
private boolean checkNetworkSettingsPermission(int uid) {
return getUidPermission(android.Manifest.permission.NETWORK_SETTINGS, uid)
== PackageManager.PERMISSION_GRANTED;
}
@ -286,7 +250,7 @@ public class LocationPermissionChecker {
/**
* Returns true if the |uid| holds NETWORK_SETUP_WIZARD permission.
*/
public boolean checkNetworkSetupWizardPermission(int uid) {
private boolean checkNetworkSetupWizardPermission(int uid) {
return getUidPermission(android.Manifest.permission.NETWORK_SETUP_WIZARD, uid)
== PackageManager.PERMISSION_GRANTED;
}
@ -294,7 +258,7 @@ public class LocationPermissionChecker {
/**
* Returns true if the |uid| holds NETWORK_STACK permission.
*/
public boolean checkNetworkStackPermission(int uid) {
private boolean checkNetworkStackPermission(int uid) {
return getUidPermission(android.Manifest.permission.NETWORK_STACK, uid)
== PackageManager.PERMISSION_GRANTED;
}
@ -302,7 +266,7 @@ public class LocationPermissionChecker {
/**
* Returns true if the |uid| holds MAINLINE_NETWORK_STACK permission.
*/
public boolean checkMainlineNetworkStackPermission(int uid) {
private boolean checkMainlineNetworkStackPermission(int uid) {
return getUidPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, uid)
== PackageManager.PERMISSION_GRANTED;
}

View file

@ -211,7 +211,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.SUCCEEDED, result);
}
@ -228,7 +228,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.SUCCEEDED, result);
}
@ -243,7 +243,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
assertThrows(SecurityException.class,
() -> mChecker.checkLocationPermissionWithDetailInfo(
() -> mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null));
}
@ -254,7 +254,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.ERROR_LOCATION_PERMISSION_MISSING, result);
}
@ -270,7 +270,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.ERROR_LOCATION_PERMISSION_MISSING, result);
verify(mMockAppOps, never()).noteOp(anyInt(), anyInt(), anyString());
@ -287,7 +287,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.ERROR_LOCATION_MODE_OFF, result);
}
@ -301,7 +301,7 @@ public class LocationPermissionCheckerTest {
setupTestCase();
final int result =
mChecker.checkLocationPermissionWithDetailInfo(
mChecker.checkLocationPermissionInternal(
TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
assertEquals(LocationPermissionChecker.SUCCEEDED, result);
}