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

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

Merge changes If33cf39f,Ideeb989a into main

* changes:
  Health: Split BODY_SENSORS and bg permissions to READ_HEART_RATE
  Split permission: Check feature flag when SystemConfig parses xml tag
parents ca0eb3a3 ece154a7
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -214,13 +214,30 @@ public class AconfigFlags {
     * @param parser XML parser object currently parsing an element
     * @return true if the element is disabled because of its feature flag
     */
    public boolean skipCurrentElement(@Nullable ParsingPackage pkg, @NonNull XmlPullParser parser) {
        return skipCurrentElement(pkg, parser, /* allowNoNamespace= */ false);
    }

    /**
     * Check if the element in {@code parser} should be skipped because of the feature flag.
     * @param pkg The package being parsed
     * @param parser XML parser object currently parsing an element
     * @param allowNoNamespace Whether to allow namespace null
     * @return true if the element is disabled because of its feature flag
     */
    public boolean skipCurrentElement(
            @NonNull ParsingPackage pkg,
            @NonNull XmlResourceParser parser) {
        @Nullable ParsingPackage pkg,
        @NonNull XmlPullParser parser,
        boolean allowNoNamespace
    ) {
        if (!Flags.manifestFlagging()) {
            return false;
        }
        String featureFlag = parser.getAttributeValue(ANDROID_RES_NAMESPACE, "featureFlag");
        // If allow no namespace, make another attempt to parse feature flag with null namespace.
        if (featureFlag == null && allowNoNamespace) {
            featureFlag = parser.getAttributeValue(null, "featureFlag");
        }
        if (featureFlag == null) {
            return false;
        }
@@ -242,7 +259,7 @@ public class AconfigFlags {
                    + " behind feature flag " + featureFlag + " = " + flagValue);
            shouldSkip = true;
        }
        if (android.content.pm.Flags.includeFeatureFlagsInPackageCacher()) {
        if (pkg != null && android.content.pm.Flags.includeFeatureFlagsInPackageCacher()) {
            pkg.addFeatureFlag(featureFlag, flagValue);
        }
        return shouldSkip;
+10 −0
Original line number Diff line number Diff line
@@ -273,6 +273,16 @@
                      targetSdk="33">
        <new-permission name="android.permission.BODY_SENSORS_BACKGROUND" />
    </split-permission>
    <split-permission name="android.permission.BODY_SENSORS"
                      featureFlag="android.permission.flags.replace_body_sensor_permission_enabled"
                      targetSdk="36">
        <new-permission name="android.permission.health.READ_HEART_RATE" />
    </split-permission>
    <split-permission name="android.permission.BODY_SENSORS_BACKGROUND"
                      featureFlag="android.permission.flags.replace_body_sensor_permission_enabled"
                      targetSdk="36">
        <new-permission name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
    </split-permission>
    <split-permission name="android.permission.READ_EXTERNAL_STORAGE"
                      targetSdk="33">
        <new-permission name="android.permission.READ_MEDIA_AUDIO" />
+8 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.util.Xml;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.pm.RoSystemFeatures;
import com.android.internal.pm.pkg.parsing.ParsingPackageUtils;
import com.android.internal.util.XmlUtils;
import com.android.modules.utils.build.UnboundedSdkLevel;
import com.android.server.pm.permission.PermissionAllowlist;
@@ -2000,6 +2001,13 @@ public class SystemConfig {

    private void readSplitPermission(XmlPullParser parser, File permFile)
            throws IOException, XmlPullParserException {
        // If trunkstable feature flag disabled for this split permission, skip this tag.
        if (ParsingPackageUtils.getAconfigFlags()
            .skipCurrentElement(/* pkg= */ null, parser, /* allowNoNamespace= */ true)) {
            XmlUtils.skipCurrentTag(parser);
            return;
        }

        String splitPerm = parser.getAttributeValue(null, "name");
        if (splitPerm == null) {
            Slog.w(TAG, "<split-permission> without name in " + permFile + " at "