1 // Copyright 2019 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
5 #include "third_party/blink/renderer/platform/graphics/dark_mode_color_classifier.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/blink/renderer/platform/graphics/color.h"
9 #include "third_party/blink/renderer/platform/graphics/dark_mode_settings.h"
10 #include "third_party/blink/renderer/platform/graphics/graphics_types.h"
11 #include "third_party/skia/include/core/SkColor.h"
12
13 namespace blink {
14 namespace {
15
GetColorWithBrightness(int target_brightness)16 Color GetColorWithBrightness(int target_brightness) {
17 CHECK_GE(target_brightness, 0);
18 CHECK_LE(target_brightness, 256);
19
20 return Color(target_brightness, target_brightness, target_brightness);
21 }
22
TEST(DarkModeColorClassifierTest,ApplyFilterToDarkTextOnly)23 TEST(DarkModeColorClassifierTest, ApplyFilterToDarkTextOnly) {
24 DarkModeSettings settings;
25 settings.mode = DarkModeInversionAlgorithm::kSimpleInvertForTesting;
26 settings.text_brightness_threshold = 200;
27 auto classifier = DarkModeColorClassifier::MakeTextColorClassifier(settings);
28
29 // Verify that the following are inverted:
30 // * black text
31 // * text darker than the text brightness threshold
32 // and the following are not inverted:
33 // * white text
34 // * text brighter than the text brightness threshold
35 // * text at the brightness threshold
36 EXPECT_EQ(DarkModeClassification::kApplyFilter,
37 classifier->ShouldInvertColor(GetColorWithBrightness(
38 settings.text_brightness_threshold - 5)));
39 EXPECT_EQ(DarkModeClassification::kApplyFilter,
40 classifier->ShouldInvertColor(Color::kBlack));
41
42 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
43 classifier->ShouldInvertColor(Color::kWhite));
44 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
45 classifier->ShouldInvertColor(GetColorWithBrightness(
46 settings.text_brightness_threshold + 5)));
47 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
48 classifier->ShouldInvertColor(
49 GetColorWithBrightness(settings.text_brightness_threshold)));
50 }
51
TEST(DarkModeColorClassifierTest,ApplyFilterToLightBackgroundElementsOnly)52 TEST(DarkModeColorClassifierTest, ApplyFilterToLightBackgroundElementsOnly) {
53 DarkModeSettings settings;
54 settings.mode = DarkModeInversionAlgorithm::kSimpleInvertForTesting;
55 settings.background_brightness_threshold = 200;
56 auto classifier =
57 DarkModeColorClassifier::MakeBackgroundColorClassifier(settings);
58
59 EXPECT_EQ(DarkModeClassification::kApplyFilter,
60 classifier->ShouldInvertColor(Color::kWhite));
61 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
62 classifier->ShouldInvertColor(Color::kBlack));
63
64 EXPECT_EQ(DarkModeClassification::kApplyFilter,
65 classifier->ShouldInvertColor(GetColorWithBrightness(
66 settings.background_brightness_threshold + 5)));
67 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
68 classifier->ShouldInvertColor(GetColorWithBrightness(
69 settings.background_brightness_threshold)));
70 EXPECT_EQ(DarkModeClassification::kDoNotApplyFilter,
71 classifier->ShouldInvertColor(GetColorWithBrightness(
72 settings.background_brightness_threshold - 5)));
73 }
74
75 } // namespace
76 } // namespace blink
77