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

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

Merge "Remove IPermissionManager usage inside PackageManagerService."

parents 6e73857c a0d2826a
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -48,10 +48,6 @@ interface IPermissionManager {

    void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId);

    int checkPermission(String permName, String pkgName, int userId);

    int checkUidPermission(String permName, int uid);

    void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);

    void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
@@ -69,8 +65,6 @@ interface IPermissionManager {

    void revokeRuntimePermission(String packageName, String permName, int userId, String reason);

    void resetRuntimePermissions();

    boolean shouldShowRequestPermissionRationale(String permName,
            String packageName, int userId);

+1 −1
Original line number Diff line number Diff line
@@ -1236,7 +1236,7 @@ public final class PermissionManager {
    private static int checkPackageNamePermissionUncached(
            String permName, String pkgName, @UserIdInt int userId) {
        try {
            return ActivityThread.getPermissionManager().checkPermission(
            return ActivityThread.getPackageManager().checkPermission(
                    permName, pkgName, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
+21 −55
Original line number Diff line number Diff line
@@ -295,7 +295,7 @@ import android.os.storage.StorageManager;
import android.os.storage.StorageManagerInternal;
import android.os.storage.VolumeInfo;
import android.os.storage.VolumeRecord;
import android.permission.IPermissionManager;
import android.permission.PermissionManager;
import android.provider.ContactsContract;
import android.provider.DeviceConfig;
import android.provider.Settings.Global;
@@ -962,7 +962,6 @@ public class PackageManagerService extends IPackageManager.Stub
        private final Singleton<ArtManagerService> mArtManagerServiceProducer;
        private final Singleton<ApexManager> mApexManagerProducer;
        private final Singleton<ViewCompiler> mViewCompilerProducer;
        private final Singleton<IPermissionManager> mPermissionManagerProducer;
        private final Singleton<IncrementalManager> mIncrementalManagerProducer;
        private final Singleton<DefaultAppProvider> mDefaultAppProviderProducer;
        private final Singleton<DisplayMetrics> mDisplayMetricsProducer;
@@ -994,7 +993,6 @@ public class PackageManagerService extends IPackageManager.Stub
                Producer<DexManager> dexManagerProducer,
                Producer<ArtManagerService> artManagerServiceProducer,
                Producer<ApexManager> apexManagerProducer,
                Producer<IPermissionManager> permissionManagerProducer,
                Producer<ViewCompiler> viewCompilerProducer,
                Producer<IncrementalManager> incrementalManagerProducer,
                Producer<DefaultAppProvider> defaultAppProviderProducer,
@@ -1029,7 +1027,6 @@ public class PackageManagerService extends IPackageManager.Stub
            mDexManagerProducer = new Singleton<>(dexManagerProducer);
            mArtManagerServiceProducer = new Singleton<>(artManagerServiceProducer);
            mApexManagerProducer = new Singleton<>(apexManagerProducer);
            mPermissionManagerProducer = new Singleton<>(permissionManagerProducer);
            mViewCompilerProducer = new Singleton<>(viewCompilerProducer);
            mIncrementalManagerProducer = new Singleton<>(incrementalManagerProducer);
            mDefaultAppProviderProducer = new Singleton<>(defaultAppProviderProducer);
@@ -1131,10 +1128,6 @@ public class PackageManagerService extends IPackageManager.Stub
            return mViewCompilerProducer.get(this, mPackageManager);
        }
        public IPermissionManager getPermissionManagerService() {
            return mPermissionManagerProducer.get(this, mPackageManager);
        }
        public Handler getBackgroundHandler() {
            return mBackgroundHandler;
        }
@@ -1260,7 +1253,6 @@ public class PackageManagerService extends IPackageManager.Stub
        public OverlayConfig overlayConfig;
        public PackageDexOptimizer packageDexOptimizer;
        public PackageParser2.Callback packageParserCallback;
        public IPermissionManager permissionManagerService;
        public PendingPackageBroadcasts pendingPackageBroadcasts;
        public PackageManagerInternal pmInternal;
        public TestUtilityService testUtilityService;
@@ -1381,8 +1373,6 @@ public class PackageManagerService extends IPackageManager.Stub
    // Internal interface for permission manager
    private final PermissionManagerServiceInternal mPermissionManager;
    // Public interface for permission manager
    private final IPermissionManager mPermissionManagerService;
    private final ComponentResolver mComponentResolver;
    // List of packages names to keep cached, even if they are uninstalled for all users
@@ -2857,7 +2847,6 @@ public class PackageManagerService extends IPackageManager.Stub
                (i, pm) -> new ArtManagerService(i.getContext(), pm, i.getInstaller(),
                        i.getInstallLock()),
                (i, pm) -> ApexManager.getInstance(),
                (i, pm) -> (IPermissionManager) ServiceManager.getService("permissionmgr"),
                (i, pm) -> new ViewCompiler(i.getInstallLock(), i.getInstaller()),
                (i, pm) -> (IncrementalManager)
                        i.getContext().getSystemService(Context.INCREMENTAL_SERVICE),
@@ -3080,7 +3069,6 @@ public class PackageManagerService extends IPackageManager.Stub
        mPackageDexOptimizer = testParams.packageDexOptimizer;
        mPackageParserCallback = testParams.packageParserCallback;
        mPendingBroadcasts = testParams.pendingPackageBroadcasts;
        mPermissionManagerService = testParams.permissionManagerService;
        mPmInternal = testParams.pmInternal;
        mTestUtilityService = testParams.testUtilityService;
        mProcessLoggingHandler = testParams.processLoggingHandler;
@@ -3158,7 +3146,6 @@ public class PackageManagerService extends IPackageManager.Stub
        mComponentResolver = injector.getComponentResolver();
        mPermissionManager = injector.getPermissionManagerServiceInternal();
        mSettings = injector.getSettings();
        mPermissionManagerService = injector.getPermissionManagerService();
        mIncrementalManager = mInjector.getIncrementalManager();
        mDefaultAppProvider = mInjector.getDefaultAppProvider();
        mLegacyPermissionManager = mInjector.getLegacyPermissionManagerInternal();
@@ -5176,12 +5163,10 @@ public class PackageManagerService extends IPackageManager.Stub
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) {
        try {
        // Because this is accessed via the package manager service AIDL,
        // go through the permission manager service AIDL
            return mPermissionManagerService.getPermissionGroupInfo(groupName, flags);
        } catch (RemoteException ignore) { }
        return null;
        return mContext.getSystemService(PermissionManager.class)
                .getPermissionGroupInfo(groupName, flags);
    }
    @GuardedBy("mLock")
@@ -6213,23 +6198,13 @@ public class PackageManagerService extends IPackageManager.Stub
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public int checkPermission(String permName, String pkgName, int userId) {
        try {
            // Because this is accessed via the package manager service AIDL,
            // go through the permission manager service AIDL
            return mPermissionManagerService.checkPermission(permName, pkgName, userId);
        } catch (RemoteException ignore) { }
        return PackageManager.PERMISSION_DENIED;
        return mPermissionManager.checkPermission(pkgName, permName, userId);
    }
    // NOTE: Can't remove without a major refactor. Keep around for now.
    @Override
    public int checkUidPermission(String permName, int uid) {
        try {
            // Because this is accessed via the package manager service AIDL,
            // go through the permission manager service AIDL
            return mPermissionManagerService.checkUidPermission(permName, uid);
        } catch (RemoteException ignore) { }
        return PackageManager.PERMISSION_DENIED;
        return mPermissionManager.checkUidPermission(uid, permName);
    }
    @Override
@@ -6248,43 +6223,34 @@ public class PackageManagerService extends IPackageManager.Stub
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public boolean addPermission(PermissionInfo info) {
        try {
        // Because this is accessed via the package manager service AIDL,
        // go through the permission manager service AIDL
            return mPermissionManagerService.addPermission(info, false);
        } catch (RemoteException ignore) { }
        return false;
        return mContext.getSystemService(PermissionManager.class).addPermission(info, false);
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public boolean addPermissionAsync(PermissionInfo info) {
        try {
        // Because this is accessed via the package manager service AIDL,
        // go through the permission manager service AIDL
            return mPermissionManagerService.addPermission(info, true);
        } catch (RemoteException ignore) { }
        return false;
        return mContext.getSystemService(PermissionManager.class).addPermission(info, true);
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public void removePermission(String permName) {
        try {
        // Because this is accessed via the package manager service AIDL,
        // go through the permission manager service AIDL
            mPermissionManagerService.removePermission(permName);
        } catch (RemoteException ignore) { }
        mContext.getSystemService(PermissionManager.class).removePermission(permName);
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public void grantRuntimePermission(String packageName, String permName, final int userId) {
        try {
        // Because this is accessed via the package manager service AIDL,
        // go through the permission manager service AIDL
            mPermissionManagerService.grantRuntimePermission(packageName, permName, userId);
        } catch (RemoteException ignore) { }
        mContext.getSystemService(PermissionManager.class)
                .grantRuntimePermission(packageName, permName, UserHandle.of(userId));
    }
    @Override
@@ -22521,7 +22487,7 @@ public class PackageManagerService extends IPackageManager.Stub
    public void onShellCommand(FileDescriptor in, FileDescriptor out,
            FileDescriptor err, String[] args, ShellCallback callback,
            ResultReceiver resultReceiver) {
        (new PackageManagerShellCommand(this, mPermissionManagerService, mContext)).exec(
        (new PackageManagerShellCommand(this, mContext)).exec(
                this, in, out, err, args, callback, resultReceiver);
    }
+15 −14
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.incremental.V4Signature;
import android.os.storage.StorageManager;
import android.permission.IPermissionManager;
import android.permission.PermissionManager;
import android.system.ErrnoException;
import android.system.Os;
import android.text.TextUtils;
@@ -108,6 +108,7 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemConfig;
import com.android.server.pm.PackageManagerShellCommandDataLoader.Metadata;
import com.android.server.pm.permission.LegacyPermissionManagerInternal;

import dalvik.system.DexFile;

@@ -144,7 +145,8 @@ class PackageManagerShellCommand extends ShellCommand {
    private static final String TAG = "PackageManagerShellCommand";

    final IPackageManager mInterface;
    final IPermissionManager mPermissionManager;
    final LegacyPermissionManagerInternal mLegacyPermissionManager;
    final PermissionManager mPermissionManager;
    final Context mContext;
    final private WeakHashMap<String, Resources> mResourceCache =
            new WeakHashMap<String, Resources>();
@@ -153,10 +155,10 @@ class PackageManagerShellCommand extends ShellCommand {
    boolean mComponents;
    int mQueryFlags;

    PackageManagerShellCommand(
            PackageManagerService service, IPermissionManager permissionManager, Context context) {
    PackageManagerShellCommand(PackageManagerService service, Context context) {
        mInterface = service;
        mPermissionManager = permissionManager;
        mLegacyPermissionManager = LocalServices.getService(LegacyPermissionManagerInternal.class);
        mPermissionManager = context.getSystemService(PermissionManager.class);
        mContext = context;
    }

@@ -887,8 +889,7 @@ class PackageManagerShellCommand extends ShellCommand {

    private int runListPermissionGroups() throws RemoteException {
        final PrintWriter pw = getOutPrintWriter();
        final List<PermissionGroupInfo> pgs =
                mPermissionManager.getAllPermissionGroups(0).getList();
        final List<PermissionGroupInfo> pgs = mPermissionManager.getAllPermissionGroups(0);

        final int count = pgs.size();
        for (int p = 0; p < count ; p++) {
@@ -935,7 +936,7 @@ class PackageManagerShellCommand extends ShellCommand {
        final ArrayList<String> groupList = new ArrayList<String>();
        if (groups) {
            final List<PermissionGroupInfo> infos =
                    mPermissionManager.getAllPermissionGroups(0 /*flags*/).getList();
                    mPermissionManager.getAllPermissionGroups(0 /*flags*/);
            final int count = infos.size();
            for (int i = 0; i < count; i++) {
                groupList.add(infos.get(i).name);
@@ -2297,18 +2298,18 @@ class PackageManagerShellCommand extends ShellCommand {
            getErrPrintWriter().println("Error: no permission specified");
            return 1;
        }
        final int translatedUserId =
                translateUserId(userId, UserHandle.USER_NULL, "runGrantRevokePermission");
        final UserHandle translatedUser = UserHandle.of(translateUserId(userId,
                UserHandle.USER_NULL, "runGrantRevokePermission"));
        if (grant) {
            mPermissionManager.grantRuntimePermission(pkg, perm, translatedUserId);
            mPermissionManager.grantRuntimePermission(pkg, perm, translatedUser);
        } else {
            mPermissionManager.revokeRuntimePermission(pkg, perm, translatedUserId, null);
            mPermissionManager.revokeRuntimePermission(pkg, perm, translatedUser, null);
        }
        return 0;
    }

    private int runResetPermissions() throws RemoteException {
        mPermissionManager.resetRuntimePermissions();
        mLegacyPermissionManager.resetRuntimePermissions();
        return 0;
    }

@@ -3483,7 +3484,7 @@ class PackageManagerShellCommand extends ShellCommand {
                prefix = "  ";
            }
            List<PermissionInfo> ps = mPermissionManager
                    .queryPermissionsByGroup(groupList.get(i), 0 /*flags*/).getList();
                    .queryPermissionsByGroup(groupList.get(i), 0 /*flags*/);
            final int count = ps.size();
            boolean first = true;
            for (int p = 0 ; p < count ; p++) {
+5 −0
Original line number Diff line number Diff line
@@ -23,6 +23,11 @@ import android.annotation.UserIdInt;
 * The internal interface for {@link LegacyPermissionManagerService}.
 */
public interface LegacyPermissionManagerInternal {
    /**
     * Reset the runtime permission state for all users and packages.
     */
    void resetRuntimePermissions();

    /**
     * Sets the dialer application packages provider.
     * @param provider The provider.
Loading