blob: 5f8b6e00fa4cc6f6f6c315d51ee20211df019aa2 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/app_list/app_list_color_provider_impl.h"
#include "ash/constants/ash_features.h"
#include "ash/public/cpp/style/color_provider.h"
#include "ash/shell.h"
#include "ash/style/ash_color_provider.h"
#include "ash/style/default_colors.h"
#include "ash/wm/tablet_mode/tablet_mode_controller.h"
namespace ash {
namespace {
// Helper to check if tablet mode is enabled.
bool IsTabletModeEnabled() {
return Shell::Get()->tablet_mode_controller() &&
Shell::Get()->tablet_mode_controller()->InTabletMode();
}
} // namespace
AppListColorProviderImpl::AppListColorProviderImpl()
: ash_color_provider_(AshColorProvider::Get()),
is_dark_light_mode_enabled_(features::IsDarkLightModeEnabled()),
is_productivity_launcher_enabled_(
features::IsProductivityLauncherEnabled()),
is_background_blur_enabled_(features::IsBackgroundBlurEnabled()) {}
AppListColorProviderImpl::~AppListColorProviderImpl() = default;
SkColor AppListColorProviderImpl::GetExpandArrowIconBaseColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
AshColorProvider::ContentLayerType::kButtonIconColor);
}
return SK_ColorWHITE; // default_color
}
SkColor AppListColorProviderImpl::GetExpandArrowIconBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
return SkColorSetARGB(0xF, 0xFF, 0xFF, 0xFF); // default_color
}
SkColor AppListColorProviderImpl::GetAppListBackgroundColor(
bool is_tablet_mode,
SkColor default_color) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetShieldLayerColor(
is_tablet_mode ? AshColorProvider::ShieldLayerType::kShield40
: AshColorProvider::ShieldLayerType::kShield80);
}
return default_color;
}
SkColor AppListColorProviderImpl::GetSearchBoxBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
if (IsTabletModeEnabled()) {
return ash_color_provider_->GetBaseLayerColor(
is_background_blur_enabled_
? AshColorProvider::BaseLayerType::kTransparent80
: AshColorProvider::BaseLayerType::kTransparent95);
} else {
return ash_color_provider_->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
}
return SK_ColorWHITE; // default_color
}
SkColor AppListColorProviderImpl::GetSearchBoxCardBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetBaseLayerColor(
is_background_blur_enabled_
? AshColorProvider::BaseLayerType::kTransparent80
: AshColorProvider::BaseLayerType::kTransparent95);
}
return SK_ColorWHITE; // default_color
}
SkColor AppListColorProviderImpl::GetSearchBoxTextColor(
SkColor default_color) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
AshColorProvider::ContentLayerType::kTextColorPrimary);
}
return default_color;
}
SkColor AppListColorProviderImpl::GetSearchBoxSecondaryTextColor(
SkColor default_color) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
AshColorProvider::ContentLayerType::kTextColorSecondary);
}
return default_color;
}
SkColor AppListColorProviderImpl::GetSuggestionChipBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
if (IsTabletModeEnabled()) {
return ash_color_provider_->GetBaseLayerColor(
AshColorProvider::BaseLayerType::kTransparent80);
} else {
return ash_color_provider_->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
}
return SkColorSetA(gfx::kGoogleGrey100, 0x14); // default_color
}
SkColor AppListColorProviderImpl::GetSuggestionChipTextColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
AshColorProvider::ContentLayerType::kTextColorPrimary);
}
return gfx::kGoogleGrey100; // default_color
}
SkColor AppListColorProviderImpl::GetAppListItemTextColor(
bool is_in_folder) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kTextColorPrimary);
}
return is_in_folder ? SK_ColorBLACK : SK_ColorWHITE;
}
SkColor AppListColorProviderImpl::GetPageSwitcherButtonColor(
bool is_root_app_grid_page_switcher) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kButtonIconColor);
}
// default_color
return is_root_app_grid_page_switcher ? SkColorSetARGB(255, 232, 234, 237)
: SkColorSetA(SK_ColorBLACK, 138);
}
SkColor AppListColorProviderImpl::GetSearchBoxIconColor(
SkColor default_color) const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kButtonIconColor);
}
return default_color;
}
SkColor AppListColorProviderImpl::GetFolderBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetBaseLayerColor(
ColorProvider::BaseLayerType::kTransparent80);
}
return SK_ColorWHITE;
}
SkColor AppListColorProviderImpl::GetFolderBubbleColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetControlsLayerColor(
ColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
return SkColorSetA(gfx::kGoogleGrey100, 0x7A);
}
SkColor AppListColorProviderImpl::GetFolderTitleTextColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kTextColorPrimary);
}
return gfx::kGoogleGrey700;
}
SkColor AppListColorProviderImpl::GetFolderHintTextColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kTextColorSecondary);
}
return gfx::kGoogleGrey600;
}
SkColor AppListColorProviderImpl::GetFolderNameBorderColor(bool active) const {
if (!active)
return SK_ColorTRANSPARENT;
return ash_color_provider_->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusRingColor);
}
SkColor AppListColorProviderImpl::GetFolderNameSelectionColor() const {
return ash_color_provider_->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusAuraColor);
}
SkColor AppListColorProviderImpl::GetContentsBackgroundColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetControlsLayerColor(
ColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
return SkColorSetRGB(0xF2, 0xF2, 0xF2); // default_color
}
SkColor AppListColorProviderImpl::GetGridBackgroundCardActiveColor() const {
const SkColor background_color = GetGridBackgroundCardInactiveColor();
return SkColorSetA(
background_color,
SkColorGetA(background_color) +
255 * (1.0f + AshColorProvider::Get()
->GetInkDropBaseColorAndOpacity(background_color)
.second));
}
SkColor AppListColorProviderImpl::GetGridBackgroundCardInactiveColor() const {
return AshColorProvider::Get()->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
}
SkColor AppListColorProviderImpl::GetSeparatorColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
ColorProvider::ContentLayerType::kSeparatorColor);
}
return SkColorSetA(gfx::kGoogleGrey900, 0x24); // default_color
}
SkColor AppListColorProviderImpl::GetFocusRingColor() const {
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetControlsLayerColor(
ColorProvider::ControlsLayerType::kFocusRingColor);
}
return gfx::kGoogleBlue600; // default_color
}
SkColor AppListColorProviderImpl::GetInkDropBaseColor(SkColor bg_color) const {
return ash_color_provider_->GetInkDropBaseColorAndOpacity(bg_color).first;
}
float AppListColorProviderImpl::GetInkDropOpacity(SkColor bg_color) const {
return ash_color_provider_->GetInkDropBaseColorAndOpacity(bg_color).second;
}
SkColor AppListColorProviderImpl::GetSearchResultViewHighlightColor() const {
// Use highlight colors when Dark Light mode is enabled.
if (ShouldUseDarkLightColors()) {
return ash_color_provider_->GetContentLayerColor(
AshColorProvider::ContentLayerType::kHighlightColorHover);
}
// Use inkdrop colors by default.
return SkColorSetA(GetInkDropBaseColor(GetSearchBoxBackgroundColor()),
GetInkDropOpacity(GetSearchBoxBackgroundColor()) * 255);
}
SkColor AppListColorProviderImpl::GetTextColorURL() const {
// Use highlight colors when Dark Light mode is enabled.
if (ShouldUseDarkLightColors()) {
return AshColorProvider::Get()->GetContentLayerColor(
AshColorProvider::ContentLayerType::kTextColorURL);
}
return gfx::kGoogleBlue600;
}
bool AppListColorProviderImpl::ShouldUseDarkLightColors() const {
return is_dark_light_mode_enabled_ || is_productivity_launcher_enabled_;
}
} // namespace ash