diff options
Diffstat (limited to 'src/com/android/launcher3/config/FeatureFlags.java')
-rw-r--r-- | src/com/android/launcher3/config/FeatureFlags.java | 219 |
1 files changed, 154 insertions, 65 deletions
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 77bd898c97..e1816cb1e5 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -16,31 +16,28 @@ package com.android.launcher3.config; +import static com.android.launcher3.BuildConfig.WIDGET_ON_FIRST_SCREEN; import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED; import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED; import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD; import static com.android.launcher3.uioverrides.flags.FlagsFactory.getDebugFlag; +import static com.android.launcher3.uioverrides.flags.FlagsFactory.getIntFlag; import static com.android.launcher3.uioverrides.flags.FlagsFactory.getReleaseFlag; +import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; -import android.content.Context; +import android.view.ViewConfiguration; import androidx.annotation.VisibleForTesting; import com.android.launcher3.BuildConfig; -import com.android.launcher3.Utilities; +import com.android.launcher3.Flags; import java.util.function.Predicate; import java.util.function.ToIntFunction; /** * Defines a set of flags used to control various launcher behaviors. - * - * Please only add flags to your assigned block to prevent merge conflicts. If you do not have - * a block, please update the current empty block and add a new empty block below to prevent - * merge conflicts with the previous block. - * List of blocks can be found: - * <a href="http://go/gnl-flags-block-directory">here</a> - * + * <p> * <p>All the flags should be defined here with appropriate default values. */ public final class FeatureFlags { @@ -52,10 +49,6 @@ public final class FeatureFlags { private FeatureFlags() { } - public static boolean showFlagTogglerUi(Context context) { - return BuildConfig.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context); - } - /** * True when the build has come from Android Studio and is being used for local debugging. * @deprecated Use {@link BuildConfig#IS_STUDIO_BUILD} directly @@ -123,6 +116,26 @@ public final class FeatureFlags { getDebugFlag(275132633, "ENABLE_ALL_APPS_FROM_OVERVIEW", DISABLED, "Allow entering All Apps from Overview (e.g. long swipe up from app)"); + public static final BooleanFlag CUSTOM_LPNH_THRESHOLDS = + getReleaseFlag(301680992, "CUSTOM_LPNH_THRESHOLDS", DISABLED, + "Add dev options to customize the LPNH trigger slop and milliseconds"); + + public static final BooleanFlag ANIMATE_LPNH = + getReleaseFlag(308693847, "ANIMATE_LPNH", TEAMFOOD, + "Animates navbar when long pressing"); + + public static final BooleanFlag SHRINK_NAV_HANDLE_ON_PRESS = + getReleaseFlag(314158312, "SHRINK_NAV_HANDLE_ON_PRESS", DISABLED, + "Shrinks navbar when long pressing if ANIMATE_LPNH is enabled"); + + public static final IntFlag LPNH_SLOP_PERCENTAGE = + getIntFlag(301680992, "LPNH_SLOP_PERCENTAGE", 100, + "Controls touch slop percentage for lpnh"); + + public static final IntFlag LPNH_TIMEOUT_MS = + getIntFlag(301680992, "LPNH_TIMEOUT_MS", ViewConfiguration.getLongPressTimeout(), + "Controls lpnh timeout in milliseconds"); + public static final BooleanFlag ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS = getReleaseFlag( 270394468, "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", ENABLED, "Enable option to show keyboard when going to all-apps"); @@ -141,7 +154,7 @@ public final class FeatureFlags { // TODO(Block 6): Clean up flags public static final BooleanFlag ENABLE_ALL_APPS_SEARCH_IN_TASKBAR = getDebugFlag(270393900, - "ENABLE_ALL_APPS_SEARCH_IN_TASKBAR", DISABLED, + "ENABLE_ALL_APPS_SEARCH_IN_TASKBAR", ENABLED, "Enables Search box in Taskbar All Apps."); public static final BooleanFlag SECONDARY_DRAG_N_DROP_TO_PIN = getDebugFlag(270395140, @@ -154,29 +167,27 @@ public final class FeatureFlags { "Enable the ability to generate monochromatic icons, if it is not provided by the app"); // TODO(Block 8): Clean up flags - public static final BooleanFlag ENABLE_MATERIAL_U_POPUP = getDebugFlag(270395516, - "ENABLE_MATERIAL_U_POPUP", ENABLED, "Switch popup UX to use material U"); // TODO(Block 9): Clean up flags - public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V2 = getReleaseFlag(270395134, - "ENABLE_DOWNLOAD_APP_UX_V2", ENABLED, "Updates the download app UX" - + " to have better visuals"); - - public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V3 = getDebugFlag(270395186, - "ENABLE_DOWNLOAD_APP_UX_V3", ENABLED, "Updates the download app UX" - + " to have better visuals, improve contrast, and color"); - - public static final BooleanFlag SHOW_DOT_PAGINATION = getDebugFlag(270395278, - "SHOW_DOT_PAGINATION", ENABLED, "Enable showing dot pagination in workspace"); - - public static final BooleanFlag LARGE_SCREEN_WIDGET_PICKER = getDebugFlag(270395809, - "LARGE_SCREEN_WIDGET_PICKER", ENABLED, "Enable new widget picker that takes " - + "advantage of large screen format"); + public static final BooleanFlag UNFOLDED_WIDGET_PICKER = getDebugFlag(301918659, + "UNFOLDED_WIDGET_PICKER", DISABLED, "Enable new widget picker that takes " + + "advantage of the unfolded foldable format"); public static final BooleanFlag MULTI_SELECT_EDIT_MODE = getDebugFlag(270709220, "MULTI_SELECT_EDIT_MODE", DISABLED, "Enable new multi-select edit mode " + "for home screen"); + public static final BooleanFlag SMARTSPACE_AS_A_WIDGET = getDebugFlag(299181941, + "SMARTSPACE_AS_A_WIDGET", DISABLED, "Enable SmartSpace as a widget"); + + public static boolean shouldShowFirstPageWidget() { + return SMARTSPACE_AS_A_WIDGET.get() && WIDGET_ON_FIRST_SCREEN; + } + + public static final BooleanFlag ENABLE_SMARTSPACE_REMOVAL = getDebugFlag(290799975, + "ENABLE_SMARTSPACE_REMOVAL", DISABLED, "Enable SmartSpace removal for " + + "home screen"); + // TODO(Block 10): Clean up flags public static final BooleanFlag ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION = getDebugFlag(270614790, "ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION", DISABLED, @@ -190,6 +201,10 @@ public final class FeatureFlags { "ENABLE_PARAMETRIZE_REORDER", DISABLED, "Enables generating the reorder using a set of parameters"); + public static final BooleanFlag ENABLE_NO_LONG_PRESS_DRAG = getDebugFlag(299748096, + "ENABLE_NO_LONG_PRESS_DRAG", ENABLED, + "Don't trigger the drag if we are still under long press"); + // TODO(Block 12): Clean up flags public static final BooleanFlag ENABLE_MULTI_INSTANCE = getDebugFlag(270396680, "ENABLE_MULTI_INSTANCE", DISABLED, @@ -204,8 +219,20 @@ public final class FeatureFlags { public static final BooleanFlag NOTIFY_CRASHES = getDebugFlag(270393108, "NOTIFY_CRASHES", TEAMFOOD, "Sends a notification whenever launcher encounters an uncaught exception."); - public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(270395798, - "ENABLE_TRANSIENT_TASKBAR", ENABLED, "Enables transient taskbar."); + public static final boolean ENABLE_TASKBAR_NAVBAR_UNIFICATION = + enableTaskbarNavbarUnification(); + + // Aconfig migration complete for ENABLE_TASKBAR_NO_RECREATION. + public static final BooleanFlag ENABLE_TASKBAR_NO_RECREATION = getDebugFlag(299193589, + "ENABLE_TASKBAR_NO_RECREATION", DISABLED, + "Enables taskbar with no recreation from lifecycle changes of TaskbarActivityContext."); + public static boolean enableTaskbarNoRecreate() { + return ENABLE_TASKBAR_NO_RECREATION.get() || Flags.enableTaskbarNoRecreate() + // Task bar pinning and task bar nav bar unification are both dependent on + // ENABLE_TASKBAR_NO_RECREATION. We want to turn ENABLE_TASKBAR_NO_RECREATION on + // when either of the dependent features is turned on. + || ENABLE_TASKBAR_PINNING.get() || ENABLE_TASKBAR_NAVBAR_UNIFICATION; + } // TODO(Block 16): Clean up flags // When enabled the promise icon is visible in all apps while installation an app. @@ -222,6 +249,7 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_HIDE_HEADER = getReleaseFlag(270390930, "ENABLE_HIDE_HEADER", ENABLED, "Hide header on keyboard before typing in all apps"); + // Aconfig migration complete for ENABLE_EXPANDING_PAUSE_WORK_BUTTON. public static final BooleanFlag ENABLE_EXPANDING_PAUSE_WORK_BUTTON = getDebugFlag(270390779, "ENABLE_EXPANDING_PAUSE_WORK_BUTTON", DISABLED, "Expand and collapse pause work button while scrolling"); @@ -229,16 +257,16 @@ public final class FeatureFlags { public static final BooleanFlag COLLECT_SEARCH_HISTORY = getReleaseFlag(270391455, "COLLECT_SEARCH_HISTORY", DISABLED, "Allow launcher to collect search history for log"); + // Aconfig migration complete for ENABLE_TWOLINE_ALLAPPS. public static final BooleanFlag ENABLE_TWOLINE_ALLAPPS = getDebugFlag(270390937, - "ENABLE_TWOLINE_ALLAPPS", DISABLED, "Enables two line label inside all apps."); + "ENABLE_TWOLINE_ALLAPPS", ENABLED, "Enables two line label inside all apps."); + public static boolean enableTwolineAllapps() { + return ENABLE_TWOLINE_ALLAPPS.get() || Flags.enableTwolineAllapps(); + } public static final BooleanFlag IME_STICKY_SNACKBAR_EDU = getDebugFlag(270391693, "IME_STICKY_SNACKBAR_EDU", ENABLED, "Show sticky IME edu in AllApps"); - public static final BooleanFlag ENABLE_PEOPLE_TILE_PREVIEW = getDebugFlag(270391653, - "ENABLE_PEOPLE_TILE_PREVIEW", DISABLED, - "Experimental: Shows conversation shortcuts on home screen as search results"); - public static final BooleanFlag FOLDER_NAME_MAJORITY_RANKING = getDebugFlag(270391638, "FOLDER_NAME_MAJORITY_RANKING", ENABLED, "Suggests folder names based on majority based ranking."); @@ -248,20 +276,74 @@ public final class FeatureFlags { "Inject fallback app corpus result when AiAi fails to return it."); public static final BooleanFlag ENABLE_LONG_PRESS_NAV_HANDLE = - getReleaseFlag(282993230, "ENABLE_LONG_PRESS_NAV_HANDLE", TEAMFOOD, + getReleaseFlag(299682306, "ENABLE_LONG_PRESS_NAV_HANDLE", TEAMFOOD, "Enables long pressing on the bottom bar nav handle to trigger events."); + public static final BooleanFlag ENABLE_SEARCH_HAPTIC_HINT = + getReleaseFlag(314005131, "ENABLE_SEARCH_HAPTIC_HINT", ENABLED, + "Enables haptic hint while long pressing on the bottom bar nav handle."); + + public static final BooleanFlag ENABLE_SEARCH_HAPTIC_COMMIT = + getReleaseFlag(314005577, "ENABLE_SEARCH_HAPTIC_COMMIT", ENABLED, + "Enables haptic hint at end of long pressing on the bottom bar nav handle."); + + public static final IntFlag LPNH_HAPTIC_HINT_START_SCALE_PERCENT = + getIntFlag(309972570, "LPNH_HAPTIC_HINT_START_SCALE_PERCENT", 0, + "Haptic hint start scale."); + + public static final IntFlag LPNH_HAPTIC_HINT_END_SCALE_PERCENT = + getIntFlag(309972570, "LPNH_HAPTIC_HINT_END_SCALE_PERCENT", 100, + "Haptic hint end scale."); + + public static final IntFlag LPNH_HAPTIC_HINT_SCALE_EXPONENT = + getIntFlag(309972570, "LPNH_HAPTIC_HINT_SCALE_EXPONENT", 1, + "Haptic hint scale exponent."); + + public static final IntFlag LPNH_HAPTIC_HINT_ITERATIONS = + getIntFlag(309972570, "LPNH_HAPTIC_HINT_ITERATIONS", 50, + "Haptic hint number of iterations."); + + public static final BooleanFlag ENABLE_LPNH_DEEP_PRESS = + getReleaseFlag(310952290, "ENABLE_LPNH_DEEP_PRESS", ENABLED, + "Long press of nav handle is instantly triggered if deep press is detected."); + + public static final IntFlag LPNH_HAPTIC_HINT_DELAY = + getIntFlag(309972570, "LPNH_HAPTIC_HINT_DELAY", 0, + "Delay before haptic hint starts."); + // TODO(Block 17): Clean up flags - public static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583, - "ENABLE_TASKBAR_PINNING", DISABLED, + // Aconfig migration complete for ENABLE_TASKBAR_PINNING. + private static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583, + "ENABLE_TASKBAR_PINNING", TEAMFOOD, "Enables taskbar pinning to allow user to switch between transient and persistent " + "taskbar flavors"); - // TODO(Block 18): Clean up flags + public static boolean enableTaskbarPinning() { + return ENABLE_TASKBAR_PINNING.get() || Flags.enableTaskbarPinning(); + } + + /** + * Use a static boolean to gate the taskbar pinning education step + */ + public static boolean enableTaskbarPinningEdu() { + boolean enableTaskbarPinningEdu = false; + return enableTaskbarPinning() && enableTaskbarPinningEdu; + } + + public static final BooleanFlag MOVE_STARTUP_DATA_TO_DEVICE_PROTECTED_STORAGE = getDebugFlag( + 251502424, "ENABLE_BOOT_AWARE_STARTUP_DATA", DISABLED, + "Marks LauncherPref data as (and allows it to) available while the device is" + + " locked. Enabling this causes a 1-time movement of certain SharedPreferences" + + " data. Improves startup latency."); + + // Aconfig migration complete for ENABLE_APP_PAIRS. public static final BooleanFlag ENABLE_APP_PAIRS = getDebugFlag(274189428, "ENABLE_APP_PAIRS", DISABLED, "Enables the ability to create and save app pairs on the Home screen for easy" + " split screen launching."); + public static boolean enableAppPairs() { + return ENABLE_APP_PAIRS.get() || com.android.wm.shell.Flags.enableAppPairs(); + } // TODO(Block 19): Clean up flags public static final BooleanFlag SCROLL_TOP_TO_RESET = getReleaseFlag(270395177, @@ -284,6 +366,15 @@ public final class FeatureFlags { "ENABLE_DYNAMIC_TASKBAR_THRESHOLDS", ENABLED, "Enables taskbar thresholds that scale based on screen size."); + // Aconfig migration complete for ENABLE_HOME_TRANSITION_LISTENER. + public static final BooleanFlag ENABLE_HOME_TRANSITION_LISTENER = getDebugFlag(306053414, + "ENABLE_HOME_TRANSITION_LISTENER", TEAMFOOD, + "Enables launcher to listen to all transitions that include home activity."); + + public static boolean enableHomeTransitionListener() { + return ENABLE_HOME_TRANSITION_LISTENER.get() || Flags.enableHomeTransitionListener(); + } + // TODO(Block 21): Clean up flags public static final BooleanFlag ENABLE_APP_ICON_FOR_INLINE_SHORTCUTS = getDebugFlag(270395087, "ENABLE_APP_ICON_IN_INLINE_SHORTCUTS", DISABLED, "Show app icon for inline shortcut"); @@ -299,15 +390,6 @@ public final class FeatureFlags { + "waiting for SystemUI and then merging the SystemUI progress whenever we " + "start receiving the events"); - // TODO(Block 23): Clean up flags - public static final BooleanFlag ENABLE_GRID_ONLY_OVERVIEW = getDebugFlag(270397206, - "ENABLE_GRID_ONLY_OVERVIEW", TEAMFOOD, - "Enable a grid-only overview without a focused task."); - - public static final BooleanFlag ENABLE_CURSOR_HOVER_STATES = getDebugFlag(243191650, - "ENABLE_CURSOR_HOVER_STATES", TEAMFOOD, - "Enables cursor hover states for certain elements."); - // TODO(Block 24): Clean up flags public static final BooleanFlag ENABLE_NEW_MIGRATION_LOGIC = getDebugFlag(270393455, "ENABLE_NEW_MIGRATION_LOGIC", ENABLED, @@ -359,18 +441,14 @@ public final class FeatureFlags { "USE_LOCAL_ICON_OVERRIDES", ENABLED, "Use inbuilt monochrome icons if app doesn't provide one"); - // TODO(Block 28): Clean up flags - public static final BooleanFlag ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS = - getDebugFlag(270394122, "ENABLE_SPLIT_FROM_FULLSCREEN_SHORTCUT", DISABLED, - "Enable splitting from fullscreen app with keyboard shortcuts"); - + // Aconfig migration complete for ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE. public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE = getDebugFlag( 270393453, "ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE", DISABLED, "Enable initiating split screen from workspace to workspace."); - - public static final BooleanFlag ENABLE_SPLIT_FROM_DESKTOP_TO_WORKSPACE = getDebugFlag( - 279586624, "ENABLE_SPLIT_FROM_DESKTOP_TO_WORKSPACE", DISABLED, - "Enable initiating split screen from desktop mode to workspace."); + public static boolean enableSplitContextually() { + return ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE.get() || + com.android.wm.shell.Flags.enableSplitContextual(); + } public static final BooleanFlag ENABLE_TRACKPAD_GESTURE = getDebugFlag(271010401, "ENABLE_TRACKPAD_GESTURE", ENABLED, "Enables trackpad gesture."); @@ -395,21 +473,32 @@ public final class FeatureFlags { // TODO(Block 31): Clean up flags // TODO(Block 32): Clean up flags + // Aconfig migration complete for ENABLE_RESPONSIVE_WORKSPACE. + @VisibleForTesting public static final BooleanFlag ENABLE_RESPONSIVE_WORKSPACE = getDebugFlag(241386436, - "ENABLE_RESPONSIVE_WORKSPACE", DISABLED, + "ENABLE_RESPONSIVE_WORKSPACE", TEAMFOOD, "Enables new workspace grid calculations method."); + public static boolean enableResponsiveWorkspace() { + return ENABLE_RESPONSIVE_WORKSPACE.get() || Flags.enableResponsiveWorkspace(); + } // TODO(Block 33): Clean up flags public static final BooleanFlag ENABLE_ALL_APPS_RV_PREINFLATION = getDebugFlag(288161355, - "ENABLE_ALL_APPS_RV_PREINFLATION", ENABLED, + "ENABLE_ALL_APPS_RV_PREINFLATION", TEAMFOOD, "Enables preinflating all apps icons to avoid scrolling jank."); - - // TODO(Block 34): Clean up flags public static final BooleanFlag ALL_APPS_GONE_VISIBILITY = getDebugFlag(291651514, - "ALL_APPS_GONE_VISIBILITY", ENABLED, + "ALL_APPS_GONE_VISIBILITY", TEAMFOOD, "Set all apps container view's hidden visibility to GONE instead of INVISIBLE."); - // TODO(Block 35): Empty block + // TODO(Block 34): Empty block + // Please only add flags to your assigned block. If you do not have a block: + // 1. Assign yourself this block + // 2. Add your flag to this block + // 3. Add a new empty block below this one + // 4. Move this comment to that new empty block + // This is all to prevent merge conflicts in the future and help keep track of who owns which + // flags. + // List of assigned blocks can be found: http://go/gnl-flags-block-directory public static class BooleanFlag { |