diff options
| -rw-r--r-- | core/java/android/content/pm/parsing/ParsingPackageImpl.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java index 60aac76fa8a5..72c9879c9360 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java +++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java @@ -227,6 +227,14 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { @NonNull @DataClass.ParcelWith(ForInternedStringList.class) protected List<String> adoptPermissions = emptyList(); + /** + * @deprecated consider migrating to {@link #getUsesPermissions} which has + * more parsed details, such as flags + */ + @NonNull + @Deprecated + @DataClass.ParcelWith(ForInternedStringList.class) + protected List<String> requestedPermissions = emptyList(); @NonNull private List<ParsedUsesPermission> usesPermissions = emptyList(); @@ -701,6 +709,11 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { @Override public ParsingPackageImpl addUsesPermission(ParsedUsesPermission permission) { this.usesPermissions = CollectionUtils.add(this.usesPermissions, permission); + + // Continue populating legacy data structures to avoid performance + // issues until all that code can be migrated + this.requestedPermissions = CollectionUtils.add(this.requestedPermissions, permission.name); + return this; } @@ -1142,6 +1155,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { dest.writeByteArray(this.restrictUpdateHash); dest.writeStringList(this.originalPackages); sForInternedStringList.parcel(this.adoptPermissions, dest, flags); + sForInternedStringList.parcel(this.requestedPermissions, dest, flags); dest.writeTypedList(this.usesPermissions); sForInternedStringList.parcel(this.implicitPermissions, dest, flags); sForStringSet.parcel(this.upgradeKeySets, dest, flags); @@ -1264,6 +1278,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { this.restrictUpdateHash = in.createByteArray(); this.originalPackages = in.createStringArrayList(); this.adoptPermissions = sForInternedStringList.unparcel(in); + this.requestedPermissions = sForInternedStringList.unparcel(in); this.usesPermissions = in.createTypedArrayList(ParsedUsesPermission.CREATOR); this.implicitPermissions = sForInternedStringList.unparcel(in); this.upgradeKeySets = sForStringSet.unparcel(in); @@ -1558,15 +1573,14 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { return adoptPermissions; } + /** + * @deprecated consider migrating to {@link #getUsesPermissions} which has + * more parsed details, such as flags + */ @NonNull @Override + @Deprecated public List<String> getRequestedPermissions() { - final List<ParsedUsesPermission> usesPermissions = getUsesPermissions(); - final int size = usesPermissions.size(); - final List<String> requestedPermissions = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - requestedPermissions.add(usesPermissions.get(i).name); - } return requestedPermissions; } |