accessibility_features.cc 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. // Copyright (c) 2019 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. #include "ui/accessibility/accessibility_features.h"
  5. #include "base/feature_list.h"
  6. #include "build/build_config.h"
  7. #include "build/chromeos_buildflags.h"
  8. #if BUILDFLAG(IS_CHROMEOS_ASH)
  9. #include "ash/constants/ash_features.h"
  10. #endif
  11. namespace features {
  12. // Enable recognizing "aria-virtualcontent" as a valid aria property.
  13. const base::Feature kEnableAccessibilityAriaVirtualContent{
  14. "AccessibilityAriaVirtualContent", base::FEATURE_DISABLED_BY_DEFAULT};
  15. bool IsAccessibilityAriaVirtualContentEnabled() {
  16. return base::FeatureList::IsEnabled(
  17. ::features::kEnableAccessibilityAriaVirtualContent);
  18. }
  19. // Enable exposing the <html> element to the browser process AXTree
  20. // (as an ignored node).
  21. const base::Feature kEnableAccessibilityExposeHTMLElement{
  22. "AccessibilityExposeHTMLElement", base::FEATURE_ENABLED_BY_DEFAULT};
  23. bool IsAccessibilityExposeHTMLElementEnabled() {
  24. return base::FeatureList::IsEnabled(
  25. ::features::kEnableAccessibilityExposeHTMLElement);
  26. }
  27. // Enable exposing ignored nodes from Blink to the browser process AXTree.
  28. // This will allow us to simplify logic by eliminating the distiction between
  29. // "ignored and included in the tree" from "ignored and not included in the
  30. // tree".
  31. const base::Feature kEnableAccessibilityExposeIgnoredNodes{
  32. "AccessibilityExposeIgnoredNodes", base::FEATURE_DISABLED_BY_DEFAULT};
  33. bool IsAccessibilityExposeIgnoredNodesEnabled() {
  34. return base::FeatureList::IsEnabled(
  35. ::features::kEnableAccessibilityExposeIgnoredNodes);
  36. }
  37. // Enable language detection to determine language used in page text, exposed
  38. // on the browser process AXTree.
  39. const base::Feature kEnableAccessibilityLanguageDetection{
  40. "AccessibilityLanguageDetection", base::FEATURE_DISABLED_BY_DEFAULT};
  41. bool IsAccessibilityLanguageDetectionEnabled() {
  42. return base::FeatureList::IsEnabled(
  43. ::features::kEnableAccessibilityLanguageDetection);
  44. }
  45. // Serializes accessibility information from the Views tree and deserializes it
  46. // into an AXTree in the browser process.
  47. const base::Feature kEnableAccessibilityTreeForViews{
  48. "AccessibilityTreeForViews", base::FEATURE_DISABLED_BY_DEFAULT};
  49. bool IsAccessibilityTreeForViewsEnabled() {
  50. return base::FeatureList::IsEnabled(
  51. ::features::kEnableAccessibilityTreeForViews);
  52. }
  53. const base::Feature kAccessibilityFocusHighlight{
  54. "AccessibilityFocusHighlight", base::FEATURE_ENABLED_BY_DEFAULT};
  55. bool IsAccessibilityFocusHighlightEnabled() {
  56. return base::FeatureList::IsEnabled(::features::kAccessibilityFocusHighlight);
  57. }
  58. const base::Feature kAutoDisableAccessibility{
  59. "AutoDisableAccessibility", base::FEATURE_DISABLED_BY_DEFAULT};
  60. bool IsAutoDisableAccessibilityEnabled() {
  61. return base::FeatureList::IsEnabled(::features::kAutoDisableAccessibility);
  62. }
  63. const base::Feature kTextBasedAudioDescription{
  64. "TextBasedAudioDescription", base::FEATURE_DISABLED_BY_DEFAULT};
  65. bool IsTextBasedAudioDescriptionEnabled() {
  66. return base::FeatureList::IsEnabled(::features::kTextBasedAudioDescription);
  67. }
  68. #if BUILDFLAG(IS_WIN)
  69. const base::Feature kIChromeAccessible{"IChromeAccessible",
  70. base::FEATURE_DISABLED_BY_DEFAULT};
  71. bool IsIChromeAccessibleEnabled() {
  72. return base::FeatureList::IsEnabled(::features::kIChromeAccessible);
  73. }
  74. const base::Feature kSelectiveUIAEnablement{"SelectiveUIAEnablement",
  75. base::FEATURE_ENABLED_BY_DEFAULT};
  76. // Returns true if accessibility will be selectively enabled depending on the
  77. // UIA APIs that are called, allowing non-screenreader usage to enable less of
  78. // the accessibility system.
  79. bool IsSelectiveUIAEnablementEnabled() {
  80. return base::FeatureList::IsEnabled(::features::kSelectiveUIAEnablement);
  81. }
  82. #endif // BUILDFLAG(IS_WIN)
  83. #if BUILDFLAG(IS_CHROMEOS_ASH)
  84. const base::Feature kMagnifierContinuousMouseFollowingModeSetting{
  85. "MagnifierContinuousMouseFollowingModeSetting",
  86. base::FEATURE_ENABLED_BY_DEFAULT};
  87. bool IsMagnifierContinuousMouseFollowingModeSettingEnabled() {
  88. return base::FeatureList::IsEnabled(
  89. ::features::kMagnifierContinuousMouseFollowingModeSetting);
  90. }
  91. const base::Feature kDockedMagnifierResizing{"DockedMagnifierResizing",
  92. base::FEATURE_ENABLED_BY_DEFAULT};
  93. bool IsDockedMagnifierResizingEnabled() {
  94. return base::FeatureList::IsEnabled(::features::kDockedMagnifierResizing);
  95. }
  96. bool IsDictationOfflineAvailable() {
  97. return base::FeatureList::IsEnabled(
  98. ash::features::kOnDeviceSpeechRecognition);
  99. }
  100. const base::Feature kExperimentalAccessibilityDictationWithPumpkin{
  101. "ExperimentalAccessibilityDictationWithPumpkin",
  102. base::FEATURE_DISABLED_BY_DEFAULT};
  103. bool IsExperimentalAccessibilityDictationWithPumpkinEnabled() {
  104. return base::FeatureList::IsEnabled(
  105. ::features::kExperimentalAccessibilityDictationWithPumpkin);
  106. }
  107. const base::Feature kExperimentalAccessibilityGoogleTtsLanguagePacks{
  108. "ExperimentalAccessibilityGoogleTtsLanguagePacks",
  109. base::FEATURE_DISABLED_BY_DEFAULT};
  110. bool IsExperimentalAccessibilityGoogleTtsLanguagePacksEnabled() {
  111. return base::FeatureList::IsEnabled(
  112. ::features::kExperimentalAccessibilityGoogleTtsLanguagePacks);
  113. }
  114. const base::Feature kEnhancedNetworkVoices{"EnhancedNetworkVoices",
  115. base::FEATURE_ENABLED_BY_DEFAULT};
  116. bool IsEnhancedNetworkVoicesEnabled() {
  117. return base::FeatureList::IsEnabled(::features::kEnhancedNetworkVoices);
  118. }
  119. const base::Feature kAccessibilityOSSettingsVisibility{
  120. "AccessibilityOSSettingsVisibility", base::FEATURE_DISABLED_BY_DEFAULT};
  121. bool IsAccessibilityOSSettingsVisibilityEnabled() {
  122. return base::FeatureList::IsEnabled(
  123. ::features::kAccessibilityOSSettingsVisibility);
  124. }
  125. #endif // BUILDFLAG(IS_CHROMEOS_ASH)
  126. const base::Feature kAugmentExistingImageLabels{
  127. "AugmentExistingImageLabels", base::FEATURE_DISABLED_BY_DEFAULT};
  128. bool IsAugmentExistingImageLabelsEnabled() {
  129. return base::FeatureList::IsEnabled(::features::kAugmentExistingImageLabels);
  130. }
  131. const base::Feature kUseAXPositionForDocumentMarkers{
  132. "UseAXPositionForDocumentMarkers", base::FEATURE_DISABLED_BY_DEFAULT};
  133. bool IsUseAXPositionForDocumentMarkersEnabled() {
  134. return base::FeatureList::IsEnabled(
  135. ::features::kUseAXPositionForDocumentMarkers);
  136. }
  137. const base::Feature kEnableAriaElementReflection{
  138. "EnableAriaElementReflection", base::FEATURE_DISABLED_BY_DEFAULT};
  139. bool IsAriaElementReflectionEnabled() {
  140. return base::FeatureList::IsEnabled(::features::kEnableAriaElementReflection);
  141. }
  142. #if BUILDFLAG(IS_ANDROID)
  143. const base::Feature kComputeAXMode{"ComputeAXMode",
  144. base::FEATURE_DISABLED_BY_DEFAULT};
  145. bool IsComputeAXModeEnabled() {
  146. return base::FeatureList::IsEnabled(::features::kComputeAXMode);
  147. }
  148. #endif // BUILDFLAG(IS_ANDROID)
  149. #if !BUILDFLAG(IS_ANDROID)
  150. const base::Feature kReadAnything{"ReadAnything",
  151. base::FEATURE_DISABLED_BY_DEFAULT};
  152. bool IsReadAnythingEnabled() {
  153. return base::FeatureList::IsEnabled(::features::kReadAnything);
  154. }
  155. const base::Feature kReadAnythingWithScreen2x{
  156. "ReadAnythingWithScreen2x", base::FEATURE_DISABLED_BY_DEFAULT};
  157. bool IsReadAnythingWithScreen2xEnabled() {
  158. return base::FeatureList::IsEnabled(::features::kReadAnythingWithScreen2x);
  159. }
  160. const base::Feature kScreenAI{"ScreenAI", base::FEATURE_DISABLED_BY_DEFAULT};
  161. bool IsScreenAIVisualAnnotationsEnabled() {
  162. return base::FeatureList::IsEnabled(::features::kScreenAI);
  163. }
  164. bool IsScreenAIServiceNeeded() {
  165. return IsPdfOcrEnabled() || IsScreenAIVisualAnnotationsEnabled() ||
  166. IsReadAnythingWithScreen2xEnabled();
  167. }
  168. // This feature is only for debug purposes and for security/privacy reasons,
  169. // should be never enabled by default .
  170. const base::Feature kScreenAIDebugMode{"ScreenAIDebugMode",
  171. base::FEATURE_DISABLED_BY_DEFAULT};
  172. bool IsScreenAIDebugModeEnabled() {
  173. return base::FeatureList::IsEnabled(::features::kScreenAIDebugMode);
  174. }
  175. const base::Feature kPdfOcr{"PdfOcr", base::FEATURE_DISABLED_BY_DEFAULT};
  176. bool IsPdfOcrEnabled() {
  177. return base::FeatureList::IsEnabled(::features::kPdfOcr);
  178. }
  179. #endif // !BUILDFLAG(IS_ANDROID)
  180. } // namespace features