app_list_color_provider_impl.cc 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/app_list/app_list_color_provider_impl.h"
  5. #include "ash/constants/ash_features.h"
  6. #include "ash/public/cpp/style/color_provider.h"
  7. #include "ash/shell.h"
  8. #include "ash/style/ash_color_provider.h"
  9. #include "ash/style/default_colors.h"
  10. #include "ash/wm/tablet_mode/tablet_mode_controller.h"
  11. #include "ui/chromeos/styles/cros_styles.h"
  12. namespace ash {
  13. namespace {
  14. // Helper to check if tablet mode is enabled.
  15. bool IsTabletModeEnabled() {
  16. return Shell::Get()->tablet_mode_controller() &&
  17. Shell::Get()->tablet_mode_controller()->InTabletMode();
  18. }
  19. } // namespace
  20. AppListColorProviderImpl::AppListColorProviderImpl()
  21. : ash_color_provider_(AshColorProvider::Get()),
  22. is_dark_light_mode_enabled_(features::IsDarkLightModeEnabled()),
  23. is_productivity_launcher_enabled_(
  24. features::IsProductivityLauncherEnabled()),
  25. is_background_blur_enabled_(features::IsBackgroundBlurEnabled()) {}
  26. AppListColorProviderImpl::~AppListColorProviderImpl() = default;
  27. SkColor AppListColorProviderImpl::GetExpandArrowIconBaseColor() const {
  28. if (ShouldUseDarkLightColors()) {
  29. return ash_color_provider_->GetContentLayerColor(
  30. AshColorProvider::ContentLayerType::kButtonIconColor);
  31. }
  32. return SK_ColorWHITE; // default_color
  33. }
  34. SkColor AppListColorProviderImpl::GetExpandArrowIconBackgroundColor() const {
  35. if (ShouldUseDarkLightColors()) {
  36. return ash_color_provider_->GetControlsLayerColor(
  37. AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  38. }
  39. return SkColorSetARGB(0xF, 0xFF, 0xFF, 0xFF); // default_color
  40. }
  41. SkColor AppListColorProviderImpl::GetAppListBackgroundColor(
  42. bool is_tablet_mode,
  43. SkColor default_color) const {
  44. if (ShouldUseDarkLightColors()) {
  45. return ash_color_provider_->GetShieldLayerColor(
  46. is_tablet_mode ? AshColorProvider::ShieldLayerType::kShield40
  47. : AshColorProvider::ShieldLayerType::kShield80);
  48. }
  49. return default_color;
  50. }
  51. SkColor AppListColorProviderImpl::GetSearchBoxBackgroundColor() const {
  52. if (ShouldUseDarkLightColors()) {
  53. if (IsTabletModeEnabled()) {
  54. return ash_color_provider_->GetBaseLayerColor(
  55. is_background_blur_enabled_
  56. ? AshColorProvider::BaseLayerType::kTransparent80
  57. : AshColorProvider::BaseLayerType::kTransparent95);
  58. } else {
  59. return ash_color_provider_->GetControlsLayerColor(
  60. AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  61. }
  62. }
  63. return SK_ColorWHITE; // default_color
  64. }
  65. SkColor AppListColorProviderImpl::GetSearchBoxCardBackgroundColor() const {
  66. if (ShouldUseDarkLightColors()) {
  67. return ash_color_provider_->GetBaseLayerColor(
  68. is_background_blur_enabled_
  69. ? AshColorProvider::BaseLayerType::kTransparent80
  70. : AshColorProvider::BaseLayerType::kTransparent95);
  71. }
  72. return SK_ColorWHITE; // default_color
  73. }
  74. SkColor AppListColorProviderImpl::GetSearchBoxTextColor(
  75. SkColor default_color) const {
  76. if (ShouldUseDarkLightColors()) {
  77. return ash_color_provider_->GetContentLayerColor(
  78. AshColorProvider::ContentLayerType::kTextColorPrimary);
  79. }
  80. return default_color;
  81. }
  82. SkColor AppListColorProviderImpl::GetSearchBoxSecondaryTextColor(
  83. SkColor default_color) const {
  84. if (ShouldUseDarkLightColors()) {
  85. return ash_color_provider_->GetContentLayerColor(
  86. AshColorProvider::ContentLayerType::kTextColorSecondary);
  87. }
  88. return default_color;
  89. }
  90. SkColor AppListColorProviderImpl::GetSearchBoxSuggestionTextColor(
  91. SkColor default_color) const {
  92. if (ShouldUseDarkLightColors()) {
  93. return ash_color_provider_->GetContentLayerColor(
  94. AshColorProvider::ContentLayerType::kTextColorSuggestion);
  95. }
  96. return default_color;
  97. }
  98. SkColor AppListColorProviderImpl::GetSuggestionChipBackgroundColor() const {
  99. if (ShouldUseDarkLightColors()) {
  100. if (IsTabletModeEnabled()) {
  101. return ash_color_provider_->GetBaseLayerColor(
  102. AshColorProvider::BaseLayerType::kTransparent80);
  103. } else {
  104. return ash_color_provider_->GetControlsLayerColor(
  105. AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  106. }
  107. }
  108. return SkColorSetA(gfx::kGoogleGrey100, 0x14); // default_color
  109. }
  110. SkColor AppListColorProviderImpl::GetSuggestionChipTextColor() const {
  111. if (ShouldUseDarkLightColors()) {
  112. return ash_color_provider_->GetContentLayerColor(
  113. AshColorProvider::ContentLayerType::kTextColorPrimary);
  114. }
  115. return gfx::kGoogleGrey100; // default_color
  116. }
  117. SkColor AppListColorProviderImpl::GetAppListItemTextColor(
  118. bool is_in_folder) const {
  119. if (ShouldUseDarkLightColors()) {
  120. return ash_color_provider_->GetContentLayerColor(
  121. ColorProvider::ContentLayerType::kTextColorPrimary);
  122. }
  123. return is_in_folder ? SK_ColorBLACK : SK_ColorWHITE;
  124. }
  125. SkColor AppListColorProviderImpl::GetPageSwitcherButtonColor(
  126. bool is_root_app_grid_page_switcher) const {
  127. if (ShouldUseDarkLightColors()) {
  128. return ash_color_provider_->GetContentLayerColor(
  129. ColorProvider::ContentLayerType::kButtonIconColor);
  130. }
  131. // default_color
  132. return is_root_app_grid_page_switcher ? SkColorSetARGB(255, 232, 234, 237)
  133. : SkColorSetA(SK_ColorBLACK, 138);
  134. }
  135. SkColor AppListColorProviderImpl::GetSearchBoxIconColor(
  136. SkColor default_color) const {
  137. if (ShouldUseDarkLightColors()) {
  138. return ash_color_provider_->GetContentLayerColor(
  139. ColorProvider::ContentLayerType::kButtonIconColor);
  140. }
  141. return default_color;
  142. }
  143. SkColor AppListColorProviderImpl::GetFolderBackgroundColor() const {
  144. if (ShouldUseDarkLightColors()) {
  145. return ash_color_provider_->GetBaseLayerColor(
  146. ColorProvider::BaseLayerType::kTransparent80);
  147. }
  148. return SK_ColorWHITE;
  149. }
  150. SkColor AppListColorProviderImpl::GetFolderBubbleColor() const {
  151. if (ShouldUseDarkLightColors()) {
  152. return ash_color_provider_->GetControlsLayerColor(
  153. ColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  154. }
  155. return SkColorSetA(gfx::kGoogleGrey100, 0x7A);
  156. }
  157. SkColor AppListColorProviderImpl::GetFolderTitleTextColor() const {
  158. if (ShouldUseDarkLightColors()) {
  159. return ash_color_provider_->GetContentLayerColor(
  160. ColorProvider::ContentLayerType::kTextColorPrimary);
  161. }
  162. return gfx::kGoogleGrey700;
  163. }
  164. SkColor AppListColorProviderImpl::GetFolderHintTextColor() const {
  165. if (ShouldUseDarkLightColors()) {
  166. return ash_color_provider_->GetContentLayerColor(
  167. ColorProvider::ContentLayerType::kTextColorSecondary);
  168. }
  169. return gfx::kGoogleGrey600;
  170. }
  171. SkColor AppListColorProviderImpl::GetFolderNameBorderColor(bool active) const {
  172. if (!active)
  173. return SK_ColorTRANSPARENT;
  174. return ash_color_provider_->GetControlsLayerColor(
  175. AshColorProvider::ControlsLayerType::kFocusRingColor);
  176. }
  177. SkColor AppListColorProviderImpl::GetFolderNameSelectionColor() const {
  178. return ash_color_provider_->GetControlsLayerColor(
  179. AshColorProvider::ControlsLayerType::kFocusAuraColor);
  180. }
  181. SkColor AppListColorProviderImpl::GetFolderNotificationBadgeColor() const {
  182. if (ShouldUseDarkLightColors()) {
  183. return cros_styles::ResolveColor(cros_styles::ColorName::kIconColorBlue);
  184. }
  185. return cros_styles::ResolveColor(cros_styles::ColorName::kIconColorBlue,
  186. /*is_dark_mode=*/false);
  187. }
  188. SkColor AppListColorProviderImpl::GetContentsBackgroundColor() const {
  189. if (ShouldUseDarkLightColors()) {
  190. return ash_color_provider_->GetControlsLayerColor(
  191. ColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  192. }
  193. return SkColorSetRGB(0xF2, 0xF2, 0xF2); // default_color
  194. }
  195. SkColor AppListColorProviderImpl::GetGridBackgroundCardActiveColor() const {
  196. const SkColor background_color = GetGridBackgroundCardInactiveColor();
  197. return SkColorSetA(
  198. background_color,
  199. SkColorGetA(background_color) +
  200. 255 * (1.0f + AshColorProvider::Get()
  201. ->GetInkDropBaseColorAndOpacity(background_color)
  202. .second));
  203. }
  204. SkColor AppListColorProviderImpl::GetGridBackgroundCardInactiveColor() const {
  205. return AshColorProvider::Get()->GetControlsLayerColor(
  206. AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive);
  207. }
  208. ui::ColorId AppListColorProviderImpl::GetSeparatorColorId() const {
  209. if (ShouldUseDarkLightColors()) {
  210. return ui::kColorAshAppListSeparatorLight;
  211. }
  212. return ui::kColorAshAppListSeparator; // default_color
  213. }
  214. SkColor AppListColorProviderImpl::GetFocusRingColor() const {
  215. if (ShouldUseDarkLightColors()) {
  216. return ash_color_provider_->GetControlsLayerColor(
  217. ColorProvider::ControlsLayerType::kFocusRingColor);
  218. }
  219. return gfx::kGoogleBlue600; // default_color
  220. }
  221. SkColor AppListColorProviderImpl::GetInkDropBaseColor(SkColor bg_color) const {
  222. return ash_color_provider_->GetInkDropBaseColorAndOpacity(bg_color).first;
  223. }
  224. float AppListColorProviderImpl::GetInkDropOpacity(SkColor bg_color) const {
  225. return ash_color_provider_->GetInkDropBaseColorAndOpacity(bg_color).second;
  226. }
  227. SkColor AppListColorProviderImpl::GetSearchResultViewHighlightColor() const {
  228. // Use highlight colors when Dark Light mode is enabled.
  229. if (ShouldUseDarkLightColors()) {
  230. return ash_color_provider_->GetContentLayerColor(
  231. AshColorProvider::ContentLayerType::kHighlightColorHover);
  232. }
  233. // Use inkdrop colors by default.
  234. return SkColorSetA(GetInkDropBaseColor(GetSearchBoxBackgroundColor()),
  235. GetInkDropOpacity(GetSearchBoxBackgroundColor()) * 255);
  236. }
  237. SkColor AppListColorProviderImpl::GetTextColorURL() const {
  238. // Use highlight colors when Dark Light mode is enabled.
  239. if (ShouldUseDarkLightColors()) {
  240. return AshColorProvider::Get()->GetContentLayerColor(
  241. AshColorProvider::ContentLayerType::kTextColorURL);
  242. }
  243. return gfx::kGoogleBlue600;
  244. }
  245. bool AppListColorProviderImpl::ShouldUseDarkLightColors() const {
  246. return is_dark_light_mode_enabled_ || is_productivity_launcher_enabled_;
  247. }
  248. } // namespace ash