• 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(1, "teamfood")
40 
41     // 100 - notification
42     // TODO(b/254512751): Tracking Bug
43     val NOTIFICATION_PIPELINE_DEVELOPER_LOGGING =
44         unreleasedFlag(103, "notification_pipeline_developer_logging")
45 
46     // TODO(b/254512732): Tracking Bug
47     @JvmField val NSSL_DEBUG_LINES = unreleasedFlag(105, "nssl_debug_lines")
48 
49     // TODO(b/254512505): Tracking Bug
50     @JvmField val NSSL_DEBUG_REMOVE_ANIMATION = unreleasedFlag(106, "nssl_debug_remove_animation")
51 
52     // TODO(b/254512624): Tracking Bug
53     @JvmField
54     val NOTIFICATION_DRAG_TO_CONTENTS =
55         resourceBooleanFlag(
56             108,
57             R.bool.config_notificationToContents,
58             "notification_drag_to_contents"
59         )
60 
61     // TODO(b/254512517): Tracking Bug
62     val FSI_REQUIRES_KEYGUARD = releasedFlag(110, "fsi_requires_keyguard")
63 
64     // TODO(b/259130119): Tracking Bug
65     val FSI_ON_DND_UPDATE = releasedFlag(259130119, "fsi_on_dnd_update")
66 
67     // TODO(b/265804648): Tracking Bug
68     @JvmField val DISABLE_FSI = unreleasedFlag(265804648, "disable_fsi")
69 
70     // TODO(b/254512538): Tracking Bug
71     val INSTANT_VOICE_REPLY = unreleasedFlag(111, "instant_voice_reply")
72 
73     // TODO(b/254512425): Tracking Bug
74     val NOTIFICATION_MEMORY_MONITOR_ENABLED =
75         releasedFlag(112, "notification_memory_monitor_enabled")
76 
77     /**
78      * This flag is server-controlled and should stay as [unreleasedFlag] since we never want to
79      * enable it on release builds.
80      */
81     val NOTIFICATION_MEMORY_LOGGING_ENABLED =
82         unreleasedFlag(119, "notification_memory_logging_enabled")
83 
84     // TODO(b/254512731): Tracking Bug
85     @JvmField val NOTIFICATION_DISMISSAL_FADE = releasedFlag(113, "notification_dismissal_fade")
86 
87     @JvmField val USE_ROUNDNESS_SOURCETYPES = releasedFlag(116, "use_roundness_sourcetype")
88 
89     // TODO(b/259217907)
90     @JvmField
91     val NOTIFICATION_GROUP_DISMISSAL_ANIMATION =
92         releasedFlag(259217907, "notification_group_dismissal_animation")
93 
94     // TODO(b/257506350): Tracking Bug
95     @JvmField val FSI_CHROME = unreleasedFlag(117, "fsi_chrome")
96 
97     @JvmField
98     val SIMPLIFIED_APPEAR_FRACTION =
99         unreleasedFlag(259395680, "simplified_appear_fraction", teamfood = true)
100 
101     // TODO(b/257315550): Tracking Bug
102     val NO_HUN_FOR_OLD_WHEN = unreleasedFlag(118, "no_hun_for_old_when", teamfood = true)
103 
104     // TODO(b/260335638): Tracking Bug
105     @JvmField
106     val NOTIFICATION_INLINE_REPLY_ANIMATION =
107         unreleasedFlag(174148361, "notification_inline_reply_animation")
108 
109     val FILTER_UNSEEN_NOTIFS_ON_KEYGUARD =
110         releasedFlag(254647461, "filter_unseen_notifs_on_keyguard", teamfood = true)
111 
112     // TODO(b/263414400): Tracking Bug
113     @JvmField
114     val NOTIFICATION_ANIMATE_BIG_PICTURE = unreleasedFlag(120, "notification_animate_big_picture")
115 
116     @JvmField
117     val ANIMATED_NOTIFICATION_SHADE_INSETS =
118         unreleasedFlag(270682168, "animated_notification_shade_insets", teamfood = true)
119 
120     // TODO(b/268005230): Tracking Bug
121     @JvmField val SENSITIVE_REVEAL_ANIM = unreleasedFlag(268005230, "sensitive_reveal_anim")
122 
123     // 200 - keyguard/lockscreen
124     // ** Flag retired **
125     // public static final BooleanFlag KEYGUARD_LAYOUT =
126     //         new BooleanFlag(200, true);
127 
128     // TODO(b/254512750): Tracking Bug
129     val NEW_UNLOCK_SWIPE_ANIMATION = releasedFlag(202, "new_unlock_swipe_animation")
130     val CHARGING_RIPPLE = resourceBooleanFlag(203, R.bool.flag_charging_ripple, "charging_ripple")
131 
132     // TODO(b/254512281): Tracking Bug
133     @JvmField
134     val BOUNCER_USER_SWITCHER =
135         resourceBooleanFlag(204, R.bool.config_enableBouncerUserSwitcher, "bouncer_user_switcher")
136 
137     // TODO(b/254512676): Tracking Bug
138     @JvmField
139     val LOCKSCREEN_CUSTOM_CLOCKS = unreleasedFlag(207, "lockscreen_custom_clocks")
140 
141     /**
142      * Whether the clock on a wide lock screen should use the new "stepping" animation for moving
143      * the digits when the clock moves.
144      */
145     @JvmField
146     val STEP_CLOCK_ANIMATION = unreleasedFlag(212, "step_clock_animation", teamfood = true)
147 
148     /**
149      * Migration from the legacy isDozing/dozeAmount paths to the new KeyguardTransitionRepository
150      * will occur in stages. This is one stage of many to come.
151      */
152     // TODO(b/255607168): Tracking Bug
153     @JvmField val DOZING_MIGRATION_1 = unreleasedFlag(213, "dozing_migration_1")
154 
155     // TODO(b/252897742): Tracking Bug
156     @JvmField val NEW_ELLIPSE_DETECTION = unreleasedFlag(214, "new_ellipse_detection")
157 
158     // TODO(b/252897742): Tracking Bug
159     @JvmField val NEW_UDFPS_OVERLAY = unreleasedFlag(215, "new_udfps_overlay")
160 
161     /**
162      * Whether to enable the code powering customizable lock screen quick affordances.
163      *
164      * This flag enables any new prebuilt quick affordances as well.
165      */
166     // TODO(b/255618149): Tracking Bug
167     @JvmField
168     val CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES =
169         unreleasedFlag(216, "customizable_lock_screen_quick_affordances", teamfood = true)
170 
171     /**
172      * Migrates control of the LightRevealScrim's reveal effect and amount from legacy code to the
173      * new KeyguardTransitionRepository.
174      */
175     @JvmField
176     val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false)
177 
178     /**
179      * Whether to use the new alternate bouncer architecture, a refactor of and eventual replacement
180      * of the Alternate/Authentication Bouncer. No visual UI changes.
181      */
182     // TODO(b/260619425): Tracking Bug
183     @JvmField val MODERN_ALTERNATE_BOUNCER = releasedFlag(219, "modern_alternate_bouncer")
184 
185     /** Flag to control the migration of face auth to modern architecture. */
186     // TODO(b/262838215): Tracking bug
187     @JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor")
188 
189     /** Flag to control the revamp of keyguard biometrics progress animation */
190     // TODO(b/244313043): Tracking bug
191     @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag(221, "biometrics_animation_revamp")
192 
193     // TODO(b/262780002): Tracking Bug
194     @JvmField
195     val REVAMPED_WALLPAPER_UI = unreleasedFlag(222, "revamped_wallpaper_ui", teamfood = true)
196 
197     // flag for controlling auto pin confirmation and material u shapes in bouncer
198     @JvmField
199     val AUTO_PIN_CONFIRMATION =
200         unreleasedFlag(224, "auto_pin_confirmation", "auto_pin_confirmation")
201 
202     // TODO(b/262859270): Tracking Bug
203     @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag(225, "falsing_off_for_unfolded")
204 
205     /** Enables code to show contextual loyalty cards in wallet entrypoints */
206     // TODO(b/247587924): Tracking Bug
207     @JvmField
208     val ENABLE_WALLET_CONTEXTUAL_LOYALTY_CARDS =
209         unreleasedFlag(226, "enable_wallet_contextual_loyalty_cards", teamfood = false)
210 
211     // TODO(b/242908637): Tracking Bug
212     @JvmField val WALLPAPER_FULLSCREEN_PREVIEW = releasedFlag(227, "wallpaper_fullscreen_preview")
213 
214     /** Whether the long-press gesture to open wallpaper picker is enabled. */
215     // TODO(b/266242192): Tracking Bug
216     @JvmField
217     val LOCK_SCREEN_LONG_PRESS_ENABLED =
218         unreleasedFlag(
219             228,
220             "lock_screen_long_press_enabled",
221             teamfood = true,
222         )
223 
224     /** Enables UI updates for AI wallpapers in the wallpaper picker. */
225     // TODO(b/267722622): Tracking Bug
226     @JvmField
227     val WALLPAPER_PICKER_UI_FOR_AIWP =
228             releasedFlag(
229                     229,
230                     "wallpaper_picker_ui_for_aiwp"
231             )
232 
233     /** Whether to inflate the bouncer view on a background thread. */
234     // TODO(b/272091103): Tracking Bug
235     @JvmField
236     val ASYNC_INFLATE_BOUNCER = unreleasedFlag(229, "async_inflate_bouncer", teamfood = false)
237 
238     /** Whether to inflate the bouncer view on a background thread. */
239     // TODO(b/273341787): Tracking Bug
240     @JvmField
241     val PREVENT_BYPASS_KEYGUARD = unreleasedFlag(230, "prevent_bypass_keyguard")
242 
243     // 300 - power menu
244     // TODO(b/254512600): Tracking Bug
245     @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite")
246 
247     // 400 - smartspace
248 
249     // TODO(b/254513100): Tracking Bug
250     val SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED =
251         releasedFlag(401, "smartspace_shared_element_transition_enabled")
252 
253     // TODO(b/258517050): Clean up after the feature is launched.
254     @JvmField
255     val SMARTSPACE_DATE_WEATHER_DECOUPLED =
256         sysPropBooleanFlag(403, "persist.sysui.ss.dw_decoupled", default = false)
257 
258     // TODO(b/270223352): Tracking Bug
259     @JvmField
260     val HIDE_SMARTSPACE_ON_DREAM_OVERLAY =
261         releasedFlag(404, "hide_smartspace_on_dream_overlay")
262 
263     // TODO(b/271460958): Tracking Bug
264     @JvmField
265     val SHOW_WEATHER_COMPLICATION_ON_DREAM_OVERLAY =
266         releasedFlag(405, "show_weather_complication_on_dream_overlay")
267 
268     // 500 - quick settings
269 
270     val PEOPLE_TILE = resourceBooleanFlag(502, R.bool.flag_conversations, "people_tile")
271 
272     @JvmField
273     val QS_USER_DETAIL_SHORTCUT =
274         resourceBooleanFlag(
275             503,
276             R.bool.flag_lockscreen_qs_user_detail_shortcut,
277             "qs_user_detail_shortcut"
278         )
279 
280     @JvmField
281     val QS_PIPELINE_NEW_HOST = unreleasedFlag(504, "qs_pipeline_new_host", teamfood = false)
282 
283     // TODO(b/254512383): Tracking Bug
284     @JvmField
285     val FULL_SCREEN_USER_SWITCHER =
286         resourceBooleanFlag(
287             506,
288             R.bool.config_enableFullscreenUserSwitcher,
289             "full_screen_user_switcher"
290         )
291 
292     // TODO(b/244064524): Tracking Bug
293     @JvmField
294     val QS_SECONDARY_DATA_SUB_INFO =
295         unreleasedFlag(508, "qs_secondary_data_sub_info", teamfood = true)
296 
297     /** Enables Font Scaling Quick Settings tile */
298     // TODO(b/269341316): Tracking Bug
299     @JvmField
300     val ENABLE_FONT_SCALING_TILE = unreleasedFlag(509, "enable_font_scaling_tile", teamfood = false)
301 
302     /** Enables new QS Edit Mode visual refresh */
303     // TODO(b/269787742): Tracking Bug
304     @JvmField
305     val ENABLE_NEW_QS_EDIT_MODE = unreleasedFlag(510, "enable_new_qs_edit_mode", teamfood = false)
306 
307     // 600- status bar
308 
309     // TODO(b/256614753): Tracking Bug
310     val NEW_STATUS_BAR_MOBILE_ICONS =
311         unreleasedFlag(606, "new_status_bar_mobile_icons", teamfood = true)
312 
313     // TODO(b/256614210): Tracking Bug
314     val NEW_STATUS_BAR_WIFI_ICON = unreleasedFlag(607, "new_status_bar_wifi_icon", teamfood = true)
315 
316     // TODO(b/256614751): Tracking Bug
317     val NEW_STATUS_BAR_MOBILE_ICONS_BACKEND =
318         unreleasedFlag(608, "new_status_bar_mobile_icons_backend", teamfood = true)
319 
320     // TODO(b/256613548): Tracking Bug
321     val NEW_STATUS_BAR_WIFI_ICON_BACKEND =
322         unreleasedFlag(609, "new_status_bar_wifi_icon_backend", teamfood = true)
323 
324     // TODO(b/256623670): Tracking Bug
325     @JvmField
326     val BATTERY_SHIELD_ICON =
327         resourceBooleanFlag(610, R.bool.flag_battery_shield_icon, "battery_shield_icon")
328 
329     // TODO(b/260881289): Tracking Bug
330     val NEW_STATUS_BAR_ICONS_DEBUG_COLORING =
331         unreleasedFlag(611, "new_status_bar_icons_debug_coloring")
332 
333     // TODO(b/265892345): Tracking Bug
334     val PLUG_IN_STATUS_BAR_CHIP =
335             unreleasedFlag(265892345, "plug_in_status_bar_chip", teamfood = true)
336 
337     // 700 - dialer/calls
338     // TODO(b/254512734): Tracking Bug
339     val ONGOING_CALL_STATUS_BAR_CHIP = releasedFlag(700, "ongoing_call_status_bar_chip")
340 
341     // TODO(b/254512681): Tracking Bug
342     val ONGOING_CALL_IN_IMMERSIVE = releasedFlag(701, "ongoing_call_in_immersive")
343 
344     // TODO(b/254512753): Tracking Bug
345     val ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = releasedFlag(702, "ongoing_call_in_immersive_chip_tap")
346 
347     // 800 - general visual/theme
348     @JvmField val MONET = resourceBooleanFlag(800, R.bool.flag_monet, "monet")
349 
350     // 801 - region sampling
351     // TODO(b/254512848): Tracking Bug
352     val REGION_SAMPLING = unreleasedFlag(801, "region_sampling")
353 
354     // 803 - screen contents translation
355     // TODO(b/254513187): Tracking Bug
356     val SCREEN_CONTENTS_TRANSLATION = unreleasedFlag(803, "screen_contents_translation")
357 
358     // 804 - monochromatic themes
359     @JvmField val MONOCHROMATIC_THEME = unreleasedFlag(804, "monochromatic", teamfood = true)
360 
361     // 900 - media
362     // TODO(b/254512697): Tracking Bug
363     val MEDIA_TAP_TO_TRANSFER = releasedFlag(900, "media_tap_to_transfer")
364 
365     // TODO(b/254512502): Tracking Bug
366     val MEDIA_SESSION_ACTIONS = unreleasedFlag(901, "media_session_actions")
367 
368     // TODO(b/254512726): Tracking Bug
369     val MEDIA_NEARBY_DEVICES = releasedFlag(903, "media_nearby_devices")
370 
371     // TODO(b/254512695): Tracking Bug
372     val MEDIA_MUTE_AWAIT = releasedFlag(904, "media_mute_await")
373 
374     // TODO(b/254512654): Tracking Bug
375     @JvmField val DREAM_MEDIA_COMPLICATION = unreleasedFlag(905, "dream_media_complication")
376 
377     // TODO(b/254512673): Tracking Bug
378     @JvmField val DREAM_MEDIA_TAP_TO_OPEN = unreleasedFlag(906, "dream_media_tap_to_open")
379 
380     // TODO(b/254513168): Tracking Bug
381     @JvmField val UMO_SURFACE_RIPPLE = unreleasedFlag(907, "umo_surface_ripple")
382 
383     @JvmField val MEDIA_FALSING_PENALTY = releasedFlag(908, "media_falsing_media")
384 
385     // TODO(b/261734857): Tracking Bug
386     @JvmField val UMO_TURBULENCE_NOISE = unreleasedFlag(909, "umo_turbulence_noise")
387 
388     // TODO(b/263272731): Tracking Bug
389     val MEDIA_TTT_RECEIVER_SUCCESS_RIPPLE = releasedFlag(910, "media_ttt_receiver_success_ripple")
390 
391     // TODO(b/263512203): Tracking Bug
392     val MEDIA_EXPLICIT_INDICATOR = unreleasedFlag(911, "media_explicit_indicator")
393 
394     // TODO(b/265813373): Tracking Bug
395     val MEDIA_TAP_TO_TRANSFER_DISMISS_GESTURE = releasedFlag(912, "media_ttt_dismiss_gesture")
396 
397     // TODO(b/266157412): Tracking Bug
398     val MEDIA_RETAIN_SESSIONS = unreleasedFlag(913, "media_retain_sessions")
399 
400     // TODO(b/266739309): Tracking Bug
401     @JvmField
402     val MEDIA_RECOMMENDATION_CARD_UPDATE = unreleasedFlag(914, "media_recommendation_card_update")
403 
404     // TODO(b/267007629): Tracking Bug
405     val MEDIA_RESUME_PROGRESS = unreleasedFlag(915, "media_resume_progress")
406 
407     // TODO(b/267166152) : Tracking Bug
408     val MEDIA_RETAIN_RECOMMENDATIONS = unreleasedFlag(916, "media_retain_recommendations")
409 
410     // TODO(b/270437894): Tracking Bug
411     val MEDIA_REMOTE_RESUME = unreleasedFlag(917, "media_remote_resume")
412 
413     // 1000 - dock
414     val SIMULATE_DOCK_THROUGH_CHARGING = releasedFlag(1000, "simulate_dock_through_charging")
415 
416     // TODO(b/254512758): Tracking Bug
417     @JvmField val ROUNDED_BOX_RIPPLE = releasedFlag(1002, "rounded_box_ripple")
418 
419     // TODO(b/270882464): Tracking Bug
420     val ENABLE_DOCK_SETUP_V2 = releasedFlag(1005, "enable_dock_setup_v2")
421 
422     // TODO(b/265045965): Tracking Bug
423     val SHOW_LOWLIGHT_ON_DIRECT_BOOT = releasedFlag(1003, "show_lowlight_on_direct_boot")
424 
425     @JvmField
426     // TODO(b/271428141): Tracking Bug
427     val ENABLE_LOW_LIGHT_CLOCK_UNDOCKED = unreleasedFlag(
428         1004,
429         "enable_low_light_clock_undocked", teamfood = true)
430 
431     // TODO(b/273509374): Tracking Bug
432     @JvmField
433     val ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS = releasedFlag(1006,
434         "always_show_home_controls_on_dreams")
435 
436     // 1100 - windowing
437     @Keep
438     @JvmField
439     val WM_ENABLE_SHELL_TRANSITIONS =
440         sysPropBooleanFlag(1100, "persist.wm.debug.shell_transit", default = false)
441 
442     // TODO(b/254513207): Tracking Bug
443     @Keep
444     @JvmField
445     val WM_ENABLE_PARTIAL_SCREEN_SHARING =
446         unreleasedFlag(
447             1102,
448             name = "record_task_content",
449             namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER,
450             teamfood = true
451         )
452 
453     // TODO(b/254512674): Tracking Bug
454     @Keep
455     @JvmField
456     val HIDE_NAVBAR_WINDOW =
457         sysPropBooleanFlag(1103, "persist.wm.debug.hide_navbar_window", default = false)
458 
459     @Keep
460     @JvmField
461     val WM_DESKTOP_WINDOWING =
462         sysPropBooleanFlag(1104, "persist.wm.debug.desktop_mode", default = false)
463 
464     @Keep
465     @JvmField
466     val WM_CAPTION_ON_SHELL =
467         sysPropBooleanFlag(1105, "persist.wm.debug.caption_on_shell", default = false)
468 
469     @Keep
470     @JvmField
471     val ENABLE_FLING_TO_DISMISS_BUBBLE =
472         sysPropBooleanFlag(1108, "persist.wm.debug.fling_to_dismiss_bubble", default = true)
473 
474     @Keep
475     @JvmField
476     val ENABLE_FLING_TO_DISMISS_PIP =
477         sysPropBooleanFlag(1109, "persist.wm.debug.fling_to_dismiss_pip", default = true)
478 
479     @Keep
480     @JvmField
481     val ENABLE_PIP_KEEP_CLEAR_ALGORITHM =
482         sysPropBooleanFlag(
483             1110,
484             "persist.wm.debug.enable_pip_keep_clear_algorithm",
485             default = true
486         )
487 
488     // TODO(b/256873975): Tracking Bug
489     @JvmField
490     @Keep
491     val WM_BUBBLE_BAR = sysPropBooleanFlag(1111, "persist.wm.debug.bubble_bar", default = false)
492 
493     // TODO(b/260271148): Tracking bug
494     @Keep
495     @JvmField
496     val WM_DESKTOP_WINDOWING_2 =
497         sysPropBooleanFlag(1112, "persist.wm.debug.desktop_mode_2", default = false)
498 
499     // TODO(b/254513207): Tracking Bug to delete
500     @Keep
501     @JvmField
502     val WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES =
503         unreleasedFlag(
504             1113,
505             name = "screen_record_enterprise_policies",
506             namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER,
507             teamfood = false
508         )
509 
510     // TODO(b/198643358): Tracking bug
511     @Keep
512     @JvmField
513     val ENABLE_PIP_SIZE_LARGE_SCREEN =
514         sysPropBooleanFlag(1114, "persist.wm.debug.enable_pip_size_large_screen", default = true)
515 
516     // TODO(b/265998256): Tracking bug
517     @Keep
518     @JvmField
519     val ENABLE_PIP_APP_ICON_OVERLAY =
520         sysPropBooleanFlag(1115, "persist.wm.debug.enable_pip_app_icon_overlay", default = true)
521 
522     // TODO(b/272110828): Tracking bug
523     @Keep
524     @JvmField
525     val ENABLE_MOVE_FLOATING_WINDOW_IN_TABLETOP =
526         sysPropBooleanFlag(
527             1116, "persist.wm.debug.enable_move_floating_window_in_tabletop", default = true)
528 
529     // 1200 - predictive back
530     @Keep
531     @JvmField
532     val WM_ENABLE_PREDICTIVE_BACK =
533         sysPropBooleanFlag(1200, "persist.wm.debug.predictive_back", default = true)
534 
535     @Keep
536     @JvmField
537     val WM_ENABLE_PREDICTIVE_BACK_ANIM =
538         sysPropBooleanFlag(1201, "persist.wm.debug.predictive_back_anim", default = true)
539 
540     @Keep
541     @JvmField
542     val WM_ALWAYS_ENFORCE_PREDICTIVE_BACK =
543         sysPropBooleanFlag(1202, "persist.wm.debug.predictive_back_always_enforce", default = false)
544 
545     // TODO(b/254512728): Tracking Bug
546     @JvmField val NEW_BACK_AFFORDANCE = unreleasedFlag(1203, "new_back_affordance", teamfood = true)
547 
548     // TODO(b/255854141): Tracking Bug
549     @JvmField
550     val WM_ENABLE_PREDICTIVE_BACK_SYSUI =
551         unreleasedFlag(1204, "persist.wm.debug.predictive_back_sysui_enable", teamfood = true)
552 
553     // TODO(b/255697805): Tracking Bug
554     @JvmField
555     val TRACKPAD_GESTURE_BACK = unreleasedFlag(1205, "trackpad_gesture_back", teamfood = false)
556 
557     // TODO(b/263826204): Tracking Bug
558     @JvmField
559     val WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM =
560         unreleasedFlag(1206, "persist.wm.debug.predictive_back_bouncer_anim", teamfood = true)
561 
562     // TODO(b/238475428): Tracking Bug
563     @JvmField
564     val WM_SHADE_ALLOW_BACK_GESTURE =
565         sysPropBooleanFlag(1207, "persist.wm.debug.shade_allow_back_gesture", default = false)
566 
567     // TODO(b/238475428): Tracking Bug
568     @JvmField
569     val WM_SHADE_ANIMATE_BACK_GESTURE =
570         unreleasedFlag(1208, "persist.wm.debug.shade_animate_back_gesture", teamfood = false)
571 
572     // TODO(b/265639042): Tracking Bug
573     @JvmField
574     val WM_ENABLE_PREDICTIVE_BACK_QS_DIALOG_ANIM =
575         unreleasedFlag(1209, "persist.wm.debug.predictive_back_qs_dialog_anim", teamfood = true)
576 
577     // 1300 - screenshots
578     // TODO(b/254513155): Tracking Bug
579     @JvmField
580     val SCREENSHOT_WORK_PROFILE_POLICY = releasedFlag(1301, "screenshot_work_profile_policy")
581 
582     // TODO(b/264916608): Tracking Bug
583     @JvmField val SCREENSHOT_METADATA = unreleasedFlag(1302, "screenshot_metadata", teamfood = true)
584 
585     // TODO(b/266955521): Tracking bug
586     @JvmField
587     val SCREENSHOT_DETECTION = unreleasedFlag(1303, "screenshot_detection", teamfood = true)
588 
589     // TODO(b/268484562): Tracking bug
590     @JvmField
591     val SCREENSHOT_METADATA_REFACTOR =
592         unreleasedFlag(1305, "screenshot_metadata_refactor", teamfood = true)
593 
594     // 1400 - columbus
595     // TODO(b/254512756): Tracking Bug
596     val QUICK_TAP_IN_PCC = releasedFlag(1400, "quick_tap_in_pcc")
597 
598     // TODO(b/261979569): Tracking Bug
599     val QUICK_TAP_FLOW_FRAMEWORK =
600         unreleasedFlag(1401, "quick_tap_flow_framework", teamfood = false)
601 
602     // 1500 - chooser aka sharesheet
603     // TODO(b/254512507): Tracking Bug
604     val CHOOSER_UNBUNDLED = unreleasedFlag(1500, "chooser_unbundled")
605 
606     // TODO(b/266983432) Tracking Bug
607     val SHARESHEET_CUSTOM_ACTIONS =
608         unreleasedFlag(1501, "sharesheet_custom_actions", teamfood = true)
609 
610     // TODO(b/266982749) Tracking Bug
611     val SHARESHEET_RESELECTION_ACTION =
612         unreleasedFlag(1502, "sharesheet_reselection_action", teamfood = true)
613 
614     // TODO(b/266983474) Tracking Bug
615     val SHARESHEET_IMAGE_AND_TEXT_PREVIEW =
616         unreleasedFlag(1503, "sharesheet_image_text_preview", teamfood = true)
617 
618     // TODO(b/267355521) Tracking Bug
619     val SHARESHEET_SCROLLABLE_IMAGE_PREVIEW =
620         unreleasedFlag(1504, "sharesheet_scrollable_image_preview")
621 
622     // 1600 - accessibility
623     @JvmField
624     val A11Y_FLOATING_MENU_FLING_SPRING_ANIMATIONS =
625         unreleasedFlag(1600, "a11y_floating_menu_fling_spring_animations")
626 
627     // 1700 - clipboard
628     @JvmField val CLIPBOARD_REMOTE_BEHAVIOR = releasedFlag(1701, "clipboard_remote_behavior")
629     // TODO(b/267162944): Tracking bug
630     @JvmField
631     val CLIPBOARD_MINIMIZED_LAYOUT = unreleasedFlag(1702, "clipboard_data_model", teamfood = true)
632 
633     // 1800 - shade container
634     @JvmField
635     val LEAVE_SHADE_OPEN_FOR_BUGREPORT = releasedFlag(1800, "leave_shade_open_for_bugreport")
636     // TODO(b/265944639): Tracking Bug
637     @JvmField val DUAL_SHADE = unreleasedFlag(1801, "dual_shade")
638 
639     // 1900
640     @JvmField val NOTE_TASKS = unreleasedFlag(1900, "keycode_flag")
641 
642     // 2000 - device controls
643     @Keep @JvmField val USE_APP_PANELS = releasedFlag(2000, "use_app_panels", teamfood = true)
644 
645     @JvmField
646     val APP_PANELS_ALL_APPS_ALLOWED =
647         unreleasedFlag(2001, "app_panels_all_apps_allowed", teamfood = true)
648 
649     @JvmField
650     val CONTROLS_MANAGEMENT_NEW_FLOWS =
651         unreleasedFlag(2002, "controls_management_new_flows", teamfood = true)
652 
653     // Enables removing app from Home control panel as a part of a new flow
654     // TODO(b/269132640): Tracking Bug
655     @JvmField
656     val APP_PANELS_REMOVE_APPS_ALLOWED =
657         unreleasedFlag(2003, "app_panels_remove_apps_allowed", teamfood = false)
658 
659     // 2100 - Falsing Manager
660     @JvmField val FALSING_FOR_LONG_TAPS = releasedFlag(2100, "falsing_for_long_taps")
661 
662     // 2200 - udfps
663     // TODO(b/259264861): Tracking Bug
664     @JvmField val UDFPS_NEW_TOUCH_DETECTION = unreleasedFlag(2200, "udfps_new_touch_detection")
665     @JvmField val UDFPS_ELLIPSE_DEBUG_UI = unreleasedFlag(2201, "udfps_ellipse_debug")
666     @JvmField val UDFPS_ELLIPSE_DETECTION = unreleasedFlag(2202, "udfps_ellipse_detection")
667 
668     // 2300 - stylus
669     @JvmField
670     val TRACK_STYLUS_EVER_USED = releasedFlag(2300, "track_stylus_ever_used")
671     @JvmField val ENABLE_STYLUS_CHARGING_UI = unreleasedFlag(2301, "enable_stylus_charging_ui")
672     @JvmField
673     val ENABLE_USI_BATTERY_NOTIFICATIONS = unreleasedFlag(2302, "enable_usi_battery_notifications")
674     @JvmField val ENABLE_STYLUS_EDUCATION = unreleasedFlag(2303, "enable_stylus_education")
675 
676     // 2400 - performance tools and debugging info
677     // TODO(b/238923086): Tracking Bug
678     @JvmField
679     val WARN_ON_BLOCKING_BINDER_TRANSACTIONS =
680         unreleasedFlag(2400, "warn_on_blocking_binder_transactions")
681 
682     // 2500 - output switcher
683     // TODO(b/261538825): Tracking Bug
684     @JvmField
685     val OUTPUT_SWITCHER_ADVANCED_LAYOUT = unreleasedFlag(2500, "output_switcher_advanced_layout")
686     @JvmField
687     val OUTPUT_SWITCHER_ROUTES_PROCESSING =
688         unreleasedFlag(2501, "output_switcher_routes_processing")
689     @JvmField
690     val OUTPUT_SWITCHER_DEVICE_STATUS = unreleasedFlag(2502, "output_switcher_device_status")
691 
692     // 2700 - unfold transitions
693     // TODO(b/265764985): Tracking Bug
694     @Keep
695     @JvmField
696     val ENABLE_DARK_VIGNETTE_WHEN_FOLDING =
697         unreleasedFlag(2700, "enable_dark_vignette_when_folding")
698 
699     // TODO(b/265764985): Tracking Bug
700     @Keep
701     @JvmField
702     val ENABLE_UNFOLD_STATUS_BAR_ANIMATIONS =
703         unreleasedFlag(2701, "enable_unfold_status_bar_animations")
704 
705     // TODO(b259590361): Tracking bug
706     val EXPERIMENTAL_FLAG = unreleasedFlag(2, "exp_flag_release")
707 
708     // 2600 - keyboard
709     // TODO(b/259352579): Tracking Bug
710     @JvmField val SHORTCUT_LIST_SEARCH_LAYOUT = unreleasedFlag(2600, "shortcut_list_search_layout")
711 
712     // TODO(b/259428678): Tracking Bug
713     @JvmField
714     val KEYBOARD_BACKLIGHT_INDICATOR = unreleasedFlag(2601, "keyboard_backlight_indicator")
715 
716     // TODO(b/272036292): Tracking Bug
717     @JvmField
718     val LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION =
719             releasedFlag(2602, "large_shade_granular_alpha_interpolation")
720 
721     // TODO(b/272805037): Tracking Bug
722     @JvmField
723     val ADVANCED_VPN_ENABLED = unreleasedFlag(2800, name = "AdvancedVpn__enable_feature",
724             namespace = "vpn", teamfood = false)
725 }
726