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

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

Merge "Split package and permission lock."

parents c6bc5fd4 37fb8182
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2737,7 +2737,7 @@ public class PackageManagerService extends IPackageManager.Stub
                context, lock, installer, installLock, new PackageAbiHelperImpl(),
                backgroundHandler,
                (i, pm) -> new ComponentResolver(i.getUserManagerService(), pm.mPmInternal, lock),
                (i, pm) -> PermissionManagerService.create(context, lock),
                (i, pm) -> PermissionManagerService.create(context),
                (i, pm) -> new UserManagerService(context, pm,
                        new UserDataPreparer(installer, installLock, context, onlyCore),
                        lock),
+7 −11
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
    }

    /** Lock to protect internal data access */
    private final Object mLock;
    private final Object mLock = new Object();

    /** Internal connection to the package manager */
    private final PackageManagerInternal mPackageManagerInt;
@@ -365,14 +365,12 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        }
    };

    PermissionManagerService(Context context,
            @NonNull Object externalLock) {
        this(context, externalLock, new Injector(context));
    PermissionManagerService(@NonNull Context context) {
        this(context, new Injector(context));
    }

    @VisibleForTesting
    PermissionManagerService(Context context, @NonNull Object externalLock,
            @NonNull Injector injector) {
    PermissionManagerService(@NonNull Context context, @NonNull Injector injector) {
        mInjector = injector;
        // The package info cache is the cache for package and permission information.
        // Disable the package info and package permission caches locally but leave the
@@ -381,7 +379,6 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        mInjector.disablePackageNamePermissionCache();

        mContext = context;
        mLock = externalLock;
        mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class);
        mUserManagerInt = LocalServices.getService(UserManagerInternal.class);
        mAppOpsManager = context.getSystemService(AppOpsManager.class);
@@ -440,8 +437,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
     * NOTE: The external lock is temporary and should be removed. This needs to be a
     * lock created by the permission manager itself.
     */
    public static PermissionManagerServiceInternal create(Context context,
            @NonNull Object externalLock) {
    @NonNull
    public static PermissionManagerServiceInternal create(@NonNull Context context) {
        final PermissionManagerServiceInternal permMgrInt =
                LocalServices.getService(PermissionManagerServiceInternal.class);
        if (permMgrInt != null) {
@@ -450,8 +447,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        PermissionManagerService permissionService =
                (PermissionManagerService) ServiceManager.getService("permissionmgr");
        if (permissionService == null) {
            permissionService =
                    new PermissionManagerService(context, externalLock);
            permissionService = new PermissionManagerService(context);
            ServiceManager.addService("permissionmgr", permissionService);
        }
        return LocalServices.getService(PermissionManagerServiceInternal.class);
+1 −2
Original line number Diff line number Diff line
@@ -69,8 +69,7 @@ public class PermissionManagerServiceTest {
        MockitoAnnotations.initMocks(this);

        mContext = InstrumentationRegistry.getContext();
        Object lock = new Object();
        mPermissionManagerService = new PermissionManagerService(mContext, lock, mInjector);
        mPermissionManagerService = new PermissionManagerService(mContext, mInjector);
    }

    @After