Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c365aa0 authored by Sooraj Sasindran's avatar Sooraj Sasindran
Browse files

Do not use hidden noteOpNoThrow

Do not use hidden noteOpNoThrow

Bug: 137202333
Test: unit test
Running Tests...

arm64-v8a TeleServiceTests
--------------------------
com.android.phone.tests (9 Tests)
[1/9] com.android.phone.LocationAccessPolicyTest#test[System location is off]: PASSED (177ms)
[2/9] com.android.phone.LocationAccessPolicyTest#test[App on latest SDK level has all proper permissions for fine]: PASSED (0ms)
[3/9] com.android.phone.LocationAccessPolicyTest#test[App on older SDK level missing permissions for fine but has coarse]: PASSED (26ms)
[4/9] com.android.phone.LocationAccessPolicyTest#test[App on latest SDK level missing fine app ops permission]: PASSED (1ms)
[5/9] com.android.phone.LocationAccessPolicyTest#test[App has coarse permission but fine permission isn't being enforced yet]: PASSED (0ms)
[6/9] com.android.phone.LocationAccessPolicyTest#test[App on latest SDK level has coarse but missing fine when fine is req.]: PASSED (0ms)
[7/9] com.android.phone.LocationAccessPolicyTest#test[App on latest SDK level has MODE_IGNORED for app ops on fine]: PASSED (1ms)
[8/9] com.android.phone.LocationAccessPolicyTest#test[App has no permissions but it's sdk level grandfathers it in]: PASSED (26ms)
[9/9] com.android.phone.LocationAccessPolicyTest#test[App on latest SDK level has proper permissions for coarse]: PASSED (1ms)

Summary
-------
arm64-v8a TeleServiceTests: Passed: 9, Failed: 0, Ignored: 0, Assumption Failed: 0

Change-Id: I04dafff67ae06f3c6035b42d9d21fd7def493547
parent 35ffe32d
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -193,6 +193,17 @@ public final class LocationAccessPolicy {
        }
    }

    private static String getAppOpsString(String manifestPermission) {
        switch (manifestPermission) {
            case Manifest.permission.ACCESS_FINE_LOCATION:
                return AppOpsManager.OPSTR_FINE_LOCATION;
            case Manifest.permission.ACCESS_COARSE_LOCATION:
                return AppOpsManager.OPSTR_COARSE_LOCATION;
            default:
                return null;
        }
    }

    private static LocationPermissionResult checkAppLocationPermissionHelper(Context context,
            LocationPermissionQuery query, String permissionToCheck) {
        String locationTypeForLog =
@@ -206,8 +217,8 @@ public final class LocationAccessPolicy {
        if (hasManifestPermission) {
            // Only check the app op if the app has the permission.
            int appOpMode = context.getSystemService(AppOpsManager.class)
                    .noteOpNoThrow(AppOpsManager.permissionToOpCode(permissionToCheck),
                            query.callingUid, query.callingPackage, query.callingFeatureId, null);
                    .noteOpNoThrow(getAppOpsString(permissionToCheck), query.callingUid,
                            query.callingPackage, query.callingFeatureId, null);
            if (appOpMode == AppOpsManager.MODE_ALLOWED) {
                // If the app did everything right, return without logging.
                return LocationPermissionResult.ALLOWED;