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

Commit 61b4d359 authored by Hai Zhang's avatar Hai Zhang
Browse files

Remove special handling for legacy apps when checking permission.

This is no longer needed since we are syncing app ops. This change
also brings back some minor refactoring from the previous commit that
was reverted.

Bug: 136503238
Test: presubmit
Change-Id: I73f09c8720ed9166d4a111567095617f1f2409b5
parent 1e652863
Loading
Loading
Loading
Loading
+9 −26
Original line number Diff line number Diff line
@@ -53,7 +53,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.ApplicationPackageManager;
import android.app.IActivityManager;
import android.content.Context;
@@ -793,13 +792,13 @@ public class PermissionManagerService extends IPermissionManager.Stub {

        final CheckPermissionDelegate checkPermissionDelegate;
        synchronized (mLock) {
            if (mCheckPermissionDelegate == null)  {
                return checkPermissionImpl(permName, pkgName, userId);
            }
            checkPermissionDelegate = mCheckPermissionDelegate;
        }
        if (checkPermissionDelegate == null) {
            return checkPermissionImpl(permName, pkgName, userId);
        }
        return checkPermissionDelegate.checkPermission(permName, pkgName, userId,
                PermissionManagerService.this::checkPermissionImpl);
                this::checkPermissionImpl);
    }

    private int checkPermissionImpl(String permName, String pkgName, int userId) {
@@ -845,23 +844,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {

    private boolean checkSinglePermissionInternal(int uid,
            @NonNull PermissionsState permissionsState, @NonNull String permissionName) {
        boolean hasPermission = permissionsState.hasPermission(permissionName,
                UserHandle.getUserId(uid));

        if (!hasPermission && mSettings.isPermissionRuntime(permissionName)) {
            final String[] packageNames = mContext.getPackageManager().getPackagesForUid(uid);
            final int packageNamesSize = packageNames != null ? packageNames.length : 0;
            for (int i = 0; i < packageNamesSize; i++) {
                final PackageParser.Package pkg = mPackageManagerInt.getPackage(packageNames[i]);
                if (pkg != null && pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M
                        && pkg.requestedPermissions.contains(permissionName)) {
                    hasPermission = true;
                    break;
                }
            }
        }

        if (!hasPermission) {
        if (!permissionsState.hasPermission(permissionName, UserHandle.getUserId(uid))) {
            return false;
        }

@@ -885,13 +868,13 @@ public class PermissionManagerService extends IPermissionManager.Stub {

        final CheckPermissionDelegate checkPermissionDelegate;
        synchronized (mLock) {
            if (mCheckPermissionDelegate == null)  {
                return checkUidPermissionImpl(permName, uid);
            }
            checkPermissionDelegate = mCheckPermissionDelegate;
        }
        if (checkPermissionDelegate == null)  {
            return checkUidPermissionImpl(permName, uid);
        }
        return checkPermissionDelegate.checkUidPermission(permName, uid,
                PermissionManagerService.this::checkUidPermissionImpl);
                this::checkUidPermissionImpl);
    }

    private int checkUidPermissionImpl(String permName, int uid) {