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
|
// Copyright 2014 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/native_theme/features/native_theme_features.h"
#include "base/feature_list.h"
#include "build/build_config.h"
namespace features {
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_IOS)
constexpr base::FeatureState kOverlayScrollbarFeatureState =
base::FEATURE_ENABLED_BY_DEFAULT;
#else
constexpr base::FeatureState kOverlayScrollbarFeatureState =
base::FEATURE_DISABLED_BY_DEFAULT;
#endif
// Enables or disables overlay scrollbars in Blink (i.e. web content) on Aura
// or Linux. The status of native UI overlay scrollbars is determined in
// PlatformStyle::CreateScrollBar. Does nothing on Mac.
BASE_FEATURE(kOverlayScrollbar,
"OverlayScrollbar",
kOverlayScrollbarFeatureState);
// Disable to keep scrollbars visible forever once shown, and immediately
// update scrollbar states instead of animating. This is used to ensure
// ref tests in WPT do not flake based on the time taken before the
// screenshot is captured.
BASE_FEATURE(kScrollbarAnimations,
"ScrollbarAnimations",
base::FEATURE_ENABLED_BY_DEFAULT);
// Fluent scrollbars aim to modernize the Chromium scrollbars (both overlay and
// non-overlay) to fit the Fluent design language. For now, the feature will
// only support the Windows and Linux platforms. The feature is currently in
// development and disabled by default.
BASE_FEATURE(kFluentScrollbar,
"FluentScrollbar",
base::FEATURE_ENABLED_BY_DEFAULT);
// Makes all native scrollbars behave as overlay scrollbars styled to fit the
// Fluent design language.
// TODO(crbug.com/40280779): Right now this feature flag will force Fluent
// overlay scrollbars on. We have yet to decide how we will expose this feature
// once it is complete.
BASE_FEATURE(kFluentOverlayScrollbar,
"FluentOverlayScrollbar",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables modifying CSS `scrollbar-color` foreground elements colors on hover
// or press. This feature flag is meant to be used as a killswitch.
BASE_FEATURE(kModifyScrollbarCssColorOnHoverOrPress,
"ModifyScrollbarCssColorOnHoverOrPress",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace features
namespace ui {
bool IsFluentOverlayScrollbarEnabled() {
// Fluent scrollbars are only used for some OSes due to UI design guidelines.
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
return base::FeatureList::IsEnabled(features::kFluentOverlayScrollbar);
#else
return false;
#endif
}
bool IsFluentScrollbarEnabled() {
// Fluent scrollbars are only used for some OSes due to UI design guidelines.
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
return base::FeatureList::IsEnabled(features::kFluentScrollbar) ||
IsFluentOverlayScrollbarEnabled();
#else
return false;
#endif
}
bool IsOverlayScrollbarEnabledByFeatureFlag() {
return base::FeatureList::IsEnabled(features::kOverlayScrollbar) ||
IsFluentOverlayScrollbarEnabled();
}
bool IsModifyScrollbarCssColorOnHoverOrPressEnabled() {
return base::FeatureList::IsEnabled(
features::kModifyScrollbarCssColorOnHoverOrPress);
}
} // namespace ui
|