diff --git a/staticlibs/framework/com/android/net/module/util/LocationPermissionChecker.java b/staticlibs/framework/com/android/net/module/util/LocationPermissionChecker.java index f6bee6906b..28c33f3257 100644 --- a/staticlibs/framework/com/android/net/module/util/LocationPermissionChecker.java +++ b/staticlibs/framework/com/android/net/module/util/LocationPermissionChecker.java @@ -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; } diff --git a/staticlibs/tests/unit/src/com/android/net/module/util/LocationPermissionCheckerTest.java b/staticlibs/tests/unit/src/com/android/net/module/util/LocationPermissionCheckerTest.java index 3239244d7f..c8f8656cd5 100644 --- a/staticlibs/tests/unit/src/com/android/net/module/util/LocationPermissionCheckerTest.java +++ b/staticlibs/tests/unit/src/com/android/net/module/util/LocationPermissionCheckerTest.java @@ -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); }