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

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

Merge "Add the list of flags in dumpsys" into main

parents fd5c3d25 b77ba496
Loading
Loading
Loading
Loading
+50 −1
Original line number Original line Diff line number Diff line
@@ -22,10 +22,14 @@ import static com.android.server.display.feature.flags.Flags.enableDisplayConten
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Log;


import com.android.window.flags.Flags;
import com.android.window.flags.Flags;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.BooleanSupplier;
import java.util.function.BooleanSupplier;


/**
/**
@@ -196,6 +200,9 @@ public enum DesktopExperienceFlags {
            this.mFlagFunction = flagFunction;
            this.mFlagFunction = flagFunction;
            this.mFlagName = flagName;
            this.mFlagName = flagName;
            this.mShouldOverrideByDevOptionDefault = shouldOverrideByDevOption;
            this.mShouldOverrideByDevOptionDefault = shouldOverrideByDevOption;
            if (Flags.showDesktopExperienceDevOption()) {
                registerFlag(flagName, this);
            }
        }
        }


        /**
        /**
@@ -212,6 +219,18 @@ public enum DesktopExperienceFlags {
            }
            }
            return isFlagTrue(mFlagFunction, mCachedIsOverrideByDevOption);
            return isFlagTrue(mFlagFunction, mCachedIsOverrideByDevOption);
        }
        }

        public String getFlagName() {
            return mFlagName;
        }

        public boolean getFlagValue() {
            return mFlagFunction.getAsBoolean();
        }

        public boolean isOverridable() {
            return mShouldOverrideByDevOptionDefault;
        }
    }
    }


    private static final String TAG = "DesktopExperienceFlags";
    private static final String TAG = "DesktopExperienceFlags";
@@ -229,6 +248,13 @@ public enum DesktopExperienceFlags {
    @Nullable
    @Nullable
    private static Boolean sCachedToggleOverride;
    private static Boolean sCachedToggleOverride;


    /**
     * Local cache of dynamically defined flag, organised by name.
     *
     * <p> Create an array with a capacity of 10, which should be plenty.
     */
    private static Map<String, DesktopExperienceFlag> sDynamicFlags = new ArrayMap<>(10);

    public static final String SYSTEM_PROPERTY_NAME = "persist.wm.debug.desktop_experience_devopts";
    public static final String SYSTEM_PROPERTY_NAME = "persist.wm.debug.desktop_experience_devopts";
    public static final String SYSTEM_PROPERTY_OVERRIDE_PREFIX =
    public static final String SYSTEM_PROPERTY_OVERRIDE_PREFIX =
            "persist.wm.debug.desktop_experience.add_dev_option.";
            "persist.wm.debug.desktop_experience.add_dev_option.";
@@ -255,6 +281,19 @@ public enum DesktopExperienceFlags {
        return isFlagTrue(mFlagFunction, mCachedIsOverrideByDevOption);
        return isFlagTrue(mFlagFunction, mCachedIsOverrideByDevOption);
    }
    }


    public boolean getFlagValue() {
        return mFlagFunction.getAsBoolean();
    }

    public String getFlagName() {
        return mFlagName;
    }

    /** Returns whether or not the developer option can override that flag. */
    public boolean isOverridable() {
        return mShouldOverrideByDevOptionDefault;
    }

    private static boolean isFlagTrue(
    private static boolean isFlagTrue(
            BooleanSupplier flagFunction, boolean shouldOverrideByDevOption) {
            BooleanSupplier flagFunction, boolean shouldOverrideByDevOption) {
        if (Flags.showDesktopExperienceDevOption()
        if (Flags.showDesktopExperienceDevOption()
@@ -265,6 +304,14 @@ public enum DesktopExperienceFlags {
        return flagFunction.getAsBoolean();
        return flagFunction.getAsBoolean();
    }
    }


    private static void registerFlag(String name, DesktopExperienceFlag flag) {
        sDynamicFlags.put(name, flag);
    }

    public static List<DesktopExperienceFlag> getRegisteredFlags() {
        return new ArrayList<>(sDynamicFlags.values());
    }

    private static boolean checkIfFlagShouldBeOverridden(@Nullable String flagName,
    private static boolean checkIfFlagShouldBeOverridden(@Nullable String flagName,
            boolean defaultValue) {
            boolean defaultValue) {
        if (!Flags.showDesktopExperienceDevOption() || enableDisplayContentModeManagement()) {
        if (!Flags.showDesktopExperienceDevOption() || enableDisplayContentModeManagement()) {
@@ -279,7 +326,8 @@ public enum DesktopExperienceFlags {
                defaultValue);
                defaultValue);
    }
    }


    private static boolean getToggleOverride() {
    /** Check whether the flags are overridden to true or not. */
    public static boolean getToggleOverride() {
        // If cached, return it
        // If cached, return it
        if (sCachedToggleOverride != null) {
        if (sCachedToggleOverride != null) {
            return sCachedToggleOverride;
            return sCachedToggleOverride;
@@ -297,3 +345,4 @@ public enum DesktopExperienceFlags {
        return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false);
        return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false);
    }
    }
}
}
+41 −0
Original line number Original line Diff line number Diff line
@@ -4467,6 +4467,47 @@ class DesktopTasksController(
        desktopConfig.dump(pw, innerPrefix)
        desktopConfig.dump(pw, innerPrefix)
        userRepositories.dump(pw, innerPrefix)
        userRepositories.dump(pw, innerPrefix)
        focusTransitionObserver.dump(pw, innerPrefix)
        focusTransitionObserver.dump(pw, innerPrefix)
        if (Flags.showDesktopExperienceDevOption()) {
            dumpFlags(pw, prefix)
        }
    }

    private fun dumpFlags(pw: PrintWriter, prefix: String) {
        val flagPrefix = "$prefix  "
        fun dumpFlag(
            name: String,
            flagNameWidth: Int,
            value: Boolean,
            flagValue: Boolean,
            overridable: Boolean,
        ) {
            val spaces = " ".repeat(flagNameWidth - name.length)
            pw.println(
                "${flagPrefix}Flag $name$spaces - $value (default: $flagValue, overridable: $overridable)"
            )
        }

        fun dumpFlag(flag: DesktopExperienceFlags, flagNameWidth: Int) {
            dumpFlag(flag.flagName, flagNameWidth, flag.isTrue, flag.flagValue, flag.isOverridable)
        }

        fun dumpFlag(flag: DesktopExperienceFlag, flagNameWidth: Int) {
            dumpFlag(flag.flagName, flagNameWidth, flag.isTrue, flag.flagValue, flag.isOverridable)
        }
        pw.println("${prefix}DesktopExperienceFlags")
        pw.println(
            "$prefix  Status: ${if (DesktopExperienceFlags.getToggleOverride()) "enabled" else "disabled"}"
        )
        val maxEnumFlagName = DesktopExperienceFlags.entries.maxOf { it.flagName.length }
        for (flag in DesktopExperienceFlags.entries) {
            dumpFlag(flag, maxEnumFlagName + 1)
        }
        val registeredFlags = DesktopExperienceFlags.getRegisteredFlags()
        val maxRegisteredFlagName = registeredFlags.maxOf { it.flagName.length }
        pw.println("${prefix}DesktopExperienceFlags.DesktopExperienceFlag")
        for (flag in registeredFlags) {
            dumpFlag(flag, maxRegisteredFlagName + 1)
        }
    }
    }


    /** The interface for calls from outside the shell, within the host process. */
    /** The interface for calls from outside the shell, within the host process. */