1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.systemui.flags 17 18 import com.android.internal.annotations.Keep 19 import com.android.systemui.flags.FlagsFactory.releasedFlag 20 import com.android.systemui.flags.FlagsFactory.resourceBooleanFlag 21 import com.android.systemui.flags.FlagsFactory.sysPropBooleanFlag 22 import com.android.systemui.flags.FlagsFactory.unreleasedFlag 23 import com.android.systemui.res.R 24 25 /** 26 * List of [Flag] objects for use in SystemUI. 27 * 28 * Flag Ids are integers. Ids must be unique. This is enforced in a unit test. Ids need not be 29 * sequential. Flags can "claim" a chunk of ids for flags in related features with a comment. This 30 * is purely for organizational purposes. 31 * 32 * On public release builds, flags will always return their default value. There is no way to change 33 * their value on release builds. 34 * 35 * See [FeatureFlagsClassicDebug] for instructions on flipping the flags via adb. 36 */ 37 object Flags { 38 // IGNORE ME! 39 // Because flags are static, we need an ever-present flag to reference in some of the internal 40 // code that ensure that other flags are referenced and available. 41 @JvmField val NULL_FLAG = unreleasedFlag("null_flag") 42 43 // 100 - notification 44 // TODO(b/254512751): Tracking Bug 45 val NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = 46 unreleasedFlag("notification_pipeline_developer_logging") 47 48 // TODO(b/254512732): Tracking Bug 49 @JvmField val NSSL_DEBUG_LINES = unreleasedFlag("nssl_debug_lines") 50 51 // TODO(b/254512505): Tracking Bug 52 @JvmField val NSSL_DEBUG_REMOVE_ANIMATION = unreleasedFlag("nssl_debug_remove_animation") 53 54 // TODO(b/254512624): Tracking Bug 55 @JvmField 56 val NOTIFICATION_DRAG_TO_CONTENTS = 57 resourceBooleanFlag(R.bool.config_notificationToContents, "notification_drag_to_contents") 58 59 // TODO(b/280783617): Tracking Bug 60 @Keep 61 @JvmField 62 val BUILDER_EXTRAS_OVERRIDE = 63 sysPropBooleanFlag("persist.sysui.notification.builder_extras_override", default = true) 64 65 // 200 - keyguard/lockscreen 66 // ** Flag retired ** 67 // public static final BooleanFlag KEYGUARD_LAYOUT = 68 // new BooleanFlag(true); 69 70 // TODO(b/254512750): Tracking Bug 71 val NEW_UNLOCK_SWIPE_ANIMATION = releasedFlag("new_unlock_swipe_animation") 72 val CHARGING_RIPPLE = resourceBooleanFlag(R.bool.flag_charging_ripple, "charging_ripple") 73 74 // TODO(b/254512676): Tracking Bug 75 @JvmField 76 val LOCKSCREEN_CUSTOM_CLOCKS = 77 resourceBooleanFlag(R.bool.config_enableLockScreenCustomClocks, "lockscreen_custom_clocks") 78 79 /** Flag to control the revamp of keyguard biometrics progress animation */ 80 // TODO(b/244313043): Tracking bug 81 @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag("biometrics_animation_revamp") 82 83 /** Enables code to show contextual loyalty cards in wallet entrypoints */ 84 // TODO(b/294110497): Tracking Bug 85 @JvmField 86 val ENABLE_WALLET_CONTEXTUAL_LOYALTY_CARDS = 87 releasedFlag("enable_wallet_contextual_loyalty_cards") 88 89 // TODO(b/242908637): Tracking Bug 90 @JvmField val WALLPAPER_FULLSCREEN_PREVIEW = releasedFlag("wallpaper_fullscreen_preview") 91 92 /** Enables UI updates for AI wallpapers in the wallpaper picker. */ 93 // TODO(b/267722622): Tracking Bug 94 @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag("wallpaper_picker_ui_for_aiwp") 95 96 /** Whether page transition animations in the wallpaper picker are enabled */ 97 // TODO(b/291710220): Tracking bug. 98 @JvmField 99 val WALLPAPER_PICKER_PAGE_TRANSITIONS = releasedFlag("wallpaper_picker_page_transitions") 100 101 /** Add "Apply" button to wall paper picker's grid preview page. */ 102 // TODO(b/294866904): Tracking bug. 103 @JvmField 104 val WALLPAPER_PICKER_GRID_APPLY_BUTTON = unreleasedFlag("wallpaper_picker_grid_apply_button") 105 106 /** Flag meant to guard the talkback fix for the KeyguardIndicationTextView */ 107 // TODO(b/286563884): Tracking bug 108 @JvmField val KEYGUARD_TALKBACK_FIX = unreleasedFlag("keyguard_talkback_fix") 109 110 /** Enables preview loading animation in the wallpaper picker. */ 111 // TODO(b/274443705): Tracking Bug 112 @JvmField 113 val WALLPAPER_PICKER_PREVIEW_ANIMATION = releasedFlag("wallpaper_picker_preview_animation") 114 115 // 300 - power menu 116 // TODO(b/254512600): Tracking Bug 117 @JvmField val POWER_MENU_LITE = releasedFlag("power_menu_lite") 118 119 // 400 - smartspace 120 121 // TODO(b/254513100): Tracking Bug 122 val SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED = 123 releasedFlag("smartspace_shared_element_transition_enabled") 124 125 // TODO(b/270223352): Tracking Bug 126 @JvmField 127 val HIDE_SMARTSPACE_ON_DREAM_OVERLAY = releasedFlag("hide_smartspace_on_dream_overlay") 128 129 // TODO(b/271460958): Tracking Bug 130 @JvmField 131 val SHOW_WEATHER_COMPLICATION_ON_DREAM_OVERLAY = 132 releasedFlag("show_weather_complication_on_dream_overlay") 133 134 // 500 - quick settings 135 136 val PEOPLE_TILE = resourceBooleanFlag(R.bool.flag_conversations, "people_tile") 137 138 @JvmField 139 val QS_USER_DETAIL_SHORTCUT = 140 resourceBooleanFlag( 141 R.bool.flag_lockscreen_qs_user_detail_shortcut, 142 "qs_user_detail_shortcut", 143 ) 144 145 // TODO(b/254512383): Tracking Bug 146 @JvmField 147 val FULL_SCREEN_USER_SWITCHER = 148 resourceBooleanFlag(R.bool.config_enableFullscreenUserSwitcher, "full_screen_user_switcher") 149 150 // TODO(b/244064524): Tracking Bug 151 @JvmField val QS_SECONDARY_DATA_SUB_INFO = releasedFlag("qs_secondary_data_sub_info") 152 153 /** Enables new QS Edit Mode visual refresh */ 154 // TODO(b/269787742): Tracking Bug 155 @JvmField 156 val ENABLE_NEW_QS_EDIT_MODE = unreleasedFlag("enable_new_qs_edit_mode", teamfood = false) 157 158 // 600- status bar 159 160 // TODO(b/291315866): Tracking Bug 161 @JvmField val SIGNAL_CALLBACK_DEPRECATION = releasedFlag("signal_callback_deprecation") 162 163 // TODO(b/311222557): Tracking bug 164 val ROAMING_INDICATOR_VIA_DISPLAY_INFO = releasedFlag("roaming_indicator_via_display_info") 165 166 // TODO(b/308138154): Tracking bug 167 val FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS = 168 releasedFlag("filter_provisioning_network_subscriptions") 169 170 // TODO(b/293863612): Tracking Bug 171 @JvmField 172 val INCOMPATIBLE_CHARGING_BATTERY_ICON = releasedFlag("incompatible_charging_battery_icon") 173 174 // TODO(b/290676905): Tracking Bug 175 val NEW_SHADE_CARRIER_GROUP_MOBILE_ICONS = releasedFlag("new_shade_carrier_group_mobile_icons") 176 177 // 800 - general visual/theme 178 @JvmField val MONET = resourceBooleanFlag(R.bool.flag_monet, "monet") 179 180 // 801 - region sampling 181 // TODO(b/254512848): Tracking Bug 182 val REGION_SAMPLING = unreleasedFlag("region_sampling") 183 184 // 803 - screen contents translation 185 // TODO(b/254513187): Tracking Bug 186 val SCREEN_CONTENTS_TRANSLATION = unreleasedFlag("screen_contents_translation") 187 188 // 804 - monochromatic themes 189 @JvmField val MONOCHROMATIC_THEME = releasedFlag("monochromatic") 190 191 // TODO(b/293380347): Tracking Bug 192 @JvmField val COLOR_FIDELITY = unreleasedFlag("color_fidelity") 193 194 // TODO(b/254512654): Tracking Bug 195 @JvmField val DREAM_MEDIA_COMPLICATION = unreleasedFlag("dream_media_complication") 196 197 // TODO(b/254512673): Tracking Bug 198 @JvmField val DREAM_MEDIA_TAP_TO_OPEN = unreleasedFlag("dream_media_tap_to_open") 199 200 // TODO(b/266157412): Tracking Bug 201 val MEDIA_RETAIN_SESSIONS = unreleasedFlag("media_retain_sessions") 202 203 // 1000 - dock 204 val SIMULATE_DOCK_THROUGH_CHARGING = releasedFlag("simulate_dock_through_charging") 205 206 // TODO(b/273509374): Tracking Bug 207 @JvmField 208 val ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS = releasedFlag("always_show_home_controls_on_dreams") 209 210 // 1100 - windowing 211 @Keep 212 @JvmField 213 val WM_ENABLE_SHELL_TRANSITIONS = 214 sysPropBooleanFlag("persist.wm.debug.shell_transit", default = true) 215 216 // TODO(b/293252410) : Tracking Bug 217 @JvmField val LOCKSCREEN_ENABLE_LANDSCAPE = unreleasedFlag("lockscreen.enable_landscape") 218 219 // 1200 - predictive back 220 @Keep 221 @JvmField 222 val WM_ENABLE_PREDICTIVE_BACK_ANIM = 223 sysPropBooleanFlag("persist.wm.debug.predictive_back_anim", default = true) 224 225 @Keep 226 @JvmField 227 val WM_ALWAYS_ENFORCE_PREDICTIVE_BACK = 228 sysPropBooleanFlag("persist.wm.debug.predictive_back_always_enforce", default = false) 229 230 // TODO(b/251205791): Tracking Bug 231 @JvmField val SCREENSHOT_APP_CLIPS = releasedFlag("screenshot_app_clips") 232 233 // 1400 - columbus 234 // TODO(b/254512756): Tracking Bug 235 val QUICK_TAP_IN_PCC = releasedFlag("quick_tap_in_pcc") 236 237 // TODO(b/261979569): Tracking Bug 238 val QUICK_TAP_FLOW_FRAMEWORK = unreleasedFlag("quick_tap_flow_framework", teamfood = false) 239 240 // 1500 - chooser aka sharesheet 241 242 // 1700 - clipboard 243 @JvmField val CLIPBOARD_REMOTE_BEHAVIOR = releasedFlag("clipboard_remote_behavior") 244 // TODO(b/278714186) Tracking Bug 245 @JvmField 246 val CLIPBOARD_IMAGE_TIMEOUT = unreleasedFlag("clipboard_image_timeout", teamfood = true) 247 248 // 1900 249 @JvmField val NOTE_TASKS = releasedFlag("keycode_flag") 250 251 // 2200 - biometrics (udfps, sfps, BiometricPrompt, etc.) 252 253 // 2300 - stylus 254 @JvmField val TRACK_STYLUS_EVER_USED = releasedFlag("track_stylus_ever_used") 255 @JvmField val ENABLE_STYLUS_CHARGING_UI = releasedFlag("enable_stylus_charging_ui") 256 @JvmField 257 val ENABLE_USI_BATTERY_NOTIFICATIONS = releasedFlag("enable_usi_battery_notifications") 258 @JvmField val ENABLE_STYLUS_EDUCATION = releasedFlag("enable_stylus_education") 259 260 // 2400 - performance tools and debugging info 261 // TODO(b/238923086): Tracking Bug 262 @JvmField 263 val WARN_ON_BLOCKING_BINDER_TRANSACTIONS = 264 unreleasedFlag("warn_on_blocking_binder_transactions") 265 266 // TODO(b/298380520): Tracking Bug 267 @JvmField 268 val USER_TRACKER_BACKGROUND_CALLBACKS = unreleasedFlag("user_tracker_background_callbacks") 269 270 // 2700 - unfold transitions 271 // TODO(b/265764985): Tracking Bug 272 @Keep 273 @JvmField 274 val ENABLE_DARK_VIGNETTE_WHEN_FOLDING = unreleasedFlag("enable_dark_vignette_when_folding") 275 276 // TODO(b/265764985): Tracking Bug 277 @Keep 278 @JvmField 279 val ENABLE_UNFOLD_STATUS_BAR_ANIMATIONS = unreleasedFlag("enable_unfold_status_bar_animations") 280 281 // TODO(b/316157842): Tracking Bug 282 // Adds extra delay to notifications measure 283 @Keep 284 @JvmField 285 val ENABLE_NOTIFICATIONS_SIMULATE_SLOW_MEASURE = 286 unreleasedFlag("enable_notifications_simulate_slow_measure") 287 288 // TODO(b259590361): Tracking bug 289 val EXPERIMENTAL_FLAG = unreleasedFlag("exp_flag_release") 290 291 // 2600 - keyboard 292 // TODO(b/259352579): Tracking Bug 293 @JvmField val SHORTCUT_LIST_SEARCH_LAYOUT = releasedFlag("shortcut_list_search_layout") 294 295 // TODO(b/259428678): Tracking Bug 296 @JvmField val KEYBOARD_BACKLIGHT_INDICATOR = releasedFlag("keyboard_backlight_indicator") 297 298 // TODO(b/277201412): Tracking Bug 299 @JvmField 300 val SPLIT_SHADE_SUBPIXEL_OPTIMIZATION = unreleasedFlag("split_shade_subpixel_optimization") 301 302 // TODO(b/278761837): Tracking Bug 303 @JvmField val USE_NEW_ACTIVITY_STARTER = releasedFlag(name = "use_new_activity_starter") 304 305 // 2900 - Zero Jank fixes. Naming convention is: zj_<bug number>_<cuj name> 306 307 // TODO(b/283447257): Tracking bug 308 @JvmField 309 val BIGPICTURE_NOTIFICATION_LAZY_LOADING = 310 unreleasedFlag("bigpicture_notification_lazy_loading") 311 312 // TODO(b/283740863): Tracking Bug 313 @JvmField val ENABLE_NEW_PRIVACY_DIALOG = releasedFlag("enable_new_privacy_dialog") 314 315 // TODO(b/302144438): Tracking Bug 316 @JvmField 317 val DECOUPLE_REMOTE_INPUT_DELEGATE_AND_CALLBACK_UPDATE = 318 unreleasedFlag("decouple_remote_input_delegate_and_callback_update") 319 320 /** TODO(b/296223317): Enables the new keyguard presentation containing a clock. */ 321 @JvmField 322 val ENABLE_CLOCK_KEYGUARD_PRESENTATION = releasedFlag("enable_clock_keyguard_presentation") 323 324 /** Enable the share wifi button in Quick Settings internet dialog. */ 325 @JvmField val SHARE_WIFI_QS_BUTTON = releasedFlag("share_wifi_qs_button") 326 327 /** Enable showing a dialog when clicking on Quick Settings bluetooth tile. */ 328 @JvmField val BLUETOOTH_QS_TILE_DIALOG = releasedFlag("bluetooth_qs_tile_dialog") 329 330 // TODO(b/300995746): Tracking Bug 331 /** A resource flag for whether the communal service is enabled. */ 332 @JvmField 333 val COMMUNAL_SERVICE_ENABLED = 334 resourceBooleanFlag(R.bool.config_communalServiceEnabled, "communal_service_enabled") 335 } 336