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

Commit 23603068 authored by Hai Zhang's avatar Hai Zhang Committed by Android (Google) Code Review
Browse files

Merge "Make AndroidPackage.(requested|implicit)Permissions a Set."

parents 5aa5e6c1 37f5bb9e
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -692,7 +692,7 @@ final class InstallPackageHelper {
                    if ((installFlags & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS)
                            != 0) {
                        permissionParamsBuilder.setAllowlistedRestrictedPermissions(
                                pkgSetting.getPkg().getRequestedPermissions());
                                new ArrayList<>(pkgSetting.getPkg().getRequestedPermissions()));
                    }
                    mPm.mPermissionManager.onPackageInstalled(pkgSetting.getPkg(),
                            Process.INVALID_UID /* previousAppId */,
@@ -2314,9 +2314,7 @@ final class InstallPackageHelper {
                        & PackageManager.INSTALL_GRANT_ALL_REQUESTED_PERMISSIONS) != 0;
                if (grantRequestedPermissions) {
                    var permissionStates = new ArrayMap<String, Integer>();
                    var requestedPermissions = pkg.getRequestedPermissions();
                    for (int index = 0; index < requestedPermissions.size(); index++) {
                        var permissionName = requestedPermissions.get(index);
                    for (var permissionName : pkg.getRequestedPermissions()) {
                        permissionStates.put(permissionName,
                                PackageInstaller.SessionParams.PERMISSION_STATE_GRANTED);
                    }
@@ -2332,7 +2330,8 @@ final class InstallPackageHelper {
                        (installRequest.getInstallFlags()
                                & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS) != 0;
                final List<String> allowlistedRestrictedPermissions =
                        allowlistAllRestrictedPermissions ? pkg.getRequestedPermissions()
                        allowlistAllRestrictedPermissions
                                ? new ArrayList<>(pkg.getRequestedPermissions())
                                : installRequest.getAllowlistedRestrictedPermissions();
                if (allowlistedRestrictedPermissions != null) {
                    permissionParamsBuilder.setAllowlistedRestrictedPermissions(
+2 −3
Original line number Diff line number Diff line
@@ -5021,10 +5021,9 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
        if ((permissionNames != null || dumpAll) && pkg != null
                && pkg.getRequestedPermissions() != null
                && pkg.getRequestedPermissions().size() > 0) {
            final List<String> perms = pkg.getRequestedPermissions();
            final Set<String> perms = pkg.getRequestedPermissions();
            pw.print(prefix); pw.println("  requested permissions:");
            for (int i=0; i<perms.size(); i++) {
                String perm = perms.get(i);
            for (String perm : perms) {
                if (permissionNames != null
                        && !permissionNames.contains(perm)) {
                    continue;
+12 −12
Original line number Diff line number Diff line
@@ -160,8 +160,8 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
     */
    @NonNull
    @Deprecated
    @DataClass.ParcelWith(Parcelling.BuiltIn.ForInternedStringList.class)
    protected List<String> requestedPermissions = emptyList();
    @DataClass.ParcelWith(Parcelling.BuiltIn.ForInternedStringSet.class)
    protected Set<String> requestedPermissions = emptySet();
    @NonNull
    @DataClass.ParcelWith(Parcelling.BuiltIn.ForInternedStringList.class)
    protected List<String> protectedBroadcasts = emptyList();
@@ -277,8 +277,8 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
    @NonNull
    private List<ParsedUsesPermission> usesPermissions = emptyList();
    @NonNull
    @DataClass.ParcelWith(Parcelling.BuiltIn.ForInternedStringList.class)
    private List<String> implicitPermissions = emptyList();
    @DataClass.ParcelWith(Parcelling.BuiltIn.ForInternedStringSet.class)
    private Set<String> implicitPermissions = emptySet();
    @NonNull
    private Set<String> upgradeKeySets = emptySet();
    @NonNull
@@ -967,7 +967,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,

    @NonNull
    @Override
    public List<String> getImplicitPermissions() {
    public Set<String> getImplicitPermissions() {
        return implicitPermissions;
    }

@@ -1225,7 +1225,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
    @NonNull
    @Override
    @Deprecated
    public List<String> getRequestedPermissions() {
    public Set<String> getRequestedPermissions() {
        return requestedPermissions;
    }

@@ -2729,7 +2729,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
        usesOptionalNativeLibraries = Collections.unmodifiableList(usesOptionalNativeLibraries);
        originalPackages = Collections.unmodifiableList(originalPackages);
        adoptPermissions = Collections.unmodifiableList(adoptPermissions);
        requestedPermissions = Collections.unmodifiableList(requestedPermissions);
        requestedPermissions = Collections.unmodifiableSet(requestedPermissions);
        protectedBroadcasts = Collections.unmodifiableList(protectedBroadcasts);
        apexSystemServices = Collections.unmodifiableList(apexSystemServices);

@@ -2750,7 +2750,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
        featureGroups = Collections.unmodifiableList(featureGroups);
        usesPermissions = Collections.unmodifiableList(usesPermissions);
        usesSdkLibraries = Collections.unmodifiableList(usesSdkLibraries);
        implicitPermissions = Collections.unmodifiableList(implicitPermissions);
        implicitPermissions = Collections.unmodifiableSet(implicitPermissions);
        upgradeKeySets = Collections.unmodifiableSet(upgradeKeySets);
        keySetMapping = Collections.unmodifiableMap(keySetMapping);
        attributions = Collections.unmodifiableList(attributions);
@@ -3121,9 +3121,9 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
        dest.writeByteArray(this.restrictUpdateHash);
        dest.writeStringList(this.originalPackages);
        sForInternedStringList.parcel(this.adoptPermissions, dest, flags);
        sForInternedStringList.parcel(this.requestedPermissions, dest, flags);
        sForInternedStringSet.parcel(this.requestedPermissions, dest, flags);
        ParsingUtils.writeParcelableList(dest, this.usesPermissions);
        sForInternedStringList.parcel(this.implicitPermissions, dest, flags);
        sForInternedStringSet.parcel(this.implicitPermissions, dest, flags);
        sForStringSet.parcel(this.upgradeKeySets, dest, flags);
        ParsingPackageUtils.writeKeySetMapping(dest, this.keySetMapping);
        sForInternedStringList.parcel(this.protectedBroadcasts, dest, flags);
@@ -3273,10 +3273,10 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
        this.restrictUpdateHash = in.createByteArray();
        this.originalPackages = in.createStringArrayList();
        this.adoptPermissions = sForInternedStringList.unparcel(in);
        this.requestedPermissions = sForInternedStringList.unparcel(in);
        this.requestedPermissions = sForInternedStringSet.unparcel(in);
        this.usesPermissions = ParsingUtils.createTypedInterfaceList(in,
                ParsedUsesPermissionImpl.CREATOR);
        this.implicitPermissions = sForInternedStringList.unparcel(in);
        this.implicitPermissions = sForInternedStringSet.unparcel(in);
        this.upgradeKeySets = sForStringSet.unparcel(in);
        this.keySetMapping = ParsingPackageUtils.readKeySetMapping(in);
        this.protectedBroadcasts = sForInternedStringList.unparcel(in);
+10 −27
Original line number Diff line number Diff line
@@ -1119,9 +1119,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt

            ArrayList<String> allowlistedPermissions = null;

            final int permissionCount = ArrayUtils.size(pkg.getRequestedPermissions());
            for (int i = 0; i < permissionCount; i++) {
                final String permissionName = pkg.getRequestedPermissions().get(i);
            for (final String permissionName : pkg.getRequestedPermissions()) {
                final int currentFlags =
                        uidState.getPermissionFlags(permissionName);
                if ((currentFlags & queryFlags) != 0) {
@@ -1748,10 +1746,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
                | FLAG_PERMISSION_POLICY_FIXED;

        final String packageName = pkg.getPackageName();
        final int permissionCount = ArrayUtils.size(pkg.getRequestedPermissions());
        for (int i = 0; i < permissionCount; i++) {
            final String permName = pkg.getRequestedPermissions().get(i);

        for (final String permName : pkg.getRequestedPermissions()) {
            final boolean isRuntimePermission;
            synchronized (mLock) {
                final Permission permission = mRegistry.getPermission(permName);
@@ -2047,11 +2042,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt

        final int callingUid = Binder.getCallingUid();
        for (int userId: getAllUserIds()) {
            int numRequestedPermissions = newPackage.getRequestedPermissions().size();
            for (int i = 0; i < numRequestedPermissions; i++) {
                PermissionInfo permInfo = getPermissionInfo(
                        newPackage.getRequestedPermissions().get(i),
                        0, newPackage.getPackageName());
            for (final String permName : newPackage.getRequestedPermissions()) {
                PermissionInfo permInfo = getPermissionInfo(permName, 0,
                        newPackage.getPackageName());
                if (permInfo == null) {
                    continue;
                }
@@ -2383,10 +2376,8 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
                if (DEBUG_REMOVE) Log.d(TAG, "  Permissions: " + r);
            }

            n = pkg.getRequestedPermissions().size();
            r = null;
            for (int i = 0; i < n; i++) {
                final String permissionName = pkg.getRequestedPermissions().get(i);
            for (final String permissionName : pkg.getRequestedPermissions()) {
                final Permission permission = mRegistry.getPermission(permissionName);
                if (permission != null && permission.isAppOp()) {
                    mRegistry.removeAppOpPermissionPackage(permissionName,
@@ -2504,11 +2495,8 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
        ArraySet<String> shouldGrantSignaturePermission = null;
        ArraySet<String> shouldGrantInternalPermission = null;
        ArraySet<String> shouldGrantPrivilegedPermissionIfWasGranted = new ArraySet<>();
        final List<String> requestedPermissions = pkg.getRequestedPermissions();
        final int requestedPermissionsSize = requestedPermissions.size();
        for (int i = 0; i < requestedPermissionsSize; i++) {
            final String permissionName = pkg.getRequestedPermissions().get(i);

        final Set<String> requestedPermissions = pkg.getRequestedPermissions();
        for (final String permissionName : pkg.getRequestedPermissions()) {
            final Permission permission;
            synchronized (mLock) {
                permission = mRegistry.getPermission(permissionName);
@@ -2639,9 +2627,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
                ArraySet<String> newImplicitPermissions = new ArraySet<>();
                final String friendlyName = pkg.getPackageName() + "(" + pkg.getUid() + ")";

                for (int i = 0; i < requestedPermissionsSize; i++) {
                    final String permName = requestedPermissions.get(i);

                for (final String permName : requestedPermissions) {
                    final Permission bp = mRegistry.getPermission(permName);
                    final boolean appSupportsRuntimePermissions =
                            pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M;
@@ -3635,12 +3621,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
            @UserIdInt int userId) {
        ArraySet<String> oldGrantedRestrictedPermissions = null;
        boolean updatePermissions = false;
        final int permissionCount = pkg.getRequestedPermissions().size();
        final int myUid = Process.myUid();

        for (int j = 0; j < permissionCount; j++) {
            final String permissionName = pkg.getRequestedPermissions().get(j);

        for (final String permissionName : pkg.getRequestedPermissions()) {
            final boolean isGranted;
            synchronized (mLock) {
                final Permission bp = mRegistry.getPermission(permissionName);
+2 −2
Original line number Diff line number Diff line
@@ -775,7 +775,7 @@ public interface AndroidPackage {
     * @hide
     */
    @NonNull
    List<String> getImplicitPermissions();
    Set<String> getImplicitPermissions();

    /**
     * @see ApplicationInfo#installLocation
@@ -1123,7 +1123,7 @@ public interface AndroidPackage {
     * @hide
     */
    @NonNull
    List<String> getRequestedPermissions();
    Set<String> getRequestedPermissions();

    /**
     * Whether or not the app requested explicitly resizeable Activities. Null value means nothing
Loading