Merge "Add annotations and finals to PermissionGroupInfo"
This commit is contained in:
committed by
Android (Google) Code Review
commit
06f309c1c0
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
public PermissionGroupInfo() {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public PermissionGroupInfo(@StringRes int requestDetailResourceId,
|
||||
@StringRes int backgroundRequestResourceId,
|
||||
@StringRes int backgroundRequestDetailResourceId) {
|
||||
this.requestDetailResourceId = requestDetailResourceId;
|
||||
this.backgroundRequestResourceId = backgroundRequestResourceId;
|
||||
this.backgroundRequestDetailResourceId = backgroundRequestDetailResourceId;
|
||||
}
|
||||
|
||||
public PermissionGroupInfo(PermissionGroupInfo orig) {
|
||||
/**
|
||||
* @deprecated Should only be created by the system.
|
||||
*/
|
||||
@Deprecated
|
||||
public PermissionGroupInfo() {
|
||||
this(ID_NULL, ID_NULL, ID_NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user