• 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 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