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

Commit 434cf654 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Set UID appops mode instead of package appops mode"

parents 67327d78 159d98bd
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.app;

import android.annotation.NonNull;
import android.util.SparseIntArray;

import com.android.internal.util.function.QuadFunction;
@@ -86,10 +85,7 @@ public abstract class AppOpsManagerInternal {
     *
     * @param code The op code to set.
     * @param uid The UID for which to set.
     * @param packageName The package for which to set.
     * @param mode The new mode to set.
     * @param isPrivileged If the package is privileged
     */
    public abstract void setMode(int code, int uid, @NonNull String packageName, int mode,
            boolean isPrivileged);
    public abstract void setUidMode(int code, int uid, int mode);
}
+11 −7
Original line number Diff line number Diff line
@@ -4096,11 +4096,16 @@ public class AppOpsService extends IAppOpsService.Stub {

    private static String[] getPackagesForUid(int uid) {
        String[] packageNames = null;

        // Very early during boot the package manager is not yet or not yet fully started. At this
        // time there are no packages yet.
        if (AppGlobals.getPackageManager() != null) {
            try {
                packageNames = AppGlobals.getPackageManager().getPackagesForUid(uid);
            } catch (RemoteException e) {
                /* ignore - local call */
            }
        }
        if (packageNames == null) {
            return EmptyArray.STRING;
        }
@@ -4269,9 +4274,8 @@ public class AppOpsService extends IAppOpsService.Stub {
        }

        @Override
        public void setMode(int code, int uid, @NonNull String packageName, int mode,
                boolean isPrivileged) {
            AppOpsService.this.setMode(code, uid, packageName, mode, false, isPrivileged);
        public void setUidMode(int code, int uid, int mode) {
            AppOpsService.this.setUidMode(code, uid, mode);
        }
    }
}
+5 −6
Original line number Diff line number Diff line
@@ -1193,9 +1193,9 @@ public final class DefaultPermissionGrantPolicy {
                            if (pm.checkPermission(fgPerm, pkg.packageName)
                                    == PackageManager.PERMISSION_GRANTED) {
                                // Upgrade the app-op state of the fg permission to allow bg access
                                mContext.getSystemService(AppOpsManager.class).setMode(
                                mContext.getSystemService(AppOpsManager.class).setUidMode(
                                        AppOpsManager.permissionToOp(fgPerm), uid,
                                        pkg.packageName, AppOpsManager.MODE_ALLOWED);
                                        AppOpsManager.MODE_ALLOWED);

                                break;
                            }
@@ -1205,8 +1205,8 @@ public final class DefaultPermissionGrantPolicy {
                    String bgPerm = getBackgroundPermission(permission);
                    if (bgPerm == null) {
                        if (op != null) {
                            mContext.getSystemService(AppOpsManager.class).setMode(op, uid,
                                    pkg.packageName, AppOpsManager.MODE_ALLOWED);
                            mContext.getSystemService(AppOpsManager.class).setUidMode(op, uid,
                                    AppOpsManager.MODE_ALLOWED);
                        }
                    } else {
                        int mode;
@@ -1217,8 +1217,7 @@ public final class DefaultPermissionGrantPolicy {
                            mode = AppOpsManager.MODE_FOREGROUND;
                        }

                        mContext.getSystemService(AppOpsManager.class).setMode(op, uid,
                                pkg.packageName, mode);
                        mContext.getSystemService(AppOpsManager.class).setUidMode(op, uid, mode);
                    }

                    if (DEBUG) {
+2 −4
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import static android.app.AppOpsManager.MODE_IGNORED;
import static android.app.AppOpsManager.OP_NONE;
import static android.app.AppOpsManager.permissionToOp;
import static android.app.AppOpsManager.permissionToOpCode;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
@@ -1073,9 +1072,8 @@ public class PermissionManagerService {
        AppOpsManagerInternal appOpsInternal = LocalServices.getService(
                AppOpsManagerInternal.class);

        appOpsInternal.setMode(permissionToOpCode(permission),
                getUid(userId, getAppId(pkg.applicationInfo.uid)), pkg.packageName, mode,
                (pkg.applicationInfo.privateFlags & PRIVATE_FLAG_PRIVILEGED) != 0);
        appOpsInternal.setUidMode(permissionToOpCode(permission),
                getUid(userId, getAppId(pkg.applicationInfo.uid)), mode);
    }

    /**