ui_base_features.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_BASE_UI_BASE_FEATURES_H_
  5. #define UI_BASE_UI_BASE_FEATURES_H_
  6. #include "base/component_export.h"
  7. #include "base/feature_list.h"
  8. #include "build/build_config.h"
  9. #include "build/chromeos_buildflags.h"
  10. #include "ui/base/buildflags.h"
  11. namespace features {
  12. // Keep sorted!
  13. COMPONENT_EXPORT(UI_BASE_FEATURES)
  14. extern const base::Feature kCompositorThreadedScrollbarScrolling;
  15. COMPONENT_EXPORT(UI_BASE_FEATURES)
  16. extern const base::Feature kExperimentalFlingAnimation;
  17. COMPONENT_EXPORT(UI_BASE_FEATURES)
  18. extern const base::Feature kFocusFollowsCursor;
  19. #if BUILDFLAG(IS_CHROMEOS_ASH)
  20. COMPONENT_EXPORT(UI_BASE_FEATURES)
  21. extern const base::Feature kSettingsShowsPerKeyboardSettings;
  22. #endif // BUILDFLAG(IS_CHROMEOS_ASH)
  23. COMPONENT_EXPORT(UI_BASE_FEATURES)
  24. extern const base::Feature kInputMethodSettingsUiUpdate;
  25. COMPONENT_EXPORT(UI_BASE_FEATURES)
  26. extern const base::Feature kWindowsScrollingPersonality;
  27. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsPercentBasedScrollingEnabled();
  28. COMPONENT_EXPORT(UI_BASE_FEATURES)
  29. extern const base::Feature kPointerLockOptions;
  30. COMPONENT_EXPORT(UI_BASE_FEATURES)
  31. extern const base::Feature kSystemCaptionStyle;
  32. COMPONENT_EXPORT(UI_BASE_FEATURES)
  33. extern const base::Feature kSystemKeyboardLock;
  34. COMPONENT_EXPORT(UI_BASE_FEATURES)
  35. extern const base::Feature kUiCompositorScrollWithLayers;
  36. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUiGpuRasterizationEnabled();
  37. #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
  38. COMPONENT_EXPORT(UI_BASE_FEATURES)
  39. extern const base::Feature kElasticOverscroll;
  40. #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
  41. #if BUILDFLAG(IS_ANDROID)
  42. COMPONENT_EXPORT(UI_BASE_FEATURES)
  43. extern const base::Feature kAndroidPermissionsCache;
  44. COMPONENT_EXPORT(UI_BASE_FEATURES)
  45. extern const char kElasticOverscrollType[];
  46. COMPONENT_EXPORT(UI_BASE_FEATURES)
  47. extern const char kElasticOverscrollTypeFilter[];
  48. COMPONENT_EXPORT(UI_BASE_FEATURES)
  49. extern const char kElasticOverscrollTypeTransform[];
  50. #endif // BUILDFLAG(IS_ANDROID)
  51. #if BUILDFLAG(IS_WIN)
  52. COMPONENT_EXPORT(UI_BASE_FEATURES)
  53. extern const base::Feature kApplyNativeOccludedRegionToWindowTracker;
  54. COMPONENT_EXPORT(UI_BASE_FEATURES)
  55. extern const base::Feature kApplyNativeOcclusionToCompositor;
  56. COMPONENT_EXPORT(UI_BASE_FEATURES)
  57. extern const char kApplyNativeOcclusionToCompositorType[];
  58. COMPONENT_EXPORT(UI_BASE_FEATURES)
  59. extern const char kApplyNativeOcclusionToCompositorTypeRelease[];
  60. COMPONENT_EXPORT(UI_BASE_FEATURES)
  61. extern const char kApplyNativeOcclusionToCompositorTypeThrottle[];
  62. COMPONENT_EXPORT(UI_BASE_FEATURES)
  63. extern const base::Feature kCalculateNativeWinOcclusion;
  64. COMPONENT_EXPORT(UI_BASE_FEATURES)
  65. extern const base::Feature kInputPaneOnScreenKeyboard;
  66. COMPONENT_EXPORT(UI_BASE_FEATURES)
  67. extern const base::Feature kPointerEventsForTouch;
  68. COMPONENT_EXPORT(UI_BASE_FEATURES)
  69. extern const base::Feature kScreenPowerListenerForNativeWinOcclusion;
  70. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kTSFImeSupport;
  71. // Returns true if the system should use WM_POINTER events for touch events.
  72. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingWMPointerForTouch();
  73. #endif // BUILDFLAG(IS_WIN)
  74. #if BUILDFLAG(IS_CHROMEOS)
  75. // This flag is intended to supercede kNewShortcutMapping.
  76. COMPONENT_EXPORT(UI_BASE_FEATURES)
  77. extern const base::Feature kImprovedKeyboardShortcuts;
  78. COMPONENT_EXPORT(UI_BASE_FEATURES)
  79. bool IsImprovedKeyboardShortcutsEnabled();
  80. COMPONENT_EXPORT(UI_BASE_FEATURES)
  81. extern const base::Feature kDeprecateAltBasedSixPack;
  82. COMPONENT_EXPORT(UI_BASE_FEATURES)
  83. bool IsDeprecateAltBasedSixPackEnabled();
  84. #endif // BUILDFLAG(IS_CHROMEOS)
  85. // Used to enable forced colors mode for web content.
  86. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kForcedColors;
  87. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsForcedColorsEnabled();
  88. // Used to enable the eye-dropper in the refresh color-picker.
  89. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kEyeDropper;
  90. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsEyeDropperEnabled();
  91. COMPONENT_EXPORT(UI_BASE_FEATURES)
  92. extern const base::Feature kSystemCursorSizeSupported;
  93. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsSystemCursorSizeSupported();
  94. // Used to enable the common select popup.
  95. COMPONENT_EXPORT(UI_BASE_FEATURES)
  96. extern const base::Feature kUseCommonSelectPopup;
  97. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUseCommonSelectPopupEnabled();
  98. // Used to enable keyboard accessible tooltips.
  99. COMPONENT_EXPORT(UI_BASE_FEATURES)
  100. extern const base::Feature kKeyboardAccessibleTooltip;
  101. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsKeyboardAccessibleTooltipEnabled();
  102. #if BUILDFLAG(IS_CHROMEOS_ASH)
  103. COMPONENT_EXPORT(UI_BASE_FEATURES)
  104. extern const base::Feature kHandwritingGesture;
  105. COMPONENT_EXPORT(UI_BASE_FEATURES)
  106. extern const base::Feature kNewShortcutMapping;
  107. COMPONENT_EXPORT(UI_BASE_FEATURES)
  108. bool IsNewShortcutMappingEnabled();
  109. COMPONENT_EXPORT(UI_BASE_FEATURES)
  110. extern const base::Feature kDeprecateAltClick;
  111. COMPONENT_EXPORT(UI_BASE_FEATURES)
  112. bool IsDeprecateAltClickEnabled();
  113. COMPONENT_EXPORT(UI_BASE_FEATURES)
  114. extern const base::Feature kShortcutCustomizationApp;
  115. COMPONENT_EXPORT(UI_BASE_FEATURES)
  116. bool IsShortcutCustomizationAppEnabled();
  117. COMPONENT_EXPORT(UI_BASE_FEATURES)
  118. extern const base::Feature kLacrosResourcesFileSharing;
  119. #endif // BUILDFLAG(IS_CHROMEOS_ASH)
  120. // Indicates whether DrmOverlayManager should used the synchronous API to
  121. // perform pageflip tests.
  122. COMPONENT_EXPORT(UI_BASE_FEATURES)
  123. extern const base::Feature kSynchronousPageFlipTesting;
  124. COMPONENT_EXPORT(UI_BASE_FEATURES)
  125. bool IsSynchronousPageFlipTestingEnabled();
  126. // The type of predictor to use for the resampling events. These values are
  127. // used as the 'predictor' feature param for
  128. // |blink::features::kResamplingScrollEvents|.
  129. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kPredictorNameLsq[];
  130. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kPredictorNameKalman[];
  131. COMPONENT_EXPORT(UI_BASE_FEATURES)
  132. extern const char kPredictorNameLinearFirst[];
  133. COMPONENT_EXPORT(UI_BASE_FEATURES)
  134. extern const char kPredictorNameLinearSecond[];
  135. COMPONENT_EXPORT(UI_BASE_FEATURES)
  136. extern const char kPredictorNameLinearResampling[];
  137. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kPredictorNameEmpty[];
  138. // Enables resampling of scroll events using an experimental latency of +3.3ms
  139. // instead of the original -5ms.
  140. COMPONENT_EXPORT(UI_BASE_FEATURES)
  141. extern const base::Feature kResamplingScrollEventsExperimentalPrediction;
  142. // The type of prediction used. TimeBased uses a fixed timing, FramesBased uses
  143. // a ratio of the vsync refresh rate. The timing/ratio can be changed on the
  144. // command line through a `latency` param.
  145. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kPredictionTypeTimeBased[];
  146. COMPONENT_EXPORT(UI_BASE_FEATURES)
  147. extern const char kPredictionTypeFramesBased[];
  148. // The default values for `latency`
  149. COMPONENT_EXPORT(UI_BASE_FEATURES)
  150. extern const char kPredictionTypeDefaultTime[];
  151. COMPONENT_EXPORT(UI_BASE_FEATURES)
  152. extern const char kPredictionTypeDefaultFramesRatio[];
  153. // The type of filter to use for filtering events. These values are used as the
  154. // 'filter' feature param for |blink::features::kFilteringScrollPrediction|.
  155. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kFilterNameEmpty[];
  156. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const char kFilterNameOneEuro[];
  157. // Android only feature, for swipe to move cursor.
  158. COMPONENT_EXPORT(UI_BASE_FEATURES)
  159. extern const base::Feature kSwipeToMoveCursor;
  160. // Enables UI debugging tools such as shortcuts.
  161. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kUIDebugTools;
  162. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsSwipeToMoveCursorEnabled();
  163. // Enables Raw Draw.
  164. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kRawDraw;
  165. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingRawDraw();
  166. COMPONENT_EXPORT(UI_BASE_FEATURES) double RawDrawTileSizeFactor();
  167. COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsRawDrawUsingMSAA();
  168. COMPONENT_EXPORT(UI_BASE_FEATURES)
  169. extern const base::Feature kUiCompositorReleaseTileResourcesForHiddenLayers;
  170. COMPONENT_EXPORT(UI_BASE_FEATURES)
  171. extern const base::Feature kUiCompositorRequiredTilesOnly;
  172. COMPONENT_EXPORT(UI_BASE_FEATURES)
  173. extern const base::Feature kEnableVariableRefreshRate;
  174. COMPONENT_EXPORT(UI_BASE_FEATURES)
  175. bool IsVariableRefreshRateEnabled();
  176. COMPONENT_EXPORT(UI_BASE_FEATURES)
  177. extern const base::Feature kWaylandScreenCoordinatesEnabled;
  178. COMPONENT_EXPORT(UI_BASE_FEATURES)
  179. bool IsWaylandScreenCoordinatesEnabled();
  180. } // namespace features
  181. #endif // UI_BASE_UI_BASE_FEATURES_H_