| // Copyright 2019 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "ui/accessibility/accessibility_features.h" | |
| #include "base/feature_list.h" | |
| #include "base/metrics/field_trial_params.h" | |
| #include "build/build_config.h" | |
| #include "ui/accessibility/ax_features.mojom-features.h" | |
| #if BUILDFLAG(IS_CHROMEOS) | |
| #include "ash/constants/ash_features.h" | |
| #endif | |
| namespace features { | |
| BASE_FEATURE(kAccessibilityPdfOcrForSelectToSpeak, | |
| "kAccessibilityPdfOcrForSelectToSpeak", | |
| #if BUILDFLAG(IS_CHROMEOS) | |
| base::FEATURE_ENABLED_BY_DEFAULT | |
| #else | |
| base::FEATURE_DISABLED_BY_DEFAULT | |
| #endif // BUILDFLAG(IS_CHROMEOS) | |
| ); | |
| bool IsAccessibilityPdfOcrForSelectToSpeakEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityPdfOcrForSelectToSpeak); | |
| } | |
| BASE_FEATURE(kAccessibilityExposeSummaryAsHeading, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityExposeSummaryAsHeadingEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityExposeSummaryAsHeading); | |
| } | |
| BASE_FEATURE(kAccessibilityBlockFlowIterator, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityBlockFlowIteratorEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityBlockFlowIterator); | |
| } | |
| BASE_FEATURE(kAccessibilityPruneRedundantInlineConnectivity, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityPruneRedundantInlineConnectivityEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityPruneRedundantInlineConnectivity); | |
| } | |
| BASE_FEATURE(kAccessibilityTextFormatting, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityTextFormattingEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityTextFormatting); | |
| } | |
| BASE_FEATURE(kAccessibilityHandleOccludingViews, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityHandleOccludingViewsEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityHandleOccludingViews); | |
| } | |
| BASE_FEATURE(kAccessibilityTextChangeTypes, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityTextChangeTypesEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityTextChangeTypes); | |
| } | |
| BASE_FEATURE(kAccessibilityLabeledBy, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityLabeledByEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityLabeledBy); | |
| } | |
| BASE_FEATURE(kAccessibilityTreeForViews, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityTreeForViewsEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityTreeForViews); | |
| } | |
| BASE_FEATURE(kAccessibilityPerformanceMeasurementExperiment, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityPerformanceMeasurementExperimentEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityPerformanceMeasurementExperiment); | |
| } | |
| namespace { | |
| constexpr base::FeatureParam< | |
| AccessibilityPerformanceMeasurementExperimentGroup>::Option | |
| kAccessibilityPerformanceMeasurementExperimentParamOptions[] = { | |
| {AccessibilityPerformanceMeasurementExperimentGroup ::kAXModeComplete, | |
| "AXModeComplete"}, | |
| {AccessibilityPerformanceMeasurementExperimentGroup ::kWebContentsOnly, | |
| "WebContentsOnly"}, | |
| {AccessibilityPerformanceMeasurementExperimentGroup :: | |
| kAXModeCompleteNoInlineTextBoxes, | |
| "AXModeCompleteNoInlineTextBoxes"}, | |
| {AccessibilityPerformanceMeasurementExperimentGroup :: | |
| kRendererSerializationOnly, | |
| "RendererSerializationOnly"}}; | |
| BASE_FEATURE_ENUM_PARAM( | |
| AccessibilityPerformanceMeasurementExperimentGroup, | |
| kAccessibilityPerformanceMeasurementExperimentParam, | |
| &kAccessibilityPerformanceMeasurementExperiment, | |
| "accessibility_performance_group_name", | |
| AccessibilityPerformanceMeasurementExperimentGroup::kAXModeComplete, | |
| &kAccessibilityPerformanceMeasurementExperimentParamOptions); | |
| } // namespace | |
| AccessibilityPerformanceMeasurementExperimentGroup | |
| GetAccessibilityPerformanceMeasurementExperimentGroup() { | |
| DCHECK(IsAccessibilityPerformanceMeasurementExperimentEnabled()); | |
| return kAccessibilityPerformanceMeasurementExperimentParam.Get(); | |
| } | |
| BASE_FEATURE(kViewsAccessibilitySerializeOnDataChanged, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsViewsAccessibilitySerializeOnDataChangeEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kViewsAccessibilitySerializeOnDataChanged); | |
| } | |
| BASE_FEATURE(kImageDescriptionsAlternateRouting, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsImageDescriptionsAlternateRoutingEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kImageDescriptionsAlternateRouting); | |
| } | |
| BASE_FEATURE(kAutoDisableAccessibility, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAutoDisableAccessibilityEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAutoDisableAccessibility); | |
| } | |
| BASE_FEATURE(kEnableAccessibilityAriaVirtualContent, | |
| "AccessibilityAriaVirtualContent", | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityAriaVirtualContentEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kEnableAccessibilityAriaVirtualContent); | |
| } | |
| BASE_FEATURE(kEnableAccessibilityLanguageDetection, | |
| "AccessibilityLanguageDetection", | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityLanguageDetectionEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kEnableAccessibilityLanguageDetection); | |
| } | |
| BASE_FEATURE(kExtensionManifestV3NetworkSpeechSynthesis, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsExtensionManifestV3NetworkSpeechSynthesisEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kExtensionManifestV3NetworkSpeechSynthesis); | |
| } | |
| BASE_FEATURE(kTextBasedAudioDescription, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsTextBasedAudioDescriptionEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kTextBasedAudioDescription); | |
| } | |
| BASE_FEATURE(kUseAXPositionForDocumentMarkers, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsUseAXPositionForDocumentMarkersEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kUseAXPositionForDocumentMarkers); | |
| } | |
| BASE_FEATURE(kAXRandomizedStressTests, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAXRandomizedStressTestsEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAXRandomizedStressTests); | |
| } | |
| BASE_FEATURE(kAccessibilityOnScreenMode, | |
| "AccessibilityOnScreenAXMode", | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityOnScreenAXModeEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityOnScreenMode); | |
| } | |
| #if BUILDFLAG(IS_WIN) | |
| BASE_FEATURE(kAccessibilityWinAXFragmentRootParent, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityWinAXFragmentRootParentEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityWinAXFragmentRootParent); | |
| } | |
| BASE_FEATURE(kFixNarratorWebContentContainment, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsFixNarratorWebContentContainmentEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kFixNarratorWebContentContainment); | |
| } | |
| BASE_FEATURE(kIChromeAccessible, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsIChromeAccessibleEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kIChromeAccessible); | |
| } | |
| BASE_FEATURE(kUiaDisconnectRootProviders, base::FEATURE_DISABLED_BY_DEFAULT); | |
| BASE_FEATURE(kUiaProvider, base::FEATURE_ENABLED_BY_DEFAULT); | |
| BASE_FEATURE(kUiaEventOptimization, base::FEATURE_ENABLED_BY_DEFAULT); | |
| BASE_FEATURE(kUiaMathMlSupport, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsUiaMathMlSupportEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kUiaMathMlSupport); | |
| } | |
| #endif // BUILDFLAG(IS_WIN) | |
| #if BUILDFLAG(IS_CHROMEOS) | |
| bool IsDictationOfflineAvailable() { | |
| return base::FeatureList::IsEnabled( | |
| ash::features::kOnDeviceSpeechRecognition); | |
| } | |
| BASE_FEATURE(kAccessibilityAccelerator, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityAcceleratorEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityAccelerator); | |
| } | |
| BASE_FEATURE(kAccessibilityReducedAnimations, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityReducedAnimationsEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityReducedAnimations); | |
| } | |
| BASE_FEATURE(kAccessibilityReducedAnimationsInKiosk, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityReducedAnimationsInKioskEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityReducedAnimationsInKiosk); | |
| } | |
| BASE_FEATURE(kExperimentalAccessibilityDictationContextChecking, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsExperimentalAccessibilityDictationContextCheckingEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kExperimentalAccessibilityDictationContextChecking); | |
| } | |
| BASE_FEATURE(kAccessibilityMagnifierFollowsChromeVox, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityMagnifierFollowsChromeVoxEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityMagnifierFollowsChromeVox); | |
| } | |
| BASE_FEATURE(kAccessibilityMouseKeys, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityMouseKeysEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityMouseKeys); | |
| } | |
| BASE_FEATURE(kAccessibilityCaptionsOnBrailleDisplay, | |
| "CaptionsOnBrailleDisplay", | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityCaptionsOnBrailleDisplayEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityCaptionsOnBrailleDisplay); | |
| } | |
| BASE_FEATURE(kAccessibilityDisableTouchpad, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityDisableTouchpadEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityDisableTouchpad); | |
| } | |
| BASE_FEATURE(kAccessibilityFlashScreenFeature, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityFlashScreenFeatureEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityFlashScreenFeature); | |
| } | |
| BASE_FEATURE(kAccessibilityShakeToLocate, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityShakeToLocateEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityShakeToLocate); | |
| } | |
| BASE_FEATURE(kAccessibilityManifestV3ChromeVox, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityManifestV3EnabledForChromeVox() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityManifestV3ChromeVox); | |
| } | |
| BASE_FEATURE(kAccessibilityManifestV3EspeakNGTts, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityManifestV3EnabledForEspeakNGTts() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityManifestV3EspeakNGTts); | |
| } | |
| BASE_FEATURE(kAccessibilityManifestV3GoogleTts, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityManifestV3EnabledForGoogleTts() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityManifestV3GoogleTts); | |
| } | |
| #endif // BUILDFLAG(IS_CHROMEOS) | |
| #if BUILDFLAG(IS_ANDROID) | |
| BASE_FEATURE(kAccessibilityInlineLineSeparators, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAccessibilityInlineLineSeparatorsEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityInlineLineSeparators); | |
| } | |
| BASE_FEATURE(kAccessibilityMagnificationFollowsFocus, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityMagnificationFollowsFocusEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kAccessibilityMagnificationFollowsFocus); | |
| } | |
| #endif // BUILDFLAG(IS_ANDROID) | |
| #if !BUILDFLAG(IS_ANDROID) | |
| BASE_FEATURE(kAXTreeFixing, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsAXTreeFixingEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAXTreeFixing); | |
| } | |
| bool IsScreenAIMainContentExtractionEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ax::mojom::features::kScreenAIMainContentExtractionEnabled); | |
| } | |
| bool IsScreenAIOCREnabled() { | |
| return base::FeatureList::IsEnabled(ax::mojom::features::kScreenAIOCREnabled); | |
| } | |
| // This feature is only used for generating training data for Screen2x and | |
| // should never be used in any other circumstance, and should not be enabled by | |
| // default. | |
| BASE_FEATURE(kDataCollectionModeForScreen2x, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsDataCollectionModeForScreen2xEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kDataCollectionModeForScreen2x); | |
| } | |
| BASE_FEATURE(kImmersiveReadAnything, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsImmersiveReadAnythingEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kImmersiveReadAnything); | |
| } | |
| BASE_FEATURE(kMainNodeAnnotations, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsMainNodeAnnotationsEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kMainNodeAnnotations); | |
| } | |
| BASE_FEATURE(kReadAnythingMenuShuffleExperiment, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingMenuShuffleExperimentEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingMenuShuffleExperiment); | |
| } | |
| namespace { | |
| constexpr base::FeatureParam<ReadAnythingMenuShuffleExperimentGroup>::Option | |
| kReadAnythingMenuShuffleExperimentParamOptions[3] = { | |
| {ReadAnythingMenuShuffleExperimentGroup::kDefault, | |
| "MenuShuffleDefault"}, | |
| {ReadAnythingMenuShuffleExperimentGroup::kPlaceWithSeparation, | |
| "MenuShuffleSeparation"}, | |
| {ReadAnythingMenuShuffleExperimentGroup::kPlaceAtBottom, | |
| "MenuShufflePlaceAtBottom"}}; | |
| BASE_FEATURE_ENUM_PARAM(ReadAnythingMenuShuffleExperimentGroup, | |
| kReadAnythingMenuShuffleExperimentParam, | |
| &kReadAnythingMenuShuffleExperiment, | |
| "read_anything_menu_shuffle_group_name", | |
| ReadAnythingMenuShuffleExperimentGroup::kDefault, | |
| &kReadAnythingMenuShuffleExperimentParamOptions); | |
| } // namespace | |
| ReadAnythingMenuShuffleExperimentGroup | |
| GetReadAnythingMenuShuffleExperimentGroup() { | |
| CHECK(IsReadAnythingMenuShuffleExperimentEnabled()); | |
| return kReadAnythingMenuShuffleExperimentParam.Get(); | |
| } | |
| BASE_FEATURE(kReadAnythingReadAloudPhraseHighlighting, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingReadAloudPhraseHighlightingEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingReadAloudPhraseHighlighting); | |
| } | |
| BASE_FEATURE(kReadAnythingReadAloudTSTextSegmentation, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsReadAnythingReadAloudTSTextSegmentationEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingReadAloudTSTextSegmentation); | |
| } | |
| BASE_FEATURE(kReadAnythingOmniboxChip, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingOmniboxChipEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kReadAnythingOmniboxChip); | |
| } | |
| BASE_FEATURE(kReadAnythingLineFocus, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingLineFocusEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kReadAnythingLineFocus); | |
| } | |
| BASE_FEATURE(kReadAnythingImagesViaAlgorithm, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingImagesViaAlgorithmEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingImagesViaAlgorithm); | |
| } | |
| BASE_FEATURE(kReadAnythingDocsIntegration, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingDocsIntegrationEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ax::mojom::features::kReadAnythingDocsIntegration); | |
| } | |
| BASE_FEATURE(kReadAnythingDocsLoadMoreButton, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingDocsLoadMoreButtonEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingDocsLoadMoreButton); | |
| } | |
| BASE_FEATURE(kReadAnythingWithReadability, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingWithReadabilityEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingReadAloudTSTextSegmentation) && | |
| base::FeatureList::IsEnabled(::features::kReadAnythingWithReadability); | |
| ; | |
| } | |
| BASE_FEATURE(kReadAnythingWithReadabilityAllowLinks, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsReadAnythingWithReadabilityAllowLinksEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingWithReadability) && | |
| base::FeatureList::IsEnabled( | |
| ::features::kReadAnythingWithReadabilityAllowLinks); | |
| } | |
| // This feature is only for debug purposes and for security/privacy reasons, | |
| // should be never enabled by default . | |
| BASE_FEATURE(kScreenAIDebugMode, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsScreenAIDebugModeEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kScreenAIDebugMode); | |
| } | |
| // This feature is only used in tests and must not be enabled by default. | |
| BASE_FEATURE(kScreenAITestMode, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsScreenAITestModeEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kScreenAITestMode); | |
| } | |
| #if BUILDFLAG(IS_LINUX) | |
| BASE_FEATURE(kScreenAIPartitionAllocAdvancedChecksEnabled, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| #endif | |
| #endif // !BUILDFLAG(IS_ANDROID) | |
| #if BUILDFLAG(IS_MAC) | |
| // Enables the switchover to the newer NSAccessibility property-based API. | |
| BASE_FEATURE(kMacAccessibilityAPIMigration, base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsMacAccessibilityAPIMigrationEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kMacAccessibilityAPIMigration); | |
| } | |
| BASE_FEATURE(kMacAccessibilityOptimizeChildrenChanged, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsMacAccessibilityOptimizeChildrenChangedEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kMacAccessibilityOptimizeChildrenChanged); | |
| } | |
| BASE_FEATURE(kAccessibilityRemoteUIApp, base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsAccessibilityRemoteUIAppEnabled() { | |
| return base::FeatureList::IsEnabled(::features::kAccessibilityRemoteUIApp); | |
| } | |
| BASE_FEATURE(kBlockRootWindowAccessibleNameChangeEvent, | |
| base::FEATURE_ENABLED_BY_DEFAULT); | |
| bool IsBlockRootWindowAccessibleNameChangeEventEnabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kBlockRootWindowAccessibleNameChangeEvent); | |
| } | |
| #endif // BUILDFLAG(IS_MAC) | |
| #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) | |
| BASE_FEATURE(kWasmTtsEngineAutoInstallDisabled, | |
| base::FEATURE_DISABLED_BY_DEFAULT); | |
| bool IsWasmTtsEngineAutoInstallDisabled() { | |
| return base::FeatureList::IsEnabled( | |
| ::features::kWasmTtsEngineAutoInstallDisabled); | |
| } | |
| #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) | |
| } // namespace features |