color_provider_utils_unittest.cc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // Copyright 2021 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 "ui/color/color_provider_utils.h"
  5. #include "base/test/gtest_util.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. #include "third_party/skia/include/core/SkColor.h"
  8. #include "ui/color/color_id.h"
  9. #include "ui/color/color_provider.h"
  10. #include "ui/color/color_recipe.h"
  11. using ColorProviderUtilsTest = ::testing::Test;
  12. TEST_F(ColorProviderUtilsTest, ConvertColorProviderColorIdToCSSColorId) {
  13. EXPECT_EQ(std::string("--color-primary-background"),
  14. ui::ConvertColorProviderColorIdToCSSColorId(
  15. std::string(ui::ColorIdName(ui::kColorPrimaryBackground))));
  16. }
  17. TEST_F(ColorProviderUtilsTest, ConvertSkColorToCSSColor) {
  18. SkColor test_color = SkColorSetRGB(0xF2, 0x99, 0x00);
  19. // This will fail if we don't make sure to show two hex digits per color.
  20. EXPECT_EQ(std::string("#f29900ff"), ui::ConvertSkColorToCSSColor(test_color));
  21. SkColor test_color_alpha = SkColorSetA(test_color, 0x25);
  22. EXPECT_EQ(std::string("#f2990025"),
  23. ui::ConvertSkColorToCSSColor(test_color_alpha));
  24. }
  25. TEST_F(ColorProviderUtilsTest, RendererColorMapGeneratesProvidersCorrectly) {
  26. // Total number of RendererColorIds is 1 greater than the max since ids start
  27. // at 0.
  28. constexpr uint32_t kTotaltRendererColorIds =
  29. static_cast<int32_t>(color::mojom::RendererColorId::kMaxValue) + 1;
  30. // The total number of RendererColorIds should be a subset of ui ColorIds. The
  31. // total number of ui ColorIds is the exclusive range of ids between
  32. // kUiColorsStart and kUiColorsEnd. This should be a positive non-zero value.
  33. ASSERT_LT(ui::kUiColorsStart, ui::kUiColorsEnd);
  34. ASSERT_LT(kTotaltRendererColorIds,
  35. static_cast<uint32_t>(ui::kUiColorsEnd - ui::kUiColorsStart - 1));
  36. // Generate the entire defined range of ui ColorIds. Do this so that we can
  37. // assert that only the subset of ColorIds specified by the RendererColorIds
  38. // enum is generated in the resulting RendererColorMap.
  39. ui::ColorProvider color_provider;
  40. ui::ColorMixer& mixer = color_provider.AddMixer();
  41. for (int i = ui::kUiColorsStart + 1; i < ui::kUiColorsEnd; ++i)
  42. mixer[i] = {static_cast<SkColor>(i)};
  43. color_provider.GenerateColorMap();
  44. // The size of the RendererColorMap should match number of defined
  45. // RendererColorIds.
  46. ui::RendererColorMap renderer_color_map =
  47. ui::CreateRendererColorMap(color_provider);
  48. EXPECT_EQ(kTotaltRendererColorIds, renderer_color_map.size());
  49. // The size of the ColorMap of the ColorProvider created from this map should
  50. // also match the number of defined RendererColorIds.
  51. auto new_color_provider =
  52. ui::CreateColorProviderFromRendererColorMap(renderer_color_map);
  53. EXPECT_EQ(kTotaltRendererColorIds,
  54. new_color_provider.color_map_for_testing().size());
  55. }
  56. TEST_F(ColorProviderUtilsTest, ColorProviderRendererColorMapEquivalence) {
  57. // Generate the entire defined range of ui ColorIds, which includes the
  58. // subset of renderer color ids.
  59. ui::ColorProvider color_provider;
  60. ui::ColorMixer& mixer = color_provider.AddMixer();
  61. for (int i = ui::kUiColorsStart + 1; i < ui::kUiColorsEnd; ++i) {
  62. mixer[i] = {static_cast<SkColor>(i)};
  63. }
  64. color_provider.GenerateColorMap();
  65. // A renderer color map generated from its source provider should have
  66. // equivalent mappings.
  67. ui::RendererColorMap renderer_color_map =
  68. ui::CreateRendererColorMap(color_provider);
  69. EXPECT_TRUE(
  70. IsRendererColorMappingEquivalent(color_provider, renderer_color_map));
  71. // Providers with different renderer color mappings should not be flagged as
  72. // equivalent.
  73. ui::ColorProvider new_color_provider;
  74. new_color_provider.GenerateColorMap();
  75. EXPECT_FALSE(
  76. IsRendererColorMappingEquivalent(new_color_provider, renderer_color_map));
  77. }