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

Commit 06f309c1 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge "Add annotations and finals to PermissionGroupInfo"

parents 244022a5 0635dab0
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -11825,15 +11825,15 @@ package android.content.pm {
  }
  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
    ctor public PermissionGroupInfo();
    ctor public PermissionGroupInfo(android.content.pm.PermissionGroupInfo);
    ctor @Deprecated public PermissionGroupInfo();
    ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo);
    method public int describeContents();
    method public CharSequence loadDescription(android.content.pm.PackageManager);
    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR;
    field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
    field public int descriptionRes;
    field @StringRes public int descriptionRes;
    field public int flags;
    field public CharSequence nonLocalizedDescription;
    field @Nullable public CharSequence nonLocalizedDescription;
    field public int priority;
  }
+3 −3
Original line number Diff line number Diff line
@@ -1709,9 +1709,9 @@ package android.content.pm {
  }
  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
    field @StringRes public int backgroundRequestDetailResourceId;
    field @StringRes public int backgroundRequestResourceId;
    field @StringRes public int requestDetailResourceId;
    field @StringRes public final int backgroundRequestDetailResourceId;
    field @StringRes public final int backgroundRequestResourceId;
    field @StringRes public final int requestDetailResourceId;
    field @StringRes public int requestRes;
  }
+20 −13
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityTaskManager;
@@ -3260,10 +3261,21 @@ public class PackageParser {
    private boolean parsePermissionGroup(Package owner, int flags, Resources res,
            XmlResourceParser parser, String[] outError)
            throws XmlPullParserException, IOException {
        PermissionGroup perm = new PermissionGroup(owner);

        TypedArray sa = res.obtainAttributes(parser,
                com.android.internal.R.styleable.AndroidManifestPermissionGroup);

        int requestDetailResourceId = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0);
        int backgroundRequestResourceId = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest,
                0);
        int backgroundRequestDetailResourceId = sa.getResourceId(
                com.android.internal.R.styleable
                        .AndroidManifestPermissionGroup_backgroundRequestDetail, 0);

        PermissionGroup perm = new PermissionGroup(owner, requestDetailResourceId,
                backgroundRequestResourceId, backgroundRequestDetailResourceId);

        if (!parsePackageItemInfo(owner, perm.info, outError,
                "<permission-group>", sa, true /*nameRequired*/,
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_name,
@@ -3282,14 +3294,6 @@ public class PackageParser {
                0);
        perm.info.requestRes = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_request, 0);
        perm.info.requestDetailResourceId = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0);
        perm.info.backgroundRequestResourceId = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest,
                0);
        perm.info.backgroundRequestDetailResourceId = sa.getResourceId(
                com.android.internal.R.styleable
                        .AndroidManifestPermissionGroup_backgroundRequestDetail, 0);
        perm.info.flags = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0);
        perm.info.priority = sa.getInt(
@@ -7676,9 +7680,12 @@ public class PackageParser {
        @UnsupportedAppUsage
        public final PermissionGroupInfo info;

        public PermissionGroup(Package _owner) {
            super(_owner);
            info = new PermissionGroupInfo();
        public PermissionGroup(Package owner, @StringRes int requestDetailResourceId,
                @StringRes int backgroundRequestResourceId,
                @StringRes int backgroundRequestDetailResourceId) {
            super(owner);
            info = new PermissionGroupInfo(requestDetailResourceId, backgroundRequestResourceId,
                    backgroundRequestDetailResourceId);
        }

        public PermissionGroup(Package _owner, PermissionGroupInfo _info) {
+44 −9
Original line number Diff line number Diff line
@@ -16,12 +16,20 @@

package android.content.pm;

import static android.content.res.Resources.ID_NULL;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Information you can retrieve about a particular security permission
 * group known to the system.  This corresponds to information collected from the
@@ -33,7 +41,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * permission's description.  From the "description" attribute or,
     * if not set, 0.
     */
    public int descriptionRes;
    public @StringRes int descriptionRes;

    /**
     * A string resource identifier (in the package's resources) used to request the permissions.
@@ -54,7 +62,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * @hide
     */
    @SystemApi
    public @StringRes int requestDetailResourceId;
    public final @StringRes int requestDetailResourceId;

    /**
     * A string resource identifier (in the package's resources) used when requesting background
@@ -66,7 +74,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * @hide
     */
    @SystemApi
    public @StringRes int backgroundRequestResourceId;
    public final @StringRes int backgroundRequestResourceId;

    /**
     * A string resource identifier (in the package's resources) used as subtitle when requesting
@@ -78,7 +86,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * @hide
     */
    @SystemApi
    public @StringRes int backgroundRequestDetailResourceId;
    public final @StringRes int backgroundRequestDetailResourceId;

    /**
     * The description string provided in the AndroidManifest file, if any.  You
@@ -86,7 +94,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * is in a resource.  You probably want
     * {@link PermissionInfo#loadDescription} instead.
     */
    public CharSequence nonLocalizedDescription;
    public @Nullable CharSequence nonLocalizedDescription;

    /**
     * Flag for {@link #flags}, corresponding to <code>personalInfo</code>
@@ -94,21 +102,48 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     */
    public static final int FLAG_PERSONAL_INFO = 1<<0;

    /** @hide */
    @IntDef(flag = true, prefix = { "FLAG_" }, value = {
            FLAG_PERSONAL_INFO,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface Flags {}

    /**
     * Additional flags about this group as given by
     * {@link android.R.attr#permissionGroupFlags}.
     */
    public int flags;
    public @Flags int flags;

    /**
     * Prioritization of this group, for visually sorting with other groups.
     */
    public int priority;

    /**
     * @hide
     */
    public PermissionGroupInfo(@StringRes int requestDetailResourceId,
            @StringRes int backgroundRequestResourceId,
            @StringRes int backgroundRequestDetailResourceId) {
        this.requestDetailResourceId = requestDetailResourceId;
        this.backgroundRequestResourceId = backgroundRequestResourceId;
        this.backgroundRequestDetailResourceId = backgroundRequestDetailResourceId;
    }

    /**
     * @deprecated Should only be created by the system.
     */
    @Deprecated
    public PermissionGroupInfo() {
        this(ID_NULL, ID_NULL, ID_NULL);
    }

    public PermissionGroupInfo(PermissionGroupInfo orig) {
    /**
     * @deprecated Should only be created by the system.
     */
    @Deprecated
    public PermissionGroupInfo(@NonNull PermissionGroupInfo orig) {
        super(orig);
        descriptionRes = orig.descriptionRes;
        requestRes = orig.requestRes;
@@ -131,7 +166,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
     * @return Returns a CharSequence containing the permission's description.
     * If there is no description, null is returned.
     */
    public CharSequence loadDescription(PackageManager pm) {
    public @Nullable CharSequence loadDescription(@NonNull PackageManager pm) {
        if (nonLocalizedDescription != null) {
            return nonLocalizedDescription;
        }
@@ -166,7 +201,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable {
        dest.writeInt(priority);
    }

    public static final @android.annotation.NonNull Creator<PermissionGroupInfo> CREATOR =
    public static final @NonNull Creator<PermissionGroupInfo> CREATOR =
            new Creator<PermissionGroupInfo>() {
        public PermissionGroupInfo createFromParcel(Parcel source) {
            return new PermissionGroupInfo(source);
+3 −1
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.server.pm;

import static android.content.res.Resources.ID_NULL;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
@@ -454,7 +456,7 @@ public class PackageParserTest {
        pkg.applicationInfo = new ApplicationInfo();

        pkg.permissions.add(new PackageParser.Permission(pkg));
        pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg));
        pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg, ID_NULL, ID_NULL, ID_NULL));

        final PackageParser.ParseComponentArgs dummy = new PackageParser.ParseComponentArgs(
                pkg, new String[1], 0, 0, 0, 0, 0, 0, null, 0, 0, 0);