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

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

Merge "Refactor PermissionsState to be a data class for migration."

parents cc848e93 36744c71
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -143,6 +143,17 @@ public class IntArray implements Cloneable {
        mSize += count;
    }

    /**
     * Adds the values in the specified array to this array.
     */
    public void addAll(int[] values) {
        final int count = values.length;
        ensureCapacity(count);

        System.arraycopy(values, 0, mValues, mSize, count);
        mSize += count;
    }

    /**
     * Ensures capacity to append at least <code>count</code> values.
     */
+7 −10
Original line number Diff line number Diff line
@@ -1849,7 +1849,6 @@ public class PackageManagerService extends IPackageManager.Stub
                    Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
                    synchronized (mLock) {
                        removeMessages(WRITE_PACKAGE_LIST);
                        mPermissionManager.writeStateToPackageSettingsTEMP();
                        mSettings.writePackageListLPr(msg.arg1);
                    }
                    Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
@@ -2686,7 +2685,8 @@ public class PackageManagerService extends IPackageManager.Stub
                (i, pm) ->
                        new Settings(Environment.getDataDirectory(),
                                i.getPermissionManagerServiceInternal().getPermissionSettings(),
                                RuntimePermissionsPersistence.createInstance(), lock),
                                RuntimePermissionsPersistence.createInstance(),
                                i.getPermissionManagerServiceInternal(), lock),
                new Injector.LocalServicesProducer<>(ActivityTaskManagerInternal.class),
                new Injector.LocalServicesProducer<>(ActivityManagerInternal.class),
                new Injector.LocalServicesProducer<>(DeviceIdleInternal.class),
@@ -4486,8 +4486,8 @@ public class PackageManagerService extends IPackageManager.Stub
        AndroidPackage p = ps.pkg;
        if (p != null) {
            // Compute GIDs only if requested
            final int[] gids = (flags & PackageManager.GET_GIDS) == 0
                    ? EMPTY_INT_ARRAY : mPermissionManager.getPackageGids(ps.name, userId);
            final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
                    : mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId));
            // Compute granted permissions only if package has requested permissions
            final Set<String> permissions = ArrayUtils.isEmpty(p.getRequestedPermissions())
                    ? Collections.emptySet()
@@ -4962,13 +4962,13 @@ public class PackageManagerService extends IPackageManager.Stub
                }
                // TODO: Shouldn't this be checking for package installed state for userId and
                // return null?
                return mPermissionManager.getPackageGids(packageName, userId);
                return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId));
            }
            if ((flags & MATCH_KNOWN_PACKAGES) != 0) {
                final PackageSetting ps = mSettings.mPackages.get(packageName);
                if (ps != null && ps.isMatch(flags)
                        && !shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    return mPermissionManager.getPackageGids(packageName, userId);
                    return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId));
                }
            }
        }
@@ -18983,7 +18983,7 @@ public class PackageManagerService extends IPackageManager.Stub
                    }
                    if ((deletedPs.sharedUser == null || deletedPs.sharedUser.packages.size() == 0)
                            && !isUpdatedSystemApp(deletedPs)) {
                        mPermissionManager.removePermissionsStateTEMP(removedAppId);
                        mPermissionManager.removeAppIdStateTEMP(removedAppId);
                    }
                    mPermissionManager.updatePermissions(deletedPs.name, null);
                    if (deletedPs.sharedUser != null) {
@@ -21854,8 +21854,6 @@ public class PackageManagerService extends IPackageManager.Stub
    protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return;
        mPermissionManager.writeStateToPackageSettingsTEMP();
        DumpState dumpState = new DumpState();
        boolean fullPreferred = false;
        boolean checkin = false;
@@ -23734,7 +23732,6 @@ public class PackageManagerService extends IPackageManager.Stub
            mDirtyUsers.remove(userId);
            mUserNeedsBadging.delete(userId);
            mPermissionManager.onUserRemoved(userId);
            mPermissionManager.writeStateToPackageSettingsTEMP();
            mSettings.removeUserLPw(userId);
            mPendingBroadcasts.remove(userId);
            mInstantAppRegistry.onUserRemovedLPw(userId);
+2 −2
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.util.proto.ProtoOutputStream;

import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.permission.PermissionsState;
import com.android.server.pm.permission.AppIdPermissionState;
import com.android.server.pm.pkg.PackageStateUnserialized;

import java.io.File;
@@ -215,7 +215,7 @@ public class PackageSetting extends PackageSettingBase {
    }

    @Override
    public PermissionsState getPermissionsState() {
    public AppIdPermissionState getPermissionsState() {
        return (sharedUser != null)
                ? sharedUser.getPermissionsState()
                : super.getPermissionsState();
+5 −5
Original line number Diff line number Diff line
@@ -19,23 +19,23 @@ package com.android.server.pm;
import android.content.pm.ApplicationInfo;

import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.permission.PermissionsState;
import com.android.server.pm.permission.AppIdPermissionState;

@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public abstract class SettingBase {
    int pkgFlags;
    int pkgPrivateFlags;

    protected final PermissionsState mPermissionsState;
    protected final AppIdPermissionState mPermissionsState;

    SettingBase(int pkgFlags, int pkgPrivateFlags) {
        setFlags(pkgFlags);
        setPrivateFlags(pkgPrivateFlags);
        mPermissionsState = new PermissionsState();
        mPermissionsState = new AppIdPermissionState();
    }

    SettingBase(SettingBase orig) {
        mPermissionsState = new PermissionsState();
        mPermissionsState = new AppIdPermissionState();
        doCopy(orig);
    }

@@ -49,7 +49,7 @@ public abstract class SettingBase {
        mPermissionsState.copyFrom(orig.mPermissionsState);
    }

    public PermissionsState getPermissionsState() {
    public AppIdPermissionState getPermissionsState() {
        return mPermissionsState;
    }

+103 −127

File changed.

Preview size limit exceeded, changes collapsed.

Loading