blob: 4b5a75ac2dc5d89faae36e4d799a70fbe07d2cfb [file]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_ANDROID_UI_ANDROID_FEATURES_H_
#define UI_ANDROID_UI_ANDROID_FEATURES_H_
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "ui/android/ui_android_export.h"
namespace ui {
// Keep sorted!
// Feature controlling whether or not HDR is enabled on Android.
// TODO(crbug.com/40263227): Leave this as a kill switch until Android U
// ships.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidHDR);
// Drops the cached bitmap in SoftwareDraw immediately after capture.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidResourceMemoryOptimization);
// Feature controlling how to compute work area on Android.
// TODO(crbug.com/372385871): Cleanup flag after investigating nothing is broken
// after changing the default behavior for
// availWidth/availHeight/availTop/availLeft.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidUseCorrectDisplayWorkArea);
// Use Android WindowManager's WindowMetrics as the data source for top-level
// browser window bounds in Blink.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidUseCorrectWindowBounds);
// Enables usage of the display topology API to obtain information about all
// displays.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidUseDisplayTopology);
// Enables using occlusion information from Android to save CPU and memory.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidWindowOcclusion);
// Guard changes to block mouse events on views.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kBlockMouseEventsOnView);
// Kill switch for redundant remeasuring in BottomSheetListViewBase.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kBottomSheetRemeasureFix);
// Guard the caching of WindowMetrics for gesture navigation detection.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kCachedGestureNavMetrics);
// When launching an intent, check whether the caller has the permission to
// access a URI before returning the result.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kCheckIntentCallerPermission);
// Controls defense against Confused Deputy clipboard URI exfiltration.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kClipboardConfusedDeputyDefenseText);
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kClipboardConfusedDeputyDefenseImages);
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kClipboardConfusedDeputyDefenseFiles);
// Controls whether oversized text and HTML clipboard payloads are streamed
// across processes via ClipboardTextDataProvider on Android.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kClipboardOversizedPayloadProvider);
// Enables debug logging for connected display and density changes.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kConnectedDisplayDensityDebugLogs);
// Use the old-style opening of an External Picker when uploading files.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kDeprecatedExternalPickerFunction);
// Whether photo picker should be disabled for video capture.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kDisablePhotoPickerForVideoCapture);
// Whether to read ClipDescription.hasContentUri().
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kHasContentUri);
// Guard changes to use maximum window metrics for gesture navigation detection.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kMaximumWindowForGestureNavDetection);
// Scaling multiplier for captured physical mouse movement
// (crbug.com/490206349).
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kPointerLockMouseScaling);
inline constexpr base::FeatureParam<double> kPointerLockMouseScalingFactor{
&kPointerLockMouseScaling, "factor", 2.4};
// Whether to enable the refactor of the smallestScreenWidthDp override.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kRefactorMinWidthContextOverride);
// Reports bottom overscrolls on the web page.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kReportBottomOverscrolls);
// Kill switch to turn off validation in TextViewWithLeading that requires a
// leading value to be configured.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kRequireLeadingInTextViewWithLeading);
// Update display for context on configuration changed and activity resumed.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAndroidUpdateDisplayForContext);
// Kill switch to turn off new supportKeyabord method
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kSupportKeyboard);
// Enables the new ETC1 encoder (used in tab and back/forward thumbnails).
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kUseNewEtc1Encoder);
// Conducts a check to determine if the View is eligible to a Hit. This is a
// mitigation of when the prerendered view (hidden) somehow receives the touch
// event even though it is hidden, due to the ordering of the `children_` in
// `ViewAndroid`. Refer to crbug.com/442832509 for more details.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kCheckHitEligibility);
// Enables touchpad overscroll for history navigation.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(
kAndroidTouchpadOverscrollHistoryNavigation);
// Update padding for display calculations to use view width instead of screen
// width.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kUpdatePaddingForDisplayCalculation);
// Avoids allocating unique ColorProviders per Activity context in Android
// embedders that do not supply a ColorProviderBridge.
UI_ANDROID_EXPORT BASE_DECLARE_FEATURE(kAvoidPerContextColorProviders);
} // namespace ui
#endif // UI_ANDROID_UI_ANDROID_FEATURES_H_