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

Commit da106aa4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "appops: checkOp uid mode fgd translation" into main

parents dfd1a472 3255d1a2
Loading
Loading
Loading
Loading
+22 −10
Original line number Original line Diff line number Diff line
@@ -423,7 +423,7 @@ public class AppOpsService extends IAppOpsService.Stub {


    /** Hands the definition of foreground and uid states */
    /** Hands the definition of foreground and uid states */
    @GuardedBy("this")
    @GuardedBy("this")
    public AppOpsUidStateTracker getUidStateTracker() {
    private AppOpsUidStateTracker getUidStateTracker() {
        if (mUidStateTracker == null) {
        if (mUidStateTracker == null) {
            mUidStateTracker = new AppOpsUidStateTrackerImpl(
            mUidStateTracker = new AppOpsUidStateTrackerImpl(
                    LocalServices.getService(ActivityManagerInternal.class),
                    LocalServices.getService(ActivityManagerInternal.class),
@@ -2895,21 +2895,28 @@ public class AppOpsService extends IAppOpsService.Stub {
                        uidState.uid, getPersistentId(virtualDeviceId), code);
                        uidState.uid, getPersistentId(virtualDeviceId), code);


                if (rawUidMode != AppOpsManager.opToDefaultMode(code)) {
                if (rawUidMode != AppOpsManager.opToDefaultMode(code)) {
                    return raw ? rawUidMode : uidState.evalMode(code, rawUidMode);
                    return raw ? rawUidMode :
                        evaluateForegroundMode(/* uid= */ uid, /* op= */ code,
                        /* rawUidMode= */ rawUidMode);
                }
                }
            }
            }


            Op op = getOpLocked(code, uid, packageName, null, false, pvr.bypass, /* edit */ false);
            Op op = getOpLocked(code, uid, packageName, null, false, pvr.bypass, /* edit */ false);
            if (op == null) {
            if (op == null) {
                return AppOpsManager.opToDefaultMode(code);
                return evaluateForegroundMode(
                        /* uid= */ uid,
                        /* op= */ code,
                        /* rawUidMode= */ AppOpsManager.opToDefaultMode(code));
            }
            }
            return raw
            var packageMode = mAppOpsCheckingService.getPackageMode(
                    ? mAppOpsCheckingService.getPackageMode(
                    op.packageName,
                            op.packageName, op.op, UserHandle.getUserId(op.uid))
                    : op.uidState.evalMode(
                    op.op,
                    op.op,
                            mAppOpsCheckingService.getPackageMode(
                    UserHandle.getUserId(op.uid));
                                    op.packageName, op.op, UserHandle.getUserId(op.uid)));
            return raw ? packageMode :
                    evaluateForegroundMode(
                        /* uid= */ uid,
                        /* op= */op.op,
                        /* rawUidMode= */ packageMode);
        }
        }
    }
    }


@@ -7003,6 +7010,11 @@ public class AppOpsService extends IAppOpsService.Stub {
                "Requested persistentId for invalid virtualDeviceId: " + virtualDeviceId);
                "Requested persistentId for invalid virtualDeviceId: " + virtualDeviceId);
    }
    }


    @GuardedBy("this")
    private int evaluateForegroundMode(int uid, int op, int rawUidMode) {
        return getUidStateTracker().evalMode(uid, op, rawUidMode);
    }

    private final class ClientUserRestrictionState implements DeathRecipient {
    private final class ClientUserRestrictionState implements DeathRecipient {
        private final IBinder token;
        private final IBinder token;