• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 android.provider.DeviceConfig
19 import com.android.internal.annotations.Keep
20 import com.android.systemui.R
21 import com.android.systemui.flags.FlagsFactory.releasedFlag
22 import com.android.systemui.flags.FlagsFactory.resourceBooleanFlag
23 import com.android.systemui.flags.FlagsFactory.sysPropBooleanFlag
24 import com.android.systemui.flags.FlagsFactory.unreleasedFlag
25 
26 /**
27  * List of [Flag] objects for use in SystemUI.
28  *
29  * Flag Ids are integers. Ids must be unique. This is enforced in a unit test. Ids need not be
30  * sequential. Flags can "claim" a chunk of ids for flags in related features with a comment. This
31  * is purely for organizational purposes.
32  *
33  * On public release builds, flags will always return their default value. There is no way to change
34  * their value on release builds.
35  *
36  * See [FeatureFlagsDebug] for instructions on flipping the flags via adb.
37  */
38 object Flags {
39     @JvmField val TEAMFOOD = unreleasedFlag("teamfood")
40 
41     // 100 - notification
42     // TODO(b/297792660): Tracking Bug
43     val ADD_TRANSIENT_HUN_IN_STACK_STATE_ANIMATOR =
44         unreleasedFlag("add_transient_hun_in_stack_state_animator", teamfood = false)
45 
46     // TODO(b/254512751): Tracking Bug
47     val NOTIFICATION_PIPELINE_DEVELOPER_LOGGING =
48         unreleasedFlag("notification_pipeline_developer_logging")
49 
50     // TODO(b/254512732): Tracking Bug
51     @JvmField val NSSL_DEBUG_LINES = unreleasedFlag("nssl_debug_lines")
52 
53     // TODO(b/254512505): Tracking Bug
54     @JvmField val NSSL_DEBUG_REMOVE_ANIMATION = unreleasedFlag("nssl_debug_remove_animation")
55 
56     // TODO(b/254512624): Tracking Bug
57     @JvmField
58     val NOTIFICATION_DRAG_TO_CONTENTS =
59         resourceBooleanFlag(
60             R.bool.config_notificationToContents,
61             "notification_drag_to_contents"
62         )
63 
64     // TODO(b/254512538): Tracking Bug
65     val INSTANT_VOICE_REPLY = unreleasedFlag("instant_voice_reply")
66 
67     /**
68      * This flag controls whether we register a listener for StatsD notification memory reports.
69      * For statsd to actually call the listener however, a server-side toggle needs to be
70      * enabled as well.
71      */
72     val NOTIFICATION_MEMORY_LOGGING_ENABLED =
73             releasedFlag("notification_memory_logging_enabled")
74 
75     // TODO(b/260335638): Tracking Bug
76     @JvmField
77     val NOTIFICATION_INLINE_REPLY_ANIMATION =
78         unreleasedFlag("notification_inline_reply_animation")
79 
80     /** Makes sure notification panel is updated before the user switch is complete. */
81     // TODO(b/278873737): Tracking Bug
82     @JvmField
83     val LOAD_NOTIFICATIONS_BEFORE_THE_USER_SWITCH_IS_COMPLETE =
84         releasedFlag("load_notifications_before_the_user_switch_is_complete")
85 
86     // TODO(b/277338665): Tracking Bug
87     @JvmField
88     val NOTIFICATION_SHELF_REFACTOR =
89         unreleasedFlag("notification_shelf_refactor", teamfood = true)
90 
91     // TODO(b/290787599): Tracking Bug
92     @JvmField
93     val NOTIFICATION_ICON_CONTAINER_REFACTOR =
94         unreleasedFlag("notification_icon_container_refactor")
95 
96     // TODO(b/288326013): Tracking Bug
97     @JvmField
98     val NOTIFICATION_ASYNC_HYBRID_VIEW_INFLATION =
99         unreleasedFlag("notification_async_hybrid_view_inflation", teamfood = false)
100 
101     @JvmField
102     val ANIMATED_NOTIFICATION_SHADE_INSETS =
103         releasedFlag("animated_notification_shade_insets")
104 
105     // TODO(b/268005230): Tracking Bug
106     @JvmField
107     val SENSITIVE_REVEAL_ANIM = unreleasedFlag("sensitive_reveal_anim", teamfood = true)
108 
109     // TODO(b/280783617): Tracking Bug
110     @Keep
111     @JvmField
112     val BUILDER_EXTRAS_OVERRIDE =
113         sysPropBooleanFlag(
114             "persist.sysui.notification.builder_extras_override",
115             default = false
116         )
117 
118     /** Only notify group expansion listeners when a change happens. */
119     // TODO(b/292213543): Tracking Bug
120     @JvmField
121     val NOTIFICATION_GROUP_EXPANSION_CHANGE =
122             unreleasedFlag("notification_group_expansion_change")
123 
124     // 200 - keyguard/lockscreen
125     // ** Flag retired **
126     // public static final BooleanFlag KEYGUARD_LAYOUT =
127     //         new BooleanFlag(true);
128 
129     // TODO(b/254512750): Tracking Bug
130     val NEW_UNLOCK_SWIPE_ANIMATION = releasedFlag("new_unlock_swipe_animation")
131     val CHARGING_RIPPLE = resourceBooleanFlag(R.bool.flag_charging_ripple, "charging_ripple")
132 
133     // TODO(b/254512281): Tracking Bug
134     @JvmField
135     val BOUNCER_USER_SWITCHER =
136         resourceBooleanFlag(R.bool.config_enableBouncerUserSwitcher, "bouncer_user_switcher")
137 
138     // TODO(b/254512676): Tracking Bug
139     @JvmField
140     val LOCKSCREEN_CUSTOM_CLOCKS =
141         resourceBooleanFlag(
142             R.bool.config_enableLockScreenCustomClocks,
143             "lockscreen_custom_clocks"
144         )
145 
146     // TODO(b/275694445): Tracking Bug
147     @JvmField
148     val LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING =
149         releasedFlag("lockscreen_without_secure_lock_when_dreaming")
150 
151     // TODO(b/286092087): Tracking Bug
152     @JvmField
153     val ENABLE_SYSTEM_UI_DREAM_CONTROLLER = unreleasedFlag("enable_system_ui_dream_controller")
154 
155     // TODO(b/288287730): Tracking Bug
156     @JvmField
157     val ENABLE_SYSTEM_UI_DREAM_HOSTING = unreleasedFlag("enable_system_ui_dream_hosting")
158 
159     /**
160      * Whether the clock on a wide lock screen should use the new "stepping" animation for moving
161      * the digits when the clock moves.
162      */
163     @JvmField val STEP_CLOCK_ANIMATION = releasedFlag("step_clock_animation")
164 
165     /**
166      * Migration from the legacy isDozing/dozeAmount paths to the new KeyguardTransitionRepository
167      * will occur in stages. This is one stage of many to come.
168      */
169     // TODO(b/255607168): Tracking Bug
170     @JvmField val DOZING_MIGRATION_1 = unreleasedFlag("dozing_migration_1")
171 
172     /**
173      * Migrates control of the LightRevealScrim's reveal effect and amount from legacy code to the
174      * new KeyguardTransitionRepository.
175      */
176     // TODO(b/281655028): Tracking bug
177     @JvmField
178     val LIGHT_REVEAL_MIGRATION = unreleasedFlag("light_reveal_migration", teamfood = false)
179 
180     /** Flag to control the migration of face auth to modern architecture. */
181     // TODO(b/262838215): Tracking bug
182     @JvmField val FACE_AUTH_REFACTOR = unreleasedFlag("face_auth_refactor")
183 
184     /** Flag to control the revamp of keyguard biometrics progress animation */
185     // TODO(b/244313043): Tracking bug
186     @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag("biometrics_animation_revamp")
187 
188     // TODO(b/262780002): Tracking Bug
189     @JvmField val REVAMPED_WALLPAPER_UI = releasedFlag("revamped_wallpaper_ui")
190 
191     // flag for controlling auto pin confirmation and material u shapes in bouncer
192     @JvmField
193     val AUTO_PIN_CONFIRMATION = releasedFlag("auto_pin_confirmation", "auto_pin_confirmation")
194 
195     // TODO(b/262859270): Tracking Bug
196     @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag("falsing_off_for_unfolded")
197 
198     /** Enables code to show contextual loyalty cards in wallet entrypoints */
199     // TODO(b/294110497): Tracking Bug
200     @JvmField
201     val ENABLE_WALLET_CONTEXTUAL_LOYALTY_CARDS =
202         releasedFlag("enable_wallet_contextual_loyalty_cards")
203 
204     // TODO(b/242908637): Tracking Bug
205     @JvmField val WALLPAPER_FULLSCREEN_PREVIEW = releasedFlag("wallpaper_fullscreen_preview")
206 
207     /** Whether the long-press gesture to open wallpaper picker is enabled. */
208     // TODO(b/266242192): Tracking Bug
209     @JvmField
210     val LOCK_SCREEN_LONG_PRESS_ENABLED = releasedFlag("lock_screen_long_press_enabled")
211 
212     /** Enables UI updates for AI wallpapers in the wallpaper picker. */
213     // TODO(b/267722622): Tracking Bug
214     @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag("wallpaper_picker_ui_for_aiwp")
215 
216     /** Whether to use a new data source for intents to run on keyguard dismissal. */
217     // TODO(b/275069969): Tracking bug.
218     @JvmField
219     val REFACTOR_KEYGUARD_DISMISS_INTENT = unreleasedFlag("refactor_keyguard_dismiss_intent")
220 
221     /** Whether to allow long-press on the lock screen to directly open wallpaper picker. */
222     // TODO(b/277220285): Tracking bug.
223     @JvmField
224     val LOCK_SCREEN_LONG_PRESS_DIRECT_TO_WPP =
225         unreleasedFlag("lock_screen_long_press_directly_opens_wallpaper_picker")
226 
227     /** Whether page transition animations in the wallpaper picker are enabled */
228     // TODO(b/291710220): Tracking bug.
229     @JvmField
230     val WALLPAPER_PICKER_PAGE_TRANSITIONS =
231         unreleasedFlag("wallpaper_picker_page_transitions")
232 
233     /** Add "Apply" button to wall paper picker's grid preview page. */
234     // TODO(b/294866904): Tracking bug.
235     @JvmField
236     val WALLPAPER_PICKER_GRID_APPLY_BUTTON =
237             unreleasedFlag("wallpaper_picker_grid_apply_button")
238 
239     /** Whether to run the new udfps keyguard refactor code. */
240     // TODO(b/279440316): Tracking bug.
241     @JvmField
242     val REFACTOR_UDFPS_KEYGUARD_VIEWS = unreleasedFlag("refactor_udfps_keyguard_views")
243 
244     /** Provide new auth messages on the bouncer. */
245     // TODO(b/277961132): Tracking bug.
246     @JvmField val REVAMPED_BOUNCER_MESSAGES = unreleasedFlag("revamped_bouncer_messages")
247 
248     /** Whether to delay showing bouncer UI when face auth or active unlock are enrolled. */
249     // TODO(b/279794160): Tracking bug.
250     @JvmField val DELAY_BOUNCER = releasedFlag("delay_bouncer")
251 
252     /** Keyguard Migration */
253 
254     /**
255      * Migrate the bottom area to the new keyguard root view. Because there is no such thing as a
256      * "bottom area" after this, this also breaks it up into many smaller, modular pieces.
257      */
258     // TODO(b/290652751): Tracking bug.
259     @JvmField
260     val MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA =
261         unreleasedFlag("migrate_split_keyguard_bottom_area")
262 
263     /** Whether to listen for fingerprint authentication over keyguard occluding activities. */
264     // TODO(b/283260512): Tracking bug.
265     @JvmField val FP_LISTEN_OCCLUDING_APPS = releasedFlag("fp_listen_occluding_apps")
266 
267     /** Flag meant to guard the talkback fix for the KeyguardIndicationTextView */
268     // TODO(b/286563884): Tracking bug
269     @JvmField val KEYGUARD_TALKBACK_FIX = releasedFlag("keyguard_talkback_fix")
270 
271     // TODO(b/287268101): Tracking bug.
272     @JvmField val TRANSIT_CLOCK = releasedFlag("lockscreen_custom_transit_clock")
273 
274     /** Migrate the lock icon view to the new keyguard root view. */
275     // TODO(b/286552209): Tracking bug.
276     @JvmField val MIGRATE_LOCK_ICON = unreleasedFlag("migrate_lock_icon")
277 
278     // TODO(b/288276738): Tracking bug.
279     @JvmField val WIDGET_ON_KEYGUARD = unreleasedFlag("widget_on_keyguard")
280 
281     /** Migrate the NSSL to the a sibling to both the panel and keyguard root view. */
282     // TODO(b/288074305): Tracking bug.
283     @JvmField val MIGRATE_NSSL = unreleasedFlag("migrate_nssl")
284 
285     /** Migrate the status view from the notification panel to keyguard root view. */
286     // TODO(b/291767565): Tracking bug.
287     @JvmField val MIGRATE_KEYGUARD_STATUS_VIEW = unreleasedFlag("migrate_keyguard_status_view")
288 
289     /** Enables preview loading animation in the wallpaper picker. */
290     // TODO(b/274443705): Tracking Bug
291     @JvmField
292     val WALLPAPER_PICKER_PREVIEW_ANIMATION = releasedFlag("wallpaper_picker_preview_animation")
293 
294     /** Stop running face auth when the display state changes to OFF. */
295     // TODO(b/294221702): Tracking bug.
296     @JvmField val STOP_FACE_AUTH_ON_DISPLAY_OFF = resourceBooleanFlag(
297             R.bool.flag_stop_face_auth_on_display_off, "stop_face_auth_on_display_off")
298 
299     /** Flag to disable the face scanning animation pulsing. */
300     // TODO(b/295245791): Tracking bug.
301     @JvmField val STOP_PULSING_FACE_SCANNING_ANIMATION = resourceBooleanFlag(
302             R.bool.flag_stop_pulsing_face_scanning_animation,
303             "stop_pulsing_face_scanning_animation")
304 
305     /**
306      * TODO(b/278086361): Tracking bug
307      * Complete rewrite of the interactions between System UI and Window Manager involving keyguard
308      * state. When enabled, calls to ActivityTaskManagerService from System UI will exclusively
309      * occur from [WmLockscreenVisibilityManager] rather than the legacy KeyguardViewMediator.
310      *
311      * This flag is under development; some types of unlock may not animate properly if you enable
312      * it.
313      */
314     @JvmField
315     val KEYGUARD_WM_STATE_REFACTOR: UnreleasedFlag =
316             unreleasedFlag("keyguard_wm_state_refactor")
317 
318     // 300 - power menu
319     // TODO(b/254512600): Tracking Bug
320     @JvmField val POWER_MENU_LITE = releasedFlag("power_menu_lite")
321 
322     // 400 - smartspace
323 
324     // TODO(b/254513100): Tracking Bug
325     val SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED =
326         releasedFlag("smartspace_shared_element_transition_enabled")
327 
328     // TODO(b/258517050): Clean up after the feature is launched.
329     @JvmField
330     val SMARTSPACE_DATE_WEATHER_DECOUPLED =
331         sysPropBooleanFlag("persist.sysui.ss.dw_decoupled", default = true)
332 
333     // TODO(b/270223352): Tracking Bug
334     @JvmField
335     val HIDE_SMARTSPACE_ON_DREAM_OVERLAY = releasedFlag("hide_smartspace_on_dream_overlay")
336 
337     // TODO(b/271460958): Tracking Bug
338     @JvmField
339     val SHOW_WEATHER_COMPLICATION_ON_DREAM_OVERLAY =
340         releasedFlag("show_weather_complication_on_dream_overlay")
341 
342     // 500 - quick settings
343 
344     val PEOPLE_TILE = resourceBooleanFlag(R.bool.flag_conversations, "people_tile")
345 
346     @JvmField
347     val QS_USER_DETAIL_SHORTCUT =
348         resourceBooleanFlag(
349             R.bool.flag_lockscreen_qs_user_detail_shortcut,
350             "qs_user_detail_shortcut"
351         )
352 
353     @JvmField
354     val QS_PIPELINE_NEW_HOST = unreleasedFlag("qs_pipeline_new_host", teamfood = true)
355 
356     // TODO(b/278068252): Tracking Bug
357     @JvmField
358     val QS_PIPELINE_AUTO_ADD = unreleasedFlag("qs_pipeline_auto_add", teamfood = false)
359 
360     // TODO(b/254512383): Tracking Bug
361     @JvmField
362     val FULL_SCREEN_USER_SWITCHER =
363         resourceBooleanFlag(
364             R.bool.config_enableFullscreenUserSwitcher,
365             "full_screen_user_switcher"
366         )
367 
368     // TODO(b/244064524): Tracking Bug
369     @JvmField val QS_SECONDARY_DATA_SUB_INFO = releasedFlag("qs_secondary_data_sub_info")
370 
371     /** Enables Font Scaling Quick Settings tile */
372     // TODO(b/269341316): Tracking Bug
373     @JvmField val ENABLE_FONT_SCALING_TILE = releasedFlag("enable_font_scaling_tile")
374 
375     /** Enables new QS Edit Mode visual refresh */
376     // TODO(b/269787742): Tracking Bug
377     @JvmField
378     val ENABLE_NEW_QS_EDIT_MODE = unreleasedFlag("enable_new_qs_edit_mode", teamfood = false)
379 
380     // 600- status bar
381 
382     // TODO(b/291315866): Tracking Bug
383     @JvmField val SIGNAL_CALLBACK_DEPRECATION = unreleasedFlag("signal_callback_deprecation")
384 
385     // TODO(b/265892345): Tracking Bug
386     val PLUG_IN_STATUS_BAR_CHIP = releasedFlag("plug_in_status_bar_chip")
387 
388     // TODO(b/280426085): Tracking Bug
389     @JvmField val NEW_BLUETOOTH_REPOSITORY = releasedFlag("new_bluetooth_repository")
390 
391     // TODO(b/292533677): Tracking Bug
392     val WIFI_TRACKER_LIB_FOR_WIFI_ICON =
393         unreleasedFlag("wifi_tracker_lib_for_wifi_icon", teamfood = true)
394 
395     // TODO(b/293863612): Tracking Bug
396     @JvmField val INCOMPATIBLE_CHARGING_BATTERY_ICON =
397         releasedFlag("incompatible_charging_battery_icon")
398 
399     // TODO(b/293585143): Tracking Bug
400     val INSTANT_TETHER = unreleasedFlag("instant_tether")
401 
402     // TODO(b/294588085): Tracking Bug
403     val WIFI_SECONDARY_NETWORKS = releasedFlag("wifi_secondary_networks")
404 
405     // TODO(b/290676905): Tracking Bug
406     val NEW_SHADE_CARRIER_GROUP_MOBILE_ICONS =
407         unreleasedFlag("new_shade_carrier_group_mobile_icons")
408 
409     // 700 - dialer/calls
410     // TODO(b/254512734): Tracking Bug
411     val ONGOING_CALL_STATUS_BAR_CHIP = releasedFlag("ongoing_call_status_bar_chip")
412 
413     // TODO(b/254512681): Tracking Bug
414     val ONGOING_CALL_IN_IMMERSIVE = releasedFlag("ongoing_call_in_immersive")
415 
416     // TODO(b/254512753): Tracking Bug
417     val ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = releasedFlag("ongoing_call_in_immersive_chip_tap")
418 
419     // 800 - general visual/theme
420     @JvmField val MONET = resourceBooleanFlag(R.bool.flag_monet, "monet")
421 
422     // 801 - region sampling
423     // TODO(b/254512848): Tracking Bug
424     val REGION_SAMPLING = unreleasedFlag("region_sampling")
425 
426     // 803 - screen contents translation
427     // TODO(b/254513187): Tracking Bug
428     val SCREEN_CONTENTS_TRANSLATION = unreleasedFlag("screen_contents_translation")
429 
430     // 804 - monochromatic themes
431     @JvmField val MONOCHROMATIC_THEME = releasedFlag("monochromatic")
432 
433     // TODO(b/293380347): Tracking Bug
434     @JvmField val COLOR_FIDELITY = unreleasedFlag("color_fidelity")
435 
436     // 900 - media
437     // TODO(b/254512697): Tracking Bug
438     val MEDIA_TAP_TO_TRANSFER = releasedFlag("media_tap_to_transfer")
439 
440     // TODO(b/254512502): Tracking Bug
441     val MEDIA_SESSION_ACTIONS = unreleasedFlag("media_session_actions")
442 
443     // TODO(b/254512654): Tracking Bug
444     @JvmField val DREAM_MEDIA_COMPLICATION = unreleasedFlag("dream_media_complication")
445 
446     // TODO(b/254512673): Tracking Bug
447     @JvmField val DREAM_MEDIA_TAP_TO_OPEN = unreleasedFlag("dream_media_tap_to_open")
448 
449     // TODO(b/254513168): Tracking Bug
450     @JvmField val UMO_SURFACE_RIPPLE = releasedFlag("umo_surface_ripple")
451 
452     // TODO(b/261734857): Tracking Bug
453     @JvmField val UMO_TURBULENCE_NOISE = releasedFlag("umo_turbulence_noise")
454 
455     // TODO(b/263272731): Tracking Bug
456     val MEDIA_TTT_RECEIVER_SUCCESS_RIPPLE = releasedFlag("media_ttt_receiver_success_ripple")
457 
458     // TODO(b/266157412): Tracking Bug
459     val MEDIA_RETAIN_SESSIONS = unreleasedFlag("media_retain_sessions")
460 
461     // TODO(b/267007629): Tracking Bug
462     val MEDIA_RESUME_PROGRESS = releasedFlag("media_resume_progress")
463 
464     // TODO(b/267166152) : Tracking Bug
465     val MEDIA_RETAIN_RECOMMENDATIONS = unreleasedFlag("media_retain_recommendations")
466 
467     // TODO(b/270437894): Tracking Bug
468     val MEDIA_REMOTE_RESUME = unreleasedFlag("media_remote_resume")
469 
470     // 1000 - dock
471     val SIMULATE_DOCK_THROUGH_CHARGING = releasedFlag("simulate_dock_through_charging")
472 
473     // TODO(b/254512758): Tracking Bug
474     @JvmField val ROUNDED_BOX_RIPPLE = releasedFlag("rounded_box_ripple")
475 
476     // TODO(b/273509374): Tracking Bug
477     @JvmField
478     val ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS =
479         releasedFlag("always_show_home_controls_on_dreams")
480 
481     // 1100 - windowing
482     @Keep
483     @JvmField
484     val WM_ENABLE_SHELL_TRANSITIONS =
485         sysPropBooleanFlag("persist.wm.debug.shell_transit", default = true)
486 
487     // TODO(b/254513207): Tracking Bug
488     @Keep
489     @JvmField
490     val WM_ENABLE_PARTIAL_SCREEN_SHARING =
491         unreleasedFlag(
492             name = "record_task_content",
493             namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER,
494             teamfood = true
495         )
496 
497     // TODO(b/254512674): Tracking Bug
498     @Keep
499     @JvmField
500     val HIDE_NAVBAR_WINDOW =
501         sysPropBooleanFlag("persist.wm.debug.hide_navbar_window", default = false)
502 
503     @Keep
504     @JvmField
505     val WM_DESKTOP_WINDOWING =
506         sysPropBooleanFlag("persist.wm.debug.desktop_mode", default = false)
507 
508     @Keep
509     @JvmField
510     val WM_CAPTION_ON_SHELL =
511         sysPropBooleanFlag("persist.wm.debug.caption_on_shell", default = true)
512 
513     // TODO(b/256873975): Tracking Bug
514     @JvmField
515     @Keep
516     val WM_BUBBLE_BAR = sysPropBooleanFlag("persist.wm.debug.bubble_bar", default = false)
517 
518     // TODO(b/260271148): Tracking bug
519     @Keep
520     @JvmField
521     val WM_DESKTOP_WINDOWING_2 =
522         sysPropBooleanFlag("persist.wm.debug.desktop_mode_2", default = false)
523 
524     // TODO(b/254513207): Tracking Bug to delete
525     @Keep
526     @JvmField
527     val WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES =
528         unreleasedFlag(
529             name = "screen_record_enterprise_policies",
530             namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER,
531             teamfood = false
532         )
533 
534     // TODO(b/293252410) : Tracking Bug
535     @JvmField
536     val LOCKSCREEN_ENABLE_LANDSCAPE =
537             unreleasedFlag("lockscreen.enable_landscape")
538 
539     // TODO(b/273443374): Tracking Bug
540     @Keep
541     @JvmField
542     val LOCKSCREEN_LIVE_WALLPAPER =
543         sysPropBooleanFlag("persist.wm.debug.lockscreen_live_wallpaper", default = true)
544 
545     // TODO(b/281648899): Tracking bug
546     @Keep
547     @JvmField
548     val WALLPAPER_MULTI_CROP =
549         sysPropBooleanFlag("persist.wm.debug.wallpaper_multi_crop", default = false)
550 
551     // TODO(b/290220798): Tracking Bug
552     @Keep
553     @JvmField
554     val ENABLE_PIP2_IMPLEMENTATION =
555         sysPropBooleanFlag("persist.wm.debug.enable_pip2_implementation", default = false)
556 
557     // 1200 - predictive back
558     @Keep
559     @JvmField
560     val WM_ENABLE_PREDICTIVE_BACK =
561         sysPropBooleanFlag("persist.wm.debug.predictive_back", default = true)
562 
563     @Keep
564     @JvmField
565     val WM_ENABLE_PREDICTIVE_BACK_ANIM =
566         sysPropBooleanFlag("persist.wm.debug.predictive_back_anim", default = true)
567 
568     @Keep
569     @JvmField
570     val WM_ALWAYS_ENFORCE_PREDICTIVE_BACK =
571         sysPropBooleanFlag("persist.wm.debug.predictive_back_always_enforce", default = false)
572 
573     // TODO(b/254512728): Tracking Bug
574     @JvmField val NEW_BACK_AFFORDANCE = releasedFlag("new_back_affordance")
575 
576     // TODO(b/255854141): Tracking Bug
577     @JvmField
578     val WM_ENABLE_PREDICTIVE_BACK_SYSUI =
579         unreleasedFlag("persist.wm.debug.predictive_back_sysui_enable", teamfood = true)
580 
581     // TODO(b/270987164): Tracking Bug
582     @JvmField val TRACKPAD_GESTURE_FEATURES = releasedFlag("trackpad_gesture_features")
583 
584     // TODO(b/263826204): Tracking Bug
585     @JvmField
586     val WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM =
587         unreleasedFlag("persist.wm.debug.predictive_back_bouncer_anim", teamfood = true)
588 
589     // TODO(b/238475428): Tracking Bug
590     @JvmField
591     val WM_SHADE_ALLOW_BACK_GESTURE =
592         sysPropBooleanFlag("persist.wm.debug.shade_allow_back_gesture", default = false)
593 
594     // TODO(b/238475428): Tracking Bug
595     @JvmField
596     val WM_SHADE_ANIMATE_BACK_GESTURE =
597         unreleasedFlag("persist.wm.debug.shade_animate_back_gesture", teamfood = false)
598 
599     // TODO(b/265639042): Tracking Bug
600     @JvmField
601     val WM_ENABLE_PREDICTIVE_BACK_QS_DIALOG_ANIM =
602         unreleasedFlag("persist.wm.debug.predictive_back_qs_dialog_anim", teamfood = true)
603 
604     // TODO(b/273800936): Tracking Bug
605     @JvmField val TRACKPAD_GESTURE_COMMON = releasedFlag("trackpad_gesture_common")
606 
607     // 1300 - screenshots
608     // TODO(b/264916608): Tracking Bug
609     @JvmField val SCREENSHOT_METADATA = unreleasedFlag("screenshot_metadata")
610 
611     // TODO(b/266955521): Tracking bug
612     @JvmField val SCREENSHOT_DETECTION = releasedFlag("screenshot_detection")
613 
614     // TODO(b/251205791): Tracking Bug
615     @JvmField val SCREENSHOT_APP_CLIPS = releasedFlag("screenshot_app_clips")
616 
617     /** TODO(b/295143676): Tracking bug. When enable, captures a screenshot for each display. */
618     @JvmField
619     val MULTI_DISPLAY_SCREENSHOT = unreleasedFlag("multi_display_screenshot")
620 
621     // 1400 - columbus
622     // TODO(b/254512756): Tracking Bug
623     val QUICK_TAP_IN_PCC = releasedFlag("quick_tap_in_pcc")
624 
625     // TODO(b/261979569): Tracking Bug
626     val QUICK_TAP_FLOW_FRAMEWORK =
627         unreleasedFlag("quick_tap_flow_framework", teamfood = false)
628 
629     // 1500 - chooser aka sharesheet
630 
631     // 1700 - clipboard
632     @JvmField val CLIPBOARD_REMOTE_BEHAVIOR = releasedFlag("clipboard_remote_behavior")
633     // TODO(b/278714186) Tracking Bug
634     @JvmField
635     val CLIPBOARD_IMAGE_TIMEOUT = unreleasedFlag("clipboard_image_timeout", teamfood = true)
636     // TODO(b/279405451): Tracking Bug
637     @JvmField
638     val CLIPBOARD_SHARED_TRANSITIONS =
639             unreleasedFlag("clipboard_shared_transitions", teamfood = true)
640 
641     // TODO(b/283300105): Tracking Bug
642     @JvmField val SCENE_CONTAINER = unreleasedFlag("scene_container")
643 
644     // 1900
645     @JvmField val NOTE_TASKS = releasedFlag("keycode_flag")
646 
647     // 2000 - device controls
648     @JvmField val APP_PANELS_ALL_APPS_ALLOWED = releasedFlag("app_panels_all_apps_allowed")
649 
650     // 2200 - biometrics (udfps, sfps, BiometricPrompt, etc.)
651     // TODO(b/259264861): Tracking Bug
652     @JvmField val UDFPS_NEW_TOUCH_DETECTION = releasedFlag("udfps_new_touch_detection")
653     @JvmField val UDFPS_ELLIPSE_DETECTION = releasedFlag("udfps_ellipse_detection")
654     // TODO(b/278622168): Tracking Bug
655     @JvmField val BIOMETRIC_BP_STRONG = releasedFlag("biometric_bp_strong")
656 
657     // 2300 - stylus
658     @JvmField val TRACK_STYLUS_EVER_USED = releasedFlag("track_stylus_ever_used")
659     @JvmField val ENABLE_STYLUS_CHARGING_UI = releasedFlag("enable_stylus_charging_ui")
660     @JvmField
661     val ENABLE_USI_BATTERY_NOTIFICATIONS = releasedFlag("enable_usi_battery_notifications")
662     @JvmField val ENABLE_STYLUS_EDUCATION = releasedFlag("enable_stylus_education")
663 
664     // 2400 - performance tools and debugging info
665     // TODO(b/238923086): Tracking Bug
666     @JvmField
667     val WARN_ON_BLOCKING_BINDER_TRANSACTIONS =
668         unreleasedFlag("warn_on_blocking_binder_transactions")
669 
670     @JvmField
671     val COROUTINE_TRACING =
672         unreleasedFlag("coroutine_tracing")
673 
674     // TODO(b/283071711): Tracking bug
675     @JvmField
676     val TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK =
677         unreleasedFlag("trim_resources_with_background_trim_on_lock")
678 
679     // TODO:(b/283203305): Tracking bug
680     @JvmField val TRIM_FONT_CACHES_AT_UNLOCK = unreleasedFlag("trim_font_caches_on_unlock")
681 
682     // 2700 - unfold transitions
683     // TODO(b/265764985): Tracking Bug
684     @Keep
685     @JvmField
686     val ENABLE_DARK_VIGNETTE_WHEN_FOLDING =
687         unreleasedFlag("enable_dark_vignette_when_folding")
688 
689     // TODO(b/265764985): Tracking Bug
690     @Keep
691     @JvmField
692     val ENABLE_UNFOLD_STATUS_BAR_ANIMATIONS =
693         unreleasedFlag("enable_unfold_status_bar_animations")
694 
695     // TODO(b259590361): Tracking bug
696     val EXPERIMENTAL_FLAG = unreleasedFlag("exp_flag_release")
697 
698     // 2600 - keyboard
699     // TODO(b/259352579): Tracking Bug
700     @JvmField val SHORTCUT_LIST_SEARCH_LAYOUT = releasedFlag("shortcut_list_search_layout")
701 
702     // TODO(b/259428678): Tracking Bug
703     @JvmField val KEYBOARD_BACKLIGHT_INDICATOR = releasedFlag("keyboard_backlight_indicator")
704 
705     // TODO(b/277192623): Tracking Bug
706     @JvmField val KEYBOARD_EDUCATION = unreleasedFlag("keyboard_education", teamfood = false)
707 
708     // TODO(b/277201412): Tracking Bug
709     @JvmField
710     val SPLIT_SHADE_SUBPIXEL_OPTIMIZATION = releasedFlag("split_shade_subpixel_optimization")
711 
712     // TODO(b/288868056): Tracking Bug
713     @JvmField
714     val PARTIAL_SCREEN_SHARING_TASK_SWITCHER = unreleasedFlag("pss_task_switcher")
715 
716     // TODO(b/278761837): Tracking Bug
717     @JvmField val USE_NEW_ACTIVITY_STARTER = releasedFlag(name = "use_new_activity_starter")
718 
719     // 2900 - Zero Jank fixes. Naming convention is: zj_<bug number>_<cuj name>
720 
721     // TODO:(b/285623104): Tracking bug
722     @JvmField
723     val ZJ_285570694_LOCKSCREEN_TRANSITION_FROM_AOD =
724         releasedFlag("zj_285570694_lockscreen_transition_from_aod")
725 
726     // 3000 - dream
727     // TODO(b/285059790) : Tracking Bug
728     @JvmField
729     val LOCKSCREEN_WALLPAPER_DREAM_ENABLED =
730         unreleasedFlag(name = "enable_lockscreen_wallpaper_dream")
731 
732     // TODO(b/283084712): Tracking Bug
733     @JvmField val IMPROVED_HUN_ANIMATIONS = unreleasedFlag("improved_hun_animations")
734 
735     // TODO(b/283447257): Tracking bug
736     @JvmField
737     val BIGPICTURE_NOTIFICATION_LAZY_LOADING =
738         unreleasedFlag("bigpicture_notification_lazy_loading")
739 
740     // TODO(b/292062937): Tracking bug
741     @JvmField
742     val NOTIFICATION_CLEARABLE_REFACTOR =
743             unreleasedFlag("notification_clearable_refactor")
744 
745     // TODO(b/283740863): Tracking Bug
746     @JvmField
747     val ENABLE_NEW_PRIVACY_DIALOG =
748         unreleasedFlag("enable_new_privacy_dialog", teamfood = true)
749 
750     // TODO(b/289573946): Tracking Bug
751     @JvmField val PRECOMPUTED_TEXT = unreleasedFlag("precomputed_text")
752 
753     // 2900 - CentralSurfaces-related flags
754 
755     // TODO(b/285174336): Tracking Bug
756     @JvmField
757     val USE_REPOS_FOR_BOUNCER_SHOWING =
758         unreleasedFlag("use_repos_for_bouncer_showing", teamfood = true)
759 
760     // 3100 - Haptic interactions
761 
762     // TODO(b/290213663): Tracking Bug
763     @JvmField
764     val ONE_WAY_HAPTICS_API_MIGRATION = unreleasedFlag("oneway_haptics_api_migration")
765 
766     /** TODO(b/296223317): Enables the new keyguard presentation containing a clock. */
767     @JvmField
768     val ENABLE_CLOCK_KEYGUARD_PRESENTATION = unreleasedFlag("enable_clock_keyguard_presentation")
769 
770     /** Enable the Compose implementation of the PeopleSpaceActivity. */
771     @JvmField
772     val COMPOSE_PEOPLE_SPACE = unreleasedFlag("compose_people_space")
773 
774     /** Enable the Compose implementation of the Quick Settings footer actions. */
775     @JvmField
776     val COMPOSE_QS_FOOTER_ACTIONS = unreleasedFlag("compose_qs_footer_actions")
777 
778     /** Enable the share wifi button in Quick Settings internet dialog. */
779     @JvmField
780     val SHARE_WIFI_QS_BUTTON = unreleasedFlag("share_wifi_qs_button")
781 
782     /** Enable haptic slider component in the brightness slider */
783     @JvmField
784     val HAPTIC_BRIGHTNESS_SLIDER = unreleasedFlag("haptic_brightness_slider")
785 }
786