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

Commit 7d31ec94 authored by Scarlett Song's avatar Scarlett Song Committed by Android (Google) Code Review
Browse files

Merge "Add backgroundPermission attr to public-staging.xml" into main

parents f7af3c7d e933dbea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -442,6 +442,7 @@ package android {
  public static final class R.attr {
    field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600
    field @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled") public static final int backgroundPermission;
    field @FlaggedApi("android.content.res.manifest_flagging") public static final int featureFlag = 16844428; // 0x101068c
    field public static final int gameSessionService = 16844373; // 0x1010655
    field public static final int hotwordDetectionService = 16844326; // 0x1010626
+12 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.internal.pm.pkg.component;

import static com.android.internal.pm.pkg.parsing.ParsingPackageUtils.PARSE_APK_IN_APEX;
import static com.android.internal.pm.pkg.parsing.ParsingUtils.NOT_SET;

import android.annotation.NonNull;
@@ -26,6 +27,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.os.Build;
import android.permission.flags.Flags;
import android.util.ArrayMap;
import android.util.EventLog;
import android.util.Slog;
@@ -49,7 +51,7 @@ public class ParsedPermissionUtils {

    @NonNull
    public static ParseResult<ParsedPermission> parsePermission(ParsingPackage pkg, Resources res,
            XmlResourceParser parser, boolean useRoundIcon, ParseInput input)
            XmlResourceParser parser, boolean useRoundIcon, ParseInput input, int flags)
            throws IOException, XmlPullParserException {
        String packageName = pkg.getPackageName();
        ParsedPermissionImpl permission = new ParsedPermissionImpl();
@@ -77,12 +79,18 @@ public class ParsedPermissionUtils {

            if (sa.hasValue(
                    R.styleable.AndroidManifestPermission_backgroundPermission)) {
                if ("android".equals(packageName)) {
                final boolean isApkInApex = (flags & PARSE_APK_IN_APEX) != 0;
                final boolean canUseBackgroundPermissionAttr =
                    "android".equals(packageName) ||
                        (Flags.replaceBodySensorPermissionEnabled() && isApkInApex);
                if (canUseBackgroundPermissionAttr) {
                    permission.setBackgroundPermission(sa.getNonResourceString(
                        R.styleable.AndroidManifestPermission_backgroundPermission));
                } else {
                    String allowedPackages = "'android'"
                        + (Flags.replaceBodySensorPermissionEnabled() ? " and APK_IN_APEX" : "");
                    Slog.w(TAG, packageName + " defines a background permission. Only the "
                            + "'android' package can do that.");
                        + allowedPackages + " packages can do that.");
                }
            }

+3 −3
Original line number Diff line number Diff line
@@ -1090,7 +1090,7 @@ public class ParsingPackageUtils {
            case TAG_PERMISSION_GROUP:
                return parsePermissionGroup(input, pkg, res, parser);
            case TAG_PERMISSION:
                return parsePermission(input, pkg, res, parser);
                return parsePermission(input, pkg, res, parser, flags);
            case TAG_PERMISSION_TREE:
                return parsePermissionTree(input, pkg, res, parser);
            case TAG_USES_PERMISSION:
@@ -1329,10 +1329,10 @@ public class ParsingPackageUtils {
    }

    private static ParseResult<ParsingPackage> parsePermission(ParseInput input,
            ParsingPackage pkg, Resources res, XmlResourceParser parser)
            ParsingPackage pkg, Resources res, XmlResourceParser parser, int flags)
            throws XmlPullParserException, IOException {
        ParseResult<ParsedPermission> result = ParsedPermissionUtils.parsePermission(
                pkg, res, parser, sUseRoundIcon, input);
                pkg, res, parser, sUseRoundIcon, input, flags);
        if (result.isError()) {
            return input.error(result);
        }
+3 −0
Original line number Diff line number Diff line
@@ -118,6 +118,9 @@
    <public name="languageSettingsActivity"/>
    <!-- @FlaggedApi("android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM") -->
    <public name="dreamCategory"/>
    <!-- @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled")
         @hide @SystemApi -->
    <public name="backgroundPermission"/>
  </staging-public-group>

  <staging-public-group type="id" first-id="0x01b60000">