Loading core/java/android/window/DesktopExperienceFlags.java +50 −1 Original line number Original line Diff line number Diff line Loading @@ -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; /** /** Loading Loading @@ -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); } } } /** /** Loading @@ -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"; Loading @@ -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."; Loading @@ -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() Loading @@ -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()) { Loading @@ -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; Loading @@ -297,3 +345,4 @@ public enum DesktopExperienceFlags { return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false); return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false); } } } } libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +41 −0 Original line number Original line Diff line number Diff line Loading @@ -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. */ Loading Loading
core/java/android/window/DesktopExperienceFlags.java +50 −1 Original line number Original line Diff line number Diff line Loading @@ -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; /** /** Loading Loading @@ -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); } } } /** /** Loading @@ -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"; Loading @@ -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."; Loading @@ -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() Loading @@ -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()) { Loading @@ -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; Loading @@ -297,3 +345,4 @@ public enum DesktopExperienceFlags { return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false); return SystemProperties.getBoolean(SYSTEM_PROPERTY_NAME, false); } } } }
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +41 −0 Original line number Original line Diff line number Diff line Loading @@ -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. */ Loading