-
Notifications
You must be signed in to change notification settings - Fork 6.6k
/
ash_features.cc
911 lines (703 loc) · 39.4 KB
/
ash_features.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/constants/ash_features.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
namespace ash {
namespace features {
namespace {
// Controls whether Instant Tethering supports hosts which use the background
// advertisement model.
const base::Feature kInstantTetheringBackgroundAdvertisementSupport{
"InstantTetheringBackgroundAdvertisementSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
} // namespace
// Enables redesign of account management flows.
// https://crbug.com/1132472
const base::Feature kAccountManagementFlowsV2{
"AccountManagementFlowsV2", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether devices are updated before reboot after the first update.
const base::Feature kAllowRepeatedUpdates{"AllowRepeatedUpdates",
base::FEATURE_DISABLED_BY_DEFAULT};
// Shows settings for adjusting scroll acceleration/sensitivity for
// mouse/touchpad.
const base::Feature kAllowScrollSettings{"AllowScrollSettings",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode feature.
const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode",
base::FEATURE_ENABLED_BY_DEFAULT};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelAlbumEnabled{
&kAmbientModeFeature, "CapturedOnPixelAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeFineArtAlbumEnabled{
&kAmbientModeFeature, "FineArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotoAlbumEnabled{
&kAmbientModeFeature, "FeaturedPhotoAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeEarthAndSpaceAlbumEnabled{
&kAmbientModeFeature, "EarthAndSpaceAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeStreetArtAlbumEnabled{
&kAmbientModeFeature, "StreetArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeDefaultFeedEnabled{
&kAmbientModeFeature, "DefaultFeedEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModePersonalPhotosEnabled{
&kAmbientModeFeature, "PersonalPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotosEnabled{
&kAmbientModeFeature, "FeaturedPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeGeoPhotosEnabled{
&kAmbientModeFeature, "GeoPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCulturalInstitutePhotosEnabled{
&kAmbientModeFeature, "CulturalInstitutePhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeRssPhotosEnabled{
&kAmbientModeFeature, "RssPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelPhotosEnabled{
&kAmbientModeFeature, "CapturedOnPixelPhotosEnabled", false};
// Controls whether to enable Ambient mode album selection with photo previews.
const base::Feature kAmbientModePhotoPreviewFeature{
"ChromeOSAmbientModePhotoPreview", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to allow Dev channel to use Prod server feature.
const base::Feature kAmbientModeDevUseProdFeature{
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable ARC ADB sideloading support.
const base::Feature kArcAdbSideloadingFeature{
"ArcAdbSideloading", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable support for ARC ADB sideloading for managed
// accounts and/or devices.
const base::Feature kArcManagedAdbSideloadingSupport{
"ArcManagedAdbSideloadingSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable support for View.onKeyPreIme() of ARC apps.
const base::Feature kArcPreImeKeyEventSupport{"ArcPreImeKeyEventSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables auto screen-brightness adjustment when ambient light
// changes.
const base::Feature kAutoScreenBrightness{"AutoScreenBrightness",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable assistive autocorrect.
const base::Feature kAssistAutoCorrect{"AssistAutoCorrect",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive multi word suggestions.
const base::Feature kAssistMultiWord{"AssistMultiWord",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive personal information.
const base::Feature kAssistPersonalInfo{"AssistPersonalInfo",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest addresses in assistive personal information. This
// is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoAddress{
"AssistPersonalInfoAddress", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest emails in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoEmail{"AssistPersonalInfoEmail",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest names in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoName{"AssistPersonalInfoName",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest phone numbers in assistive personal information.
// This is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoPhoneNumber{
"AssistPersonalInfoPhoneNumber", base::FEATURE_ENABLED_BY_DEFAULT};
// Displays the avatar toolbar button and the profile menu.
// https://crbug.com/1041472
extern const base::Feature kAvatarToolbarButton{
"AvatarToolbarButton", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables more aggressive filtering out of Bluetooth devices with
// "appearances" that are less likely to be pairable or useful.
const base::Feature kBluetoothAggressiveAppearanceFilter{
"BluetoothAggressiveAppearanceFilter", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Bluetooth WBS microphone be selected as default
// audio input option.
const base::Feature kBluetoothWbsDogfood{"BluetoothWbsDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the usage of fixed Bluetooth A2DP packet size to improve
// audio performance in noisy environment.
const base::Feature kBluetoothFixA2dpPacketSize{
"BluetoothFixA2dpPacketSize", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables more filtering out of phones from the Bluetooth UI.
const base::Feature kBluetoothPhoneFilter{"BluetoothPhoneFilter",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the preference of using constant frame rate for camera
// when streaming.
const base::Feature kPreferConstantFrameRate{"PreferConstantFrameRate",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, will use the CDM in the Chrome OS daemon rather than loading the
// CDM using the library CDM interface.
const base::Feature kCdmFactoryDaemon{"CdmFactoryDaemon",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, send the LTE attach APN configuration to the modem.
const base::Feature kCellularUseAttachApn{"CellularUseAttachApn",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, use external euicc in Cellular Setup and Settings.
const base::Feature kCellularUseExternalEuicc{
"CellularUseExternalEuicc", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables entry point for child account sign in or creation.
const base::Feature kChildSpecificSignin{"ChildSpecificSignin",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using the new Connectivity Diagnostics WebUI app.
const base::Feature kConnectivityDiagnosticsWebUi{
"ConnectivityDiagnosticsWebUi", base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, options page for each input method will be opened in ChromeOS
// settings. Otherwise it will be opened in a new web page in Chrome browser.
const base::Feature kImeOptionsInSettings{"ImeOptionsInSettings",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini Disk Resizing.
const base::Feature kCrostiniDiskResizing{"CrostiniDiskResizing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini using Buster container images.
const base::Feature kCrostiniUseBusterImage{"CrostiniUseBusterImage",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini GPU support.
const base::Feature kCrostiniGpuSupport{"CrostiniGpuSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the new WebUI Crostini upgrader.
const base::Feature kCrostiniWebUIUpgrader{"CrostiniWebUIUpgrader",
base::FEATURE_ENABLED_BY_DEFAULT};
// Use DLC instead of component updater for managing the Termina image if set
// (and component updater instead of DLC if not).
const base::Feature kCrostiniUseDlc{"CrostiniUseDlc",
base::FEATURE_DISABLED_BY_DEFAULT};
// DLC Service is available for use on the board, prerequisite for the UseDlc
// flag.
const base::Feature kCrostiniEnableDlc{"CrostiniEnableDlc",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using Cryptauth's GetDevicesActivityStatus API.
const base::Feature kCryptAuthV2DeviceActivityStatus{
"CryptAuthV2DeviceActivityStatus", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables use of the connectivity status from Cryptauth's
// GetDevicesActivityStatus API to sort devices.
const base::Feature kCryptAuthV2DeviceActivityStatusUseConnectivity{
"CryptAuthV2DeviceActivityStatusUseConnectivity",
base::FEATURE_DISABLED_BY_DEFAULT};
// Disable idle sockets closing on memory pressure for NetworkContexts that
// belong to Profiles. It only applies to Profiles because the goal is to
// improve perceived performance of web browsing within the Chrome OS user
// session by avoiding re-estabshing TLS connections that require client
// certificates.
const base::Feature kDisableIdleSocketsCloseOnMemoryPressure{
"disable_idle_sockets_close_on_memory_pressure",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 DeviceSync flow. Regardless of this
// flag, v1 DeviceSync will continue to operate until it is disabled via the
// feature flag kDisableCryptAuthV1DeviceSync.
const base::Feature kCryptAuthV2DeviceSync{"CryptAuthV2DeviceSync",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 Enrollment flow.
const base::Feature kCryptAuthV2Enrollment{"CryptAuthV2Enrollment",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the Diagnostics app.
const base::Feature kDiagnosticsApp{"DiagnosticsApp",
base::FEATURE_ENABLED_BY_DEFAULT};
// Disables the CryptAuth v1 DeviceSync flow. Note: During the first phase
// of the v2 DeviceSync rollout, v1 and v2 DeviceSync run in parallel. This flag
// is needed to disable the v1 service during the second phase of the rollout.
// kCryptAuthV2DeviceSync should be enabled before this flag is flipped.
const base::Feature kDisableCryptAuthV1DeviceSync{
"DisableCryptAuthV1DeviceSync", base::FEATURE_DISABLED_BY_DEFAULT};
// Disables "Office Editing for Docs, Sheets & Slides" component app so handlers
// won't be registered, making it possible to install another version for
// testing.
const base::Feature kDisableOfficeEditingComponentApp{
"DisableOfficeEditingComponentApp", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, DriveFS will be used for Drive sync.
const base::Feature kDriveFs{"DriveFS", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables duplex native messaging between DriveFS and extensions.
const base::Feature kDriveFsBidirectionalNativeMessaging{
"DriveFsBidirectionalNativeMessaging", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables DriveFS' experimental local files mirroring functionality.
const base::Feature kDriveFsMirroring{"DriveFsMirroring",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of Eche.
const base::Feature kEcheSWA{"EcheSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, emoji suggestion will be shown when user type "space".
const base::Feature kEmojiSuggestAddition{"EmojiSuggestAddition",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables setting the device hostname.
const base::Feature kEnableHostnameSetting{"EnableHostnameSetting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables LocalSearchService to be initialized.
const base::Feature kEnableLocalSearchService{"EnableLocalSearchService",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the OOBE ChromeVox hint dialog and announcement feature.
const base::Feature kEnableOobeChromeVoxHint{"EnableOobeChromeVoxHint",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables toggling Pciguard settings through Settings UI.
const base::Feature kEnablePciguardUi{"EnablePciguardUi",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables SAML re-authentication on the lock screen once the sign-in time
// limit expires.
const base::Feature kEnableSamlReauthenticationOnLockscreen{
"EnableSamlReauthenticationOnLockScreen",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Device End Of Lifetime warning notifications.
const base::Feature kEolWarningNotifications{"EolWarningNotifications",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable use of ordinal (unaccelerated) motion by Exo clients.
const base::Feature kExoOrdinalMotion{"ExoOrdinalMotion",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable pointer lock for Crostini windows.
const base::Feature kExoPointerLock{"ExoPointerLock",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable bubble showing when an application gains any UI lock.
const base::Feature kExoLockNotification{"ExoLockNotification",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables policy that controls feature to allow Family Link accounts on school
// owned devices.
const base::Feature kFamilyLinkOnSchoolDevice{"FamilyLinkOnSchoolDevice",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the camera folder handling in files app.
const base::Feature kFilesCameraFolder{"FilesCameraFolder",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the next generation file manager.
const base::Feature kFilesNG{"FilesNG", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables JS modules for Files app.
const base::Feature kFilesJsModules{"FilesJsModules",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables JS modules for Audio Player.
const base::Feature kAudioPlayerJsModules{"AudioPlayerJsModules",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables JS modules for Video Player.
const base::Feature kVideoPlayerJsModules{"VideoPlayerJsModules",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables partitioning of removable disks in file manager.
const base::Feature kFilesSinglePartitionFormat{
"FilesSinglePartitionFormat", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of file manager.
const base::Feature kFilesSWA{"FilesSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable files app trash.
const base::Feature kFilesTrash{"FilesTrash",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables filters in Files app Recents view.
const base::Feature kFiltersInRecents{"FiltersInRecents",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new ZIP archive handling in Files App.
// https://crbug.com/912236
const base::Feature kFilesZipMount{"FilesZipMount",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kFilesZipPack{"FilesZipPack",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kFilesZipUnpack{"FilesZipUnpack",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Gaia reauth endpoint with deleted user customization page.
const base::Feature kGaiaReauthEndpoint{"GaiaReauthEndpoint",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls gamepad vibration in Exo.
const base::Feature kGamepadVibration{"ExoGamepadVibration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the use of Mojo by Chrome-process code to communicate with Power
// Manager. In order to use mojo, this feature must be turned on and a callsite
// must use PowerManagerMojoClient::Get().
const base::Feature kMojoDBusRelay{"MojoDBusRelay",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables pasting a few recently copied items in a menu when pressing search +
// v.
const base::Feature kClipboardHistory{"ClipboardHistory",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, the clipboard nudge shown prefs will be reset at the start of
// each new user session.
const base::Feature kClipboardHistoryNudgeSessionReset{
"ClipboardHistoryNudgeSessionReset", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, a blue new nudge will show on the context menu option for
// clipboard history.
const base::Feature kClipboardHistoryContextMenuNudge{
"ClipboardHistoryContextMenuNudge", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables copying an image to the system clipboard to support pasting onto
// different surfaces
const base::Feature kEnableFilesAppCopyImage{"EnableFilesAppCopyImage",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable restriction of symlink traversal on user-supplied filesystems.
const base::Feature kFsNosymfollow{"FsNosymfollow",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable a D-Bus service for accessing gesture properties.
const base::Feature kGesturePropertiesDBusService{
"GesturePropertiesDBusService", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables editing with handwriting gestures within the virtual keyboard.
const base::Feature kHandwritingGestureEditing{
"HandwritingGestureEditing", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the search service integration in the Help app.
const base::Feature kHelpAppSearchServiceIntegration{
"HelpAppSearchServiceIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable IME decoder via Mojo connection on Chrome OS.
const base::Feature kImeMojoDecoder{"ImeMojoDecoder",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker.
const base::Feature kImeSystemEmojiPicker{"SystemEmojiPicker",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable using the floating virtual keyboard as the default option
// on Chrome OS.
const base::Feature kVirtualKeyboardFloatingDefault{
"VirtualKeyboardFloatingDefault", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Instant Tethering on Chrome OS.
const base::Feature kInstantTethering{"InstantTethering",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Kerberos Section in ChromeOS settings. When disabled, Kerberos
// settings will stay under People Section. https://crbug.com/983041
const base::Feature kKerberosSettingsSection{"KerberosSettingsSection",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables "Linux and Chrome OS" support. Allows a Linux version of Chrome
// ("lacros-chrome") to run as a Wayland client with this instance of Chrome
// ("ash-chrome") acting as the Wayland server and window manager.
// NOTE: Use crosapi::browser_util::IsLacrosEnabled() instead of checking the
// feature directly. Lacros is not allowed for certain user types and can be
// disabled by policy. These restrictions will be lifted when Lacros development
// is complete.
const base::Feature kLacrosSupport{"LacrosSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables language settings update.
const base::Feature kLanguageSettingsUpdate{"LanguageSettingsUpdate",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the second language settings update.
const base::Feature kLanguageSettingsUpdate2{"LanguageSettingsUpdate2",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables device management disclosure on login / lock screen.
const base::Feature kLoginDeviceManagementDisclosure{
"LoginDeviceManagementDisclosure", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable the requirement of a minimum chrome version on the
// device through the policy DeviceMinimumVersion. If the requirement is
// not met and the warning time in the policy has expired, the user is
// restricted from using the session.
const base::Feature kMinimumChromeVersion{"MinimumChromeVersion",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether new OOBE layout is shown or not.
const base::Feature kNewOobeLayout{"NewOobeLayout",
base::FEATURE_DISABLED_BY_DEFAULT};
// ChromeOS Media App. https://crbug.com/996088.
const base::Feature kMediaApp{"MediaApp", base::FEATURE_ENABLED_BY_DEFAULT};
// Whether image annotation is enabled in the ChromeOS media app.
const base::Feature kMediaAppAnnotation{"MediaAppAnnotation",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether known extensions for RAW image formats are handled by the ChromeOS
// Media App.
const base::Feature kMediaAppHandlesRaw{"MediaAppHandlesRaw",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether Pdf files loading ink is enabled in the ChromeOS media app.
const base::Feature kMediaAppPdfInInk{"MediaAppPdfInInk",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables support for multilingual assistive typing on Chrome OS.
const base::Feature kMultilingualTyping{"MultilingualTyping",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable on-device grammar check service.
const base::Feature kOnDeviceGrammarCheck{"OnDeviceGrammarCheck",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a unique URL for each path in CrOS settings.
// This allows deep linking to individual settings, i.e. in settings search.
const base::Feature kOsSettingsDeepLinking{"OsSettingsDeepLinking",
base::FEATURE_ENABLED_BY_DEFAULT};
// Flips chrome://os-settings to show Polymer 3 version
const base::Feature kOsSettingsPolymer3{"OsSettingsPolymer3",
base::FEATURE_ENABLED_BY_DEFAULT};
// Provides a UI for users to view information about their Android phone
// and perform phone-side actions within Chrome OS.
const base::Feature kPhoneHub{"PhoneHub", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables PIN setup in OOBE for Family Link users on all devices supporting low
// entropy credentials regardless the form factor.
const base::Feature kPinSetupForFamilyLink{"PinSetupForFamilyLink",
base::FEATURE_ENABLED_BY_DEFAULT};
// Hides shelf in immersive mode and allows esc hold to exit.
const base::Feature kPluginVmFullscreen{"PluginVmFullscreen",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the camera permissions should be shown in the Plugin
// VM app settings.
const base::Feature kPluginVmShowCameraPermissions{
"PluginVmShowCameraPermissions", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the microphone permissions should be shown in the Plugin
// VM app settings.
const base::Feature kPluginVmShowMicrophonePermissions{
"PluginVmShowMicrophonePermissions", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to show printer statuses.
const base::Feature kPrinterStatus{"PrinterStatus",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to show printer statuses on the Print Preview destination
// dialog.
const base::Feature kPrinterStatusDialog{"PrinterStatusDialog",
base::FEATURE_ENABLED_BY_DEFAULT};
// Changes Print Preview Save to Drive to use local Drive.
const base::Feature kPrintSaveToDrive{"PrintSaveToDrive",
base::FEATURE_ENABLED_BY_DEFAULT};
// Allows print servers to be selected when beyond a specified limit.
const base::Feature kPrintServerScaling{"PrintServerScaling",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable projector.
const base::Feature kProjector{"Projector", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable projector in status tray.
const base::Feature kProjectorFeaturePod{"ProjectorFeaturePod",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers.
const base::Feature kQuickAnswers{"QuickAnswers",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether dogfood version of quick answers.
const base::Feature kQuickAnswersDogfood{"QuickAnswersDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers text annotator.
const base::Feature kQuickAnswersTextAnnotator{
"QuickAnswersTextAnnotator", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers translation.
const base::Feature kQuickAnswersTranslation{"QuickAnswersTranslation",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers translation using Cloud API.
const base::Feature kQuickAnswersTranslationCloudAPI{
"QuickAnswersTranslationCloudAPI", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to trigger quick answers on editable text selection.
const base::Feature kQuickAnswersOnEditableText{
"QuickAnswersOnEditableText", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the PIN auto submit feature is enabled.
const base::Feature kQuickUnlockPinAutosubmit{"QuickUnlockPinAutosubmit",
base::FEATURE_ENABLED_BY_DEFAULT};
// TODO(crbug.com/1104164) - Remove this once most
// users have their preferences backfilled.
// Controls whether the PIN auto submit backfill operation should be performed.
const base::Feature kQuickUnlockPinAutosubmitBackfill{
"QuickUnlockPinAutosubmitBackfill", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Release Notes notifications on Chrome OS.
const base::Feature kReleaseNotesNotification{"ReleaseNotesNotification",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Release Notes notifications on non-stable Chrome OS
// channels. Used for testing.
const base::Feature kReleaseNotesNotificationAllChannels{
"ReleaseNotesNotificationAllChannels", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Release Notes suggestion chip on Chrome OS.
const base::Feature kReleaseNotesSuggestionChip{
"ReleaseNotesSuggestionChip", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables a scanning UI on Chrome OS.
const base::Feature kScanningUI{"ScanningUI", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables long kill timeout for session manager daemon. When
// enabled, session manager daemon waits for a longer time (e.g. 12s) for chrome
// to exit before sending SIGABRT. Otherwise, it uses the default time out
// (currently 3s).
const base::Feature kSessionManagerLongKillTimeout{
"SessionManagerLongKillTimeout", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables a toggle to enable Bluetooth debug logs.
const base::Feature kShowBluetoothDebugLogToggle{
"ShowBluetoothDebugLogToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables verbose Bluetooth log collection for Googlers.
const base::Feature kEnableBluetoothVerboseLogsForGooglers{
"EnableBluetoothVerboseLogsForGooglers", base::FEATURE_ENABLED_BY_DEFAULT};
// Shows the Play Store icon in Demo Mode.
const base::Feature kShowPlayInDemoMode{"ShowPlayInDemoMode",
base::FEATURE_ENABLED_BY_DEFAULT};
// Uses experimental component version for smart dim.
const base::Feature kSmartDimExperimentalComponent{
"SmartDimExperimentalComponent", base::FEATURE_DISABLED_BY_DEFAULT};
// Uses the smart dim component updater to provide smart dim model and
// preprocessor configuration.
const base::Feature kSmartDimNewMlAgent{"SmartDimNewMlAgent",
base::FEATURE_ENABLED_BY_DEFAULT};
// Uses the V3 (~2019-05 era) Smart Dim model instead of the default V2
// (~2018-11) model.
const base::Feature kSmartDimModelV3{"SmartDimModelV3",
base::FEATURE_ENABLED_BY_DEFAULT};
// This feature:
// - Creates a new "Sync your settings" section in Chrome OS settings
// - Moves app, wallpaper and Wi-Fi sync to OS settings
// - Provides a separate toggle for OS preferences, distinct from browser
// preferences
// - Makes the OS ModelTypes run in sync transport mode, controlled by a single
// pref for the entire OS sync feature
// - Updates the OOBE sync consent screen
//
// NOTE: The feature is rolling out via a client-side Finch trial, so the actual
// state will vary. See config in
// chrome/browser/chromeos/sync/split_settings_sync_field_trial.cc
const base::Feature kSplitSettingsSync{"SplitSettingsSync",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// languages based on latin script.
const base::Feature kSystemLatinPhysicalTyping{
"SystemLatinPhysicalTyping", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Chrome OS Telemetry Extension.
const base::Feature kTelemetryExtension{"TelemetryExtension",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables unified media view in Files app to browse recently-modified media
// files from local local, Google Drive, and Android.
const base::Feature kUnifiedMediaView{"UnifiedMediaView",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the updated cellular activation UI; see go/cros-cellular-design.
const base::Feature kUpdatedCellularActivationUi{
"UpdatedCellularActivationUi", base::FEATURE_DISABLED_BY_DEFAULT};
// Uses the same browser sync consent dialog as Windows/Mac/Linux. Allows the
// user to fully opt-out of browser sync, including marking the IdentityManager
// primary account as unconsented. Requires SplitSettingsSync.
// NOTE: Call UseBrowserSyncConsent() to test the flag, see implementation.
const base::Feature kUseBrowserSyncConsent{"UseBrowserSyncConsent",
base::FEATURE_DISABLED_BY_DEFAULT};
// Use the staging server as part of the Wallpaper App to verify
// additions/removals of wallpapers.
const base::Feature kUseWallpaperStagingUrl{"UseWallpaperStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Use the staging URL as part of the "Messages" feature under "Connected
// Devices" settings.
const base::Feature kUseMessagesStagingUrl{"UseMessagesStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables user activity prediction for power management on
// Chrome OS.
// Defined here rather than in //chrome alongside other related features so that
// PowerPolicyController can check it.
const base::Feature kUserActivityPrediction{"UserActivityPrediction",
base::FEATURE_ENABLED_BY_DEFAULT};
// Remap search+click to right click instead of the legacy alt+click on
// Chrome OS.
const base::Feature kUseSearchClickForRightClick{
"UseSearchClickForRightClick", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable bordered key for virtual keyboard on Chrome OS.
const base::Feature kVirtualKeyboardBorderedKey{
"VirtualKeyboardBorderedKey", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable multipaste feature for virtual keyboard on Chrome OS.
const base::Feature kVirtualKeyboardMultipaste{
"VirtualKeyboardMultipaste", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable the camera/mic indicators/notifications for VMs.
const base::Feature kVmCameraMicIndicatorsAndNotifications{
"VmCameraMicIndicatorsAndNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable new wallpaper experience in WebUI inside system settings.
const base::Feature kWallpaperWebUI{"WallpaperWebUI",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable syncing of Wi-Fi configurations between
// ChromeOS and a connected Android phone.
const base::Feature kWifiSyncAndroid{"WifiSyncAndroid",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable MOZC IME to use protobuf as interactive message format.
const base::Feature kImeMozcProto{"ImeMozcProto",
base::FEATURE_ENABLED_BY_DEFAULT};
// Force enable recreating the LXD DB at LXD launch.
const base::Feature kCrostiniResetLxdDb{"CrostiniResetLxdDb",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the camera privacy switch toasts and notification should be
// displayed.
const base::Feature kCameraPrivacySwitchNotifications{
"CameraPrivacySwitchNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
////////////////////////////////////////////////////////////////////////////////
bool IsAccountManagementFlowsV2Enabled() {
return base::FeatureList::IsEnabled(kAccountManagementFlowsV2);
}
bool IsAmbientModeEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeFeature);
}
bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
}
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsCellularActivationUiEnabled() {
return base::FeatureList::IsEnabled(kUpdatedCellularActivationUi);
}
bool IsChildSpecificSigninEnabled() {
return base::FeatureList::IsEnabled(kChildSpecificSignin);
}
bool IsDeepLinkingEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsDeepLinking);
}
bool IsDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kDiagnosticsApp);
}
bool IsEcheSWAEnabled() {
return base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsHostnameSettingEnabled() {
return base::FeatureList::IsEnabled(kEnableHostnameSetting);
}
bool IsLocalSearchServiceEnabled() {
return base::FeatureList::IsEnabled(kEnableLocalSearchService);
}
bool IsFamilyLinkOnSchoolDeviceEnabled() {
return base::FeatureList::IsEnabled(kFamilyLinkOnSchoolDevice);
}
bool IsGaiaReauthEndpointEnabled() {
return base::FeatureList::IsEnabled(kGaiaReauthEndpoint);
}
bool IsInstantTetheringBackgroundAdvertisingSupported() {
return base::FeatureList::IsEnabled(
kInstantTetheringBackgroundAdvertisementSupport);
}
bool IsKerberosSettingsSectionEnabled() {
return base::FeatureList::IsEnabled(kKerberosSettingsSection);
}
bool IsLoginDeviceManagementDisclosureEnabled() {
return base::FeatureList::IsEnabled(kLoginDeviceManagementDisclosure);
}
bool IsMinimumChromeVersionEnabled() {
return base::FeatureList::IsEnabled(kMinimumChromeVersion);
}
bool IsNewOobeLayoutEnabled() {
return base::FeatureList::IsEnabled(kNewOobeLayout);
}
bool IsOobeChromeVoxHintEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
}
bool IsClipboardHistoryEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistory);
}
bool IsClipboardHistoryNudgeSessionResetEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryNudgeSessionReset);
}
bool IsClipboardHistoryContextMenuNudgeEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryContextMenuNudge);
}
bool IsPciguardUiEnabled() {
return base::FeatureList::IsEnabled(kEnablePciguardUi);
}
bool IsPhoneHubEnabled() {
return base::FeatureList::IsEnabled(kPhoneHub);
}
bool IsSamlReauthenticationOnLockscreenEnabled() {
return base::FeatureList::IsEnabled(kEnableSamlReauthenticationOnLockscreen);
}
bool IsPinSetupForFamilyLinkEnabled() {
return base::FeatureList::IsEnabled(kPinSetupForFamilyLink);
}
bool IsPinAutosubmitFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmit);
}
bool IsPinAutosubmitBackfillFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmitBackfill);
}
bool IsProjectorEnabled() {
return base::FeatureList::IsEnabled(kProjector);
}
bool IsProjectorFeaturePodEnabled() {
return IsProjectorEnabled() &&
base::FeatureList::IsEnabled(kProjectorFeaturePod);
}
bool IsQuickAnswersDogfood() {
return base::FeatureList::IsEnabled(kQuickAnswersDogfood);
}
bool IsQuickAnswersEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswers);
}
bool IsQuickAnswersTextAnnotatorEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTextAnnotator);
}
bool IsQuickAnswersTranslationEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTranslation);
}
bool IsQuickAnswersTranslationCloudAPIEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTranslationCloudAPI);
}
bool IsQuickAnswersOnEditableTextEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersOnEditableText);
}
bool IsSplitSettingsSyncEnabled() {
return base::FeatureList::IsEnabled(kSplitSettingsSync);
}
bool IsWallpaperWebUIEnabled() {
return base::FeatureList::IsEnabled(kWallpaperWebUI);
}
bool IsWifiSyncAndroidEnabled() {
return base::FeatureList::IsEnabled(kWifiSyncAndroid);
}
bool ShouldShowPlayStoreInDemoMode() {
return base::FeatureList::IsEnabled(kShowPlayInDemoMode);
}
bool ShouldUseBrowserSyncConsent() {
// UseBrowserSyncConsent requires SplitSettingsSync.
return base::FeatureList::IsEnabled(kSplitSettingsSync) &&
base::FeatureList::IsEnabled(kUseBrowserSyncConsent);
}
bool ShouldUseV1DeviceSync() {
return !ShouldUseV2DeviceSync() ||
!base::FeatureList::IsEnabled(features::kDisableCryptAuthV1DeviceSync);
}
bool ShouldUseV2DeviceSync() {
return base::FeatureList::IsEnabled(features::kCryptAuthV2Enrollment) &&
base::FeatureList::IsEnabled(features::kCryptAuthV2DeviceSync);
}
} // namespace features
} // namespace ash