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

Commit 48bfc9ed authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Do not check location access if state is not persisted

If the permission group state is not persisted other code is not aware
of it yet. Hence no point of running the location access check code.

Test: atest --test-mapping packages/apps/PermissionController/src/com/android/packageinstaller/permission/service:presubmit
Change-Id: I03dedb48dea5a7e9425afa563618941a809a057d
parent 4bc6f500
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -121,6 +121,12 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
     */
    private boolean mHasPermissionWithBackgroundMode;

    /**
     * Set if {@link LocationAccessCheck#checkLocationAccessSoon()} should be triggered once the
     * changes are persisted.
     */
    private boolean mTriggerLocationAccessCheckOnPersist;

    public static AppPermissionGroup create(Context context, PackageInfo packageInfo,
            String permissionName, boolean delayChanges) {
        return create(context, packageInfo, permissionName, Process.myUserHandle(), delayChanges);
@@ -824,7 +830,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
                    Permission bgPerm = permission.getBackgroundPermission();
                    if (bgPerm != null) {
                        if (bgPerm.isGrantedIncludingAppOp()) {
                            new LocationAccessCheck(mContext, null).checkLocationAccessSoon();
                            mTriggerLocationAccessCheckOnPersist = true;
                        }
                    }
                } else if (permission.getName().equals(ACCESS_BACKGROUND_LOCATION)) {
@@ -836,8 +842,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>

                            if (fgPerm.getName().equals(ACCESS_FINE_LOCATION)) {
                                if (fgPerm.isGrantedIncludingAppOp()) {
                                    new LocationAccessCheck(mContext, null)
                                            .checkLocationAccessSoon();
                                    mTriggerLocationAccessCheckOnPersist = true;
                                }

                                break;
@@ -1240,5 +1245,10 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        if (mayKillBecauseOfAppOpsChange && shouldKillApp) {
            killApp(KILL_REASON_APP_OP_CHANGE);
        }

        if (mTriggerLocationAccessCheckOnPersist) {
            new LocationAccessCheck(mContext, null).checkLocationAccessSoon();
            mTriggerLocationAccessCheckOnPersist = false;
        }
    }
}