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

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

Merge "Performance optimizations in generatePackageInfo" into nyc-mr1-dev

parents 7524b136 5e57a20c
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -3217,10 +3217,11 @@ public class PackageManagerService extends IPackageManager.Stub {
        final PermissionsState permissionsState = ps.getPermissionsState();
        // Compute GIDs only if requested
        final int[] gids = (flags & PackageManager.GET_GIDS) != 0
                ? permissionsState.computeGids(userId) : EMPTY_INT_ARRAY;
        // TODO b/29879962 Calculate granted permissions only if needed in generatePackageInfo
        final Set<String> permissions = permissionsState.getPermissions(userId);
        final int[] gids = (flags & PackageManager.GET_GIDS) == 0
                ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId);
        // Compute granted permissions only if package has requested permissions
        final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
                ? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
        final PackageUserState state = ps.readUserState(userId);
        return PackageParser.generatePackageInfo(p, gids, flags,
+2 −1
Original line number Diff line number Diff line
@@ -274,7 +274,7 @@ public final class PermissionsState {
            return Collections.emptySet();
        }

        Set<String> permissions = new ArraySet<>();
        Set<String> permissions = new ArraySet<>(mPermissions.size());

        final int permissionCount = mPermissions.size();
        for (int i = 0; i < permissionCount; i++) {
@@ -282,6 +282,7 @@ public final class PermissionsState {

            if (hasInstallPermission(permission)) {
                permissions.add(permission);
                continue;
            }

            if (userId != UserHandle.USER_ALL) {