blob: 6d20f3f83f53b0fdf5dabee07aa48059f8b17d6c [file] [log] [blame]
// 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/native_theme_features.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
namespace features {
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH) || \
BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
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);
// 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_DISABLED_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);
} // namespace features
namespace ui {
bool IsOverlayScrollbarEnabled() {
return base::FeatureList::IsEnabled(features::kOverlayScrollbar) ||
IsFluentOverlayScrollbarEnabled();
}
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 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
}
} // namespace ui