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

Commit d2342110 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Add context UID to package-name-based permission query" into...

Merge "Merge "Add context UID to package-name-based permission query" into rvc-dev am: ac3c9690 am: 3bb10386" into rvc-d1-dev-plus-aosp
parents 56a5aa55 e44e5b7c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -675,7 +675,7 @@ public class ApplicationPackageManager extends PackageManager {
    @Override
    public int checkPermission(String permName, String pkgName) {
        return PermissionManager
                .checkPackageNamePermission(permName, pkgName);
                .checkPackageNamePermission(permName, pkgName, getUserId());
    }

    @Override
+16 −10
Original line number Diff line number Diff line
@@ -561,21 +561,24 @@ public final class PermissionManager {
    private static final class PackageNamePermissionQuery {
        final String permName;
        final String pkgName;
        final int uid;

        PackageNamePermissionQuery(@Nullable String permName, @Nullable String pkgName) {
        PackageNamePermissionQuery(@Nullable String permName, @Nullable String pkgName, int uid) {
            this.permName = permName;
            this.pkgName = pkgName;
            this.uid = uid;
        }

        @Override
        public String toString() {
            return String.format("PackageNamePermissionQuery(pkgName=\"%s\", permName=\"%s\")",
                    pkgName, permName);
            return String.format(
                    "PackageNamePermissionQuery(pkgName=\"%s\", permName=\"%s, uid=%s\")",
                    pkgName, permName, uid);
        }

        @Override
        public int hashCode() {
            return Objects.hashCode(permName) * 13 + Objects.hashCode(pkgName);
            return Objects.hash(permName, pkgName, uid);
        }

        @Override
@@ -590,15 +593,17 @@ public final class PermissionManager {
                return false;
            }
            return Objects.equals(permName, other.permName)
                    && Objects.equals(pkgName, other.pkgName);
                    && Objects.equals(pkgName, other.pkgName)
                    && uid == other.uid;
        }
    }

    /* @hide */
    private static int checkPackageNamePermissionUncached(String permName, String pkgName) {
    private static int checkPackageNamePermissionUncached(
            String permName, String pkgName, int uid) {
        try {
            return ActivityThread.getPermissionManager().checkPermission(
                    permName, pkgName, UserHandle.myUserId());
                    permName, pkgName, uid);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -611,7 +616,8 @@ public final class PermissionManager {
                    16, CACHE_KEY_PACKAGE_INFO) {
                @Override
                protected Integer recompute(PackageNamePermissionQuery query) {
                    return checkPackageNamePermissionUncached(query.permName, query.pkgName);
                    return checkPackageNamePermissionUncached(
                            query.permName, query.pkgName, query.uid);
                }
            };

@@ -620,9 +626,9 @@ public final class PermissionManager {
     *
     * @hide
     */
    public static int checkPackageNamePermission(String permName, String pkgName) {
    public static int checkPackageNamePermission(String permName, String pkgName, int uid) {
        return sPackageNamePermissionCache.query(
                new PackageNamePermissionQuery(permName, pkgName));
                new PackageNamePermissionQuery(permName, pkgName, uid));
    }

    /**