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

Commit 1189c0f9 authored by Chad Brubaker's avatar Chad Brubaker Committed by Android (Google) Code Review
Browse files

Merge "Remove usage info"

parents 509d87c2 e2107314
Loading
Loading
Loading
Loading
+7 −33
Original line number Diff line number Diff line
@@ -224,6 +224,11 @@ package android {
  public static final class R.attr {
    ctor public R.attr();
    field public static final int __removed1 = 16844185; // 0x1010599
    field public static final int __removed2 = 16844186; // 0x101059a
    field public static final int __removed3 = 16844187; // 0x101059b
    field public static final int __removed4 = 16844188; // 0x101059c
    field public static final int __removed5 = 16844189; // 0x101059d
    field public static final int absListViewStyle = 16842858; // 0x101006a
    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -484,10 +489,6 @@ package android {
    field public static final int dashGap = 16843175; // 0x10101a7
    field public static final int dashWidth = 16843174; // 0x10101a6
    field public static final int data = 16842798; // 0x101002e
    field public static final int dataRetentionTime = 16844189; // 0x101059d
    field public static final int dataSentOffDevice = 16844186; // 0x101059a
    field public static final int dataSharedWithThirdParty = 16844187; // 0x101059b
    field public static final int dataUsedForMonetization = 16844188; // 0x101059c
    field public static final int datePickerDialogTheme = 16843948; // 0x10104ac
    field public static final int datePickerMode = 16843955; // 0x10104b3
    field public static final int datePickerStyle = 16843612; // 0x101035c
@@ -1508,7 +1509,6 @@ package android {
    field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344
    field public static final int unselectedAlpha = 16843278; // 0x101020e
    field public static final int updatePeriodMillis = 16843344; // 0x1010250
    field public static final int usageInfoRequired = 16844185; // 0x1010599
    field public static final int use32bitAbi = 16844053; // 0x1010515
    field public static final int useAppZygote = 16844184; // 0x1010598
    field public static final int useDefaultMargins = 16843641; // 0x1010379
@@ -10265,7 +10265,6 @@ package android.content {
    field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
    field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
    field public static final String ACTION_PASTE = "android.intent.action.PASTE";
    field public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS";
    field public static final String ACTION_PICK = "android.intent.action.PICK";
    field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
    field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
@@ -10391,7 +10390,6 @@ package android.content {
    field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
    field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
    field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
    field public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS";
    field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
    field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
    field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
@@ -11356,8 +11354,8 @@ package android.content.pm {
    field public android.content.pm.ProviderInfo[] providers;
    field public android.content.pm.ActivityInfo[] receivers;
    field public android.content.pm.FeatureInfo[] reqFeatures;
    field @Deprecated public String[] requestedPermissions;
    field @Deprecated public int[] requestedPermissionsFlags;
    field public String[] requestedPermissions;
    field public int[] requestedPermissionsFlags;
    field public android.content.pm.ServiceInfo[] services;
    field public String sharedUserId;
    field public int sharedUserLabel;
@@ -11365,7 +11363,6 @@ package android.content.pm {
    field public android.content.pm.SigningInfo signingInfo;
    field public String[] splitNames;
    field public int[] splitRevisionCodes;
    field public android.content.pm.UsesPermissionInfo[] usesPermissions;
    field @Deprecated public int versionCode;
    field public String versionName;
  }
@@ -11865,7 +11862,6 @@ package android.content.pm {
    field public String group;
    field public CharSequence nonLocalizedDescription;
    field @Deprecated public int protectionLevel;
    field public boolean usageInfoRequired;
  }
  public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
@@ -12057,28 +12053,6 @@ package android.content.pm {
    field public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR;
  }
  public final class UsesPermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
    method public int describeContents();
    method public int getDataRetention();
    method public int getDataRetentionWeeks();
    method public int getDataSentOffDevice();
    method public int getDataSharedWithThirdParty();
    method public int getDataUsedForMonetization();
    method public int getFlags();
    method public String getPermission();
    field public static final android.os.Parcelable.Creator<android.content.pm.UsesPermissionInfo> CREATOR;
    field public static final int FLAG_REQUESTED_PERMISSION_GRANTED = 2; // 0x2
    field public static final int RETENTION_NOT_RETAINED = 1; // 0x1
    field public static final int RETENTION_SPECIFIED = 4; // 0x4
    field public static final int RETENTION_UNDEFINED = 0; // 0x0
    field public static final int RETENTION_UNLIMITED = 3; // 0x3
    field public static final int RETENTION_USER_SELECTED = 2; // 0x2
    field public static final int USAGE_NO = 3; // 0x3
    field public static final int USAGE_UNDEFINED = 0; // 0x0
    field public static final int USAGE_USER_TRIGGERED = 2; // 0x2
    field public static final int USAGE_YES = 1; // 0x1
  }
  public final class VersionedPackage implements android.os.Parcelable {
    ctor public VersionedPackage(@NonNull String, int);
    ctor public VersionedPackage(@NonNull String, long);
+0 −22
Original line number Diff line number Diff line
@@ -816,28 +816,6 @@ public class Intent implements Parcelable, Cloneable {
    public static final String ACTION_SHOW_APP_INFO
            = "android.intent.action.SHOW_APP_INFO";

    /**
     * Activity Action: Start an activity to show the app's detailed usage information for
     * permission protected data.
     *
     * The Intent contains an extra {@link #EXTRA_PERMISSION_USAGE_PERMISSIONS} that is of
     * type {@code String[]} and contains the specific permissions to show information for.
     *
     * Apps should handle this intent if they want to provide more information about permission
     * usage to users beyond the information provided in the manifest.
     */
    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
    public static final String ACTION_PERMISSION_USAGE_DETAILS =
            "android.intent.action.PERMISSION_USAGE_DETAILS";

    /**
     * The name of the extra used to contain the permissions in
     * {@link #ACTION_PERMISSION_USAGE_DETAILS}.
     * @see #ACTION_PERMISSION_USAGE_DETAILS
     */
    public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS =
            "android.intent.extra.PERMISSION_USAGE_PERMISSIONS";

    /**
     * Represents a shortcut/live folder icon resource.
     *
+0 −18
Original line number Diff line number Diff line
@@ -204,10 +204,7 @@ public class PackageInfo implements Parcelable {
     * {@link PackageManager#GET_PERMISSIONS} was set.  This list includes
     * all permissions requested, even those that were not granted or known
     * by the system at install time.
     *
     * @deprecated Use {@link #usesPermissions}
     */
    @Deprecated
    public String[] requestedPermissions;

    /**
@@ -217,22 +214,9 @@ public class PackageInfo implements Parcelable {
     * {@link PackageManager#GET_PERMISSIONS} was set.  Each value matches
     * the corresponding entry in {@link #requestedPermissions}, and will have
     * the flag {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate.
     *
     * @deprecated Use {@link #usesPermissions}
     */
    @Deprecated
    public int[] requestedPermissionsFlags;

    /**
     * Array of all {@link android.R.styleable#AndroidManifestUsesPermission
     * &lt;uses-permission&gt;} tags included under &lt;manifest&gt;,
     * or null if there were none.  This is only filled in if the flag
     * {@link PackageManager#GET_PERMISSIONS} was set.  This list includes
     * all permissions requested, even those that were not granted or known
     * by the system at install time.
     */
    public UsesPermissionInfo[] usesPermissions;

    /**
     * Flag for {@link #requestedPermissionsFlags}: the requested permission
     * is required for the application to run; the user can not optionally
@@ -480,7 +464,6 @@ public class PackageInfo implements Parcelable {
        dest.writeTypedArray(permissions, parcelableFlags);
        dest.writeStringArray(requestedPermissions);
        dest.writeIntArray(requestedPermissionsFlags);
        dest.writeTypedArray(usesPermissions, parcelableFlags);
        dest.writeTypedArray(signatures, parcelableFlags);
        dest.writeTypedArray(configPreferences, parcelableFlags);
        dest.writeTypedArray(reqFeatures, parcelableFlags);
@@ -545,7 +528,6 @@ public class PackageInfo implements Parcelable {
        permissions = source.createTypedArray(PermissionInfo.CREATOR);
        requestedPermissions = source.createStringArray();
        requestedPermissionsFlags = source.createIntArray();
        usesPermissions = source.createTypedArray(UsesPermissionInfo.CREATOR);
        signatures = source.createTypedArray(Signature.CREATOR);
        configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
+13 −75
Original line number Diff line number Diff line
@@ -791,23 +791,18 @@ public class PackageParser {
                    pi.permissions[i] = generatePermissionInfo(p.permissions.get(i), flags);
                }
            }
            N = p.usesPermissionInfos.size();
            N = p.requestedPermissions.size();
            if (N > 0) {
                pi.requestedPermissions = new String[N];
                pi.requestedPermissionsFlags = new int[N];
                pi.usesPermissions = new UsesPermissionInfo[N];
                for (int i=0; i<N; i++) {
                    UsesPermissionInfo info = p.usesPermissionInfos.get(i);
                    final String perm = info.getPermission();
                    final String perm = p.requestedPermissions.get(i);
                    pi.requestedPermissions[i] = perm;
                    int permissionFlags = 0;
                    // The notion of required permissions is deprecated but for compatibility.
                    permissionFlags |= PackageInfo.REQUESTED_PERMISSION_REQUIRED;
                    pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_REQUIRED;
                    if (grantedPermissions != null && grantedPermissions.contains(perm)) {
                        permissionFlags |= PackageInfo.REQUESTED_PERMISSION_GRANTED;
                        pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_GRANTED;
                    }
                    pi.requestedPermissionsFlags[i] = permissionFlags;
                    pi.usesPermissions[i] = new UsesPermissionInfo(info, permissionFlags);
                }
            }
        }
@@ -2175,12 +2170,12 @@ public class PackageParser {
                    return null;
                }
            } else if (tagName.equals(TAG_USES_PERMISSION)) {
                if (!parseUsesPermission(pkg, res, parser, outError)) {
                if (!parseUsesPermission(pkg, res, parser)) {
                    return null;
                }
            } else if (tagName.equals(TAG_USES_PERMISSION_SDK_M)
                    || tagName.equals(TAG_USES_PERMISSION_SDK_23)) {
                if (!parseUsesPermission(pkg, res, parser, outError)) {
                if (!parseUsesPermission(pkg, res, parser)) {
                    return null;
                }
            } else if (tagName.equals(TAG_USES_CONFIGURATION)) {
@@ -2498,7 +2493,7 @@ public class PackageParser {
                    newPermsMsg.append(' ');
                }
                newPermsMsg.append(npi.name);
                addRequestedPermission(pkg, npi.name);
                pkg.requestedPermissions.add(npi.name);
                pkg.implicitPermissions.add(npi.name);
            }
        }
@@ -2519,7 +2514,7 @@ public class PackageParser {
            for (int in = 0; in < newPerms.size(); in++) {
                final String perm = newPerms.get(in);
                if (!pkg.requestedPermissions.contains(perm)) {
                    addRequestedPermission(pkg, perm);
                    pkg.requestedPermissions.add(perm);
                    pkg.implicitPermissions.add(perm);
                }
            }
@@ -2599,13 +2594,13 @@ public class PackageParser {
            }
        } else {
            if (FORCE_AUDIO_PACKAGES.contains(pkg.packageName)) {
                addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_AUDIO);
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_AUDIO);
            }
            if (FORCE_VIDEO_PACKAGES.contains(pkg.packageName)) {
                addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_VIDEO);
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_VIDEO);
            }
            if (FORCE_IMAGES_PACKAGES.contains(pkg.packageName)) {
                addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_IMAGES);
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_IMAGES);
            }
        }

@@ -2645,12 +2640,6 @@ public class PackageParser {
    }

    /**
     * Helper method for adding a requested permission to a package outside of a uses-permission.
     */
    private void addRequestedPermission(Package pkg, String permission) {
        pkg.requestedPermissions.add(permission);
        pkg.usesPermissionInfos.add(new UsesPermissionInfo(permission));
    }

    /**
     * Matches a given {@code targetCode} against a set of release codeNames. Target codes can
@@ -2987,8 +2976,8 @@ public class PackageParser {
        return certSha256Digests;
    }

    private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser,
            String[] outError) throws XmlPullParserException, IOException {
    private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser)
            throws XmlPullParserException, IOException {
        TypedArray sa = res.obtainAttributes(parser,
                com.android.internal.R.styleable.AndroidManifestUsesPermission);

@@ -3012,44 +3001,6 @@ public class PackageParser {
        final String requiredNotfeature = sa.getNonConfigurationString(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_requiredNotFeature, 0);

        int dataSentOffDevice = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSentOffDevice, 0);

        int dataSharedWithThirdParty = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSharedWithThirdParty, 0);

        int dataUsedForMonetization = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_dataUsedForMonetization, 0);

        int retentionWeeks = -1;
        int retention;

        String rawRetention = sa.getString(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime);

        if (rawRetention == null) {
            retention = UsesPermissionInfo.RETENTION_UNDEFINED;
        } else if ("notRetained".equals(rawRetention)) {
            retention = UsesPermissionInfo.RETENTION_NOT_RETAINED;
        } else if ("userSelected".equals(rawRetention)) {
            retention = UsesPermissionInfo.RETENTION_USER_SELECTED;
        } else if ("unlimited".equals(rawRetention)) {
            retention = UsesPermissionInfo.RETENTION_UNLIMITED;
        } else {
            // A number of weeks was specified
            retention = UsesPermissionInfo.RETENTION_SPECIFIED;
            retentionWeeks = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime,
                -1);

            if (retentionWeeks < 0) {
                outError[0] = "Bad value provided for dataRetentionTime.";
                mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
                XmlUtils.skipCurrentTag(parser);
                sa.recycle();
                return false;
            }
        }
        sa.recycle();

        XmlUtils.skipCurrentTag(parser);
@@ -3082,10 +3033,6 @@ public class PackageParser {
                    + parser.getPositionDescription());
        }

        UsesPermissionInfo info = new UsesPermissionInfo(name, dataSentOffDevice,
                dataSharedWithThirdParty, dataUsedForMonetization, retention, retentionWeeks);
        pkg.usesPermissionInfos.add(info);

        return true;
    }

@@ -3420,10 +3367,6 @@ public class PackageParser {
        perm.info.flags = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestPermission_permissionFlags, 0);

        perm.info.usageInfoRequired = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestPermission_usageInfoRequired, 0)
                != 0;

        sa.recycle();

        if (perm.info.protectionLevel == -1) {
@@ -6625,9 +6568,6 @@ public class PackageParser {
        @UnsupportedAppUsage
        public final ArrayList<String> requestedPermissions = new ArrayList<String>();

        public final ArrayList<UsesPermissionInfo> usesPermissionInfos =
                new ArrayList<>();

        /** Permissions requested but not in the manifest. */
        public final ArrayList<String> implicitPermissions = new ArrayList<>();

@@ -7159,7 +7099,6 @@ public class PackageParser {

            dest.readStringList(requestedPermissions);
            internStringArrayList(requestedPermissions);
            dest.readParcelableList(usesPermissionInfos, boot);
            dest.readStringList(implicitPermissions);
            internStringArrayList(implicitPermissions);
            protectedBroadcasts = dest.createStringArrayList();
@@ -7327,7 +7266,6 @@ public class PackageParser {
            dest.writeParcelableList(instrumentation, flags);

            dest.writeStringList(requestedPermissions);
            dest.writeParcelableList(usesPermissionInfos, flags);
            dest.writeStringList(implicitPermissions);
            dest.writeStringList(protectedBroadcasts);

+0 −10
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
@@ -368,12 +367,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable {
     */
    public CharSequence nonLocalizedDescription;

    /**
     * If {@code true} an application targeting {@link Build.VERSION_CODES#Q} <em>must</em>
     * include permission data usage information in order to be able to be granted this permission.
     */
    public boolean usageInfoRequired;

    /** @hide */
    public static int fixProtectionLevel(int level) {
        if (level == PROTECTION_SIGNATURE_OR_SYSTEM) {
@@ -475,7 +468,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable {
        descriptionRes = orig.descriptionRes;
        requestRes = orig.requestRes;
        nonLocalizedDescription = orig.nonLocalizedDescription;
        usageInfoRequired = orig.usageInfoRequired;
    }

    /**
@@ -540,7 +532,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable {
        dest.writeInt(descriptionRes);
        dest.writeInt(requestRes);
        TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags);
        dest.writeInt(usageInfoRequired ? 1 : 0);
    }

    /** @hide */
@@ -581,6 +572,5 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable {
        descriptionRes = source.readInt();
        requestRes = source.readInt();
        nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
        usageInfoRequired = source.readInt() != 0;
    }
}
Loading