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

Commit 35417e90 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Treat undefined flags as false in resource flag processor" into main

parents 28101b5c 838d7255
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.aconfig.nano.Aconfig.parsed_flags;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.res.Flags;
import android.content.res.XmlResourceParser;
import android.os.Environment;
import android.os.Process;
import android.util.ArrayMap;
@@ -247,21 +246,24 @@ public class AconfigFlags {
            negated = true;
            featureFlag = featureFlag.substring(1).strip();
        }
        final Boolean flagValue = getFlagValue(featureFlag);
        boolean shouldSkip = false;
        Boolean flagValue = getFlagValue(featureFlag);
        boolean isUndefined = false;
        if (flagValue == null) {
            Slog.w(LOG_TAG, "Skipping element " + parser.getName()
                    + " due to unknown feature flag " + featureFlag);
            shouldSkip = true;
        } else if (flagValue == negated) {
            isUndefined = true;
            flagValue = false;
        }
        boolean shouldSkip = false;
        if (flagValue == negated) {
            // Skip if flag==false && attr=="flag" OR flag==true && attr=="!flag" (negated)
            Slog.i(LOG_TAG, "Skipping element " + parser.getName()
                    + " behind feature flag " + featureFlag + " = " + flagValue);
            shouldSkip = true;
        }
        if (pkg != null && android.content.pm.Flags.includeFeatureFlagsInPackageCacher()) {
            if (isUndefined) {
                pkg.addFeatureFlag(featureFlag, null);
            } else {
                pkg.addFeatureFlag(featureFlag, flagValue);
            }
        }
        return shouldSkip;
    }