diff --git a/Libraries/LibWeb/CSS/CSSStyleProperties.cpp b/Libraries/LibWeb/CSS/CSSStyleProperties.cpp index eaab16c50b4..05e40ffe860 100644 --- a/Libraries/LibWeb/CSS/CSSStyleProperties.cpp +++ b/Libraries/LibWeb/CSS/CSSStyleProperties.cpp @@ -595,6 +595,11 @@ static RefPtr resolve_color_style_value(CSSStyleValue const { if (style_value.is_color_function()) return style_value; + if (style_value.is_color()) { + auto& color_style_value = static_cast(style_value); + if (first_is_one_of(color_style_value.color_type(), CSSColorValue::ColorType::Lab, CSSColorValue::ColorType::OKLab, CSSColorValue::ColorType::LCH, CSSColorValue::ColorType::OKLCH)) + return style_value; + } return CSSColorValue::create_from_color(computed_color, ColorSyntax::Modern); } diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-color/parsing/color-computed-lab.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-color/parsing/color-computed-lab.txt new file mode 100644 index 00000000000..ed311abdd25 --- /dev/null +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-color/parsing/color-computed-lab.txt @@ -0,0 +1,126 @@ +Harness status: OK + +Found 120 tests + +104 Pass +16 Fail +Pass Property color value 'lab(0 0 0)' +Pass Property color value 'lab(0 0 0 / 1)' +Pass Property color value 'lab(0 0 0 / 0.5)' +Pass Property color value 'lab(20 0 10/0.5)' +Pass Property color value 'lab(20 0 10/50%)' +Pass Property color value 'lab(400 0 10/50%)' +Pass Property color value 'lab(50 -160 160)' +Pass Property color value 'lab(50 -200 200)' +Pass Property color value 'lab(0 0 0 / -10%)' +Pass Property color value 'lab(0 0 0 / 110%)' +Pass Property color value 'lab(0 0 0 / 300%)' +Pass Property color value 'lab(-40 0 0)' +Pass Property color value 'lab(50 -20 0)' +Pass Property color value 'lab(50 0 -20)' +Pass Property color value 'lab(calc(50 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))' +Pass Property color value 'lab(calc(-50 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))' +Pass Property color value 'lab(none none none / none)' +Pass Property color value 'lab(none none none)' +Pass Property color value 'lab(20 none none / none)' +Pass Property color value 'lab(none none none / 0.5)' +Pass Property color value 'lab(0 0 0 / none)' +Pass Property color value 'lab(calc(NaN) 0 0)' +Pass Property color value 'lab(calc(0 / 0) 0 0)' +Pass Property color value 'oklab(0 0 0)' +Pass Property color value 'oklab(0 0 0 / 1)' +Pass Property color value 'oklab(0 0 0 / 0.5)' +Pass Property color value 'oklab(0.2 0 0.1/0.5)' +Pass Property color value 'oklab(0.2 0 0.1/50%)' +Pass Property color value 'oklab(4 0 0.1/50%)' +Pass Property color value 'oklab(0.5 -1.6 1.6)' +Pass Property color value 'oklab(0.5 -2 2)' +Pass Property color value 'oklab(0 0 0 / -10%)' +Pass Property color value 'oklab(0 0 0 / 110%)' +Pass Property color value 'oklab(0 0 0 / 300%)' +Pass Property color value 'oklab(-0.4 0 0)' +Pass Property color value 'oklab(0.5 -0.2 0)' +Pass Property color value 'oklab(0.5 0 -0.2)' +Pass Property color value 'oklab(calc(0.5 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))' +Pass Property color value 'oklab(calc(-0.5 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))' +Pass Property color value 'oklab(none none none / none)' +Pass Property color value 'oklab(none none none)' +Pass Property color value 'oklab(0.2 none none / none)' +Pass Property color value 'oklab(none none none / 0.5)' +Pass Property color value 'oklab(0 0 0 / none)' +Pass Property color value 'lab(20% -50% 90%/0.5)' +Pass Property color value 'oklab(20% 70% -80%/0.5)' +Pass Property color value 'oklab(calc(NaN) 0 0)' +Pass Property color value 'oklab(calc(0 / 0) 0 0)' +Pass Property color value 'lch(0 0 0deg)' +Pass Property color value 'lch(0 0 0deg / 1)' +Pass Property color value 'lch(0 0 0deg / 0.5)' +Pass Property color value 'lch(100 230 0deg / 0.5)' +Pass Property color value 'lch(20 50 20deg/0.5)' +Pass Property color value 'lch(20 50 20deg/50%)' +Pass Property color value 'lch(10 20 20deg / -10%)' +Pass Property color value 'lch(10 20 20deg / 110%)' +Pass Property color value 'lch(10 20 1.28rad)' +Pass Property color value 'lch(10 20 380deg)' +Pass Property color value 'lch(10 20 -340deg)' +Pass Property color value 'lch(10 20 740deg)' +Pass Property color value 'lch(10 20 -700deg)' +Pass Property color value 'lch(-40 0 0)' +Pass Property color value 'lch(20 -20 0)' +Pass Property color value 'lch(0 0 0 / 0.5)' +Pass Property color value 'lch(10 20 20 / 110%)' +Pass Property color value 'lch(10 20 -700)' +Pass Property color value 'lch(calc(50 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))' +Pass Property color value 'lch(calc(-50 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))' +Pass Property color value 'lch(none none none / none)' +Pass Property color value 'lch(none none none)' +Pass Property color value 'lch(20 none none / none)' +Pass Property color value 'lch(none none none / 0.5)' +Pass Property color value 'lch(0 0 0 / none)' +Pass Property color value 'lch(calc(NaN) 0 0)' +Pass Property color value 'lch(calc(0 / 0) 0 0)' +Pass Property color value 'oklch(0 0 0deg)' +Pass Property color value 'oklch(0 0 0deg / 1)' +Pass Property color value 'oklch(0 0 0deg / 0.5)' +Pass Property color value 'oklch(1 2.3 0deg / 0.5)' +Pass Property color value 'oklch(0.2 0.5 20deg/0.5)' +Pass Property color value 'oklch(0.2 0.5 20deg/50%)' +Pass Property color value 'oklch(0.1 0.2 20deg / -10%)' +Pass Property color value 'oklch(0.1 0.2 20deg / 110%)' +Pass Property color value 'oklch(0.1 0.2 1.28rad)' +Pass Property color value 'oklch(0.1 0.2 380deg)' +Pass Property color value 'oklch(0.1 0.2 -340deg)' +Pass Property color value 'oklch(0.1 0.2 740deg)' +Pass Property color value 'oklch(0.1 0.2 -700deg)' +Pass Property color value 'oklch(-0.4 0 0)' +Pass Property color value 'oklch(0.2 -0.2 0)' +Pass Property color value 'oklch(0 0 0 / 0.5)' +Pass Property color value 'oklch(0.1 0.2 20 / 110%)' +Pass Property color value 'oklch(0.1 0.2 -700)' +Pass Property color value 'oklch(calc(0.5 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))' +Pass Property color value 'oklch(calc(-0.5 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))' +Pass Property color value 'oklch(none none none / none)' +Pass Property color value 'oklch(none none none)' +Pass Property color value 'oklch(0.2 none none / none)' +Pass Property color value 'oklch(none none none / 0.5)' +Pass Property color value 'oklch(0 0 0 / none)' +Pass Property color value 'lch(20% 80% 10/0.5)' +Pass Property color value 'oklch(20% 60% 10/0.5)' +Pass Property color value 'oklch(calc(NaN) 0 0)' +Pass Property color value 'oklch(calc(0 / 0) 0 0)' +Fail Property color value 'lab(calc(50 + (sign(1em - 10px) * 10)) 30 50 / 50%)' +Fail Property color value 'oklab(calc(0.5 + (sign(1em - 10px) * 0.1)) 0.3 0.5 / 50%)' +Fail Property color value 'lab(60 30 50 / calc(50% + (sign(1em - 10px) * 10%)))' +Fail Property color value 'oklab(0.6 0.3 0.5 / calc(50% + (sign(1em - 10px) * 10%)))' +Fail Property color value 'lch(calc(50 + (sign(1em - 10px) * 10)) 30 50deg / 50%)' +Fail Property color value 'oklch(calc(0.5 + (sign(1em - 10px) * 0.1)) 0.3 50deg / 50%)' +Fail Property color value 'lch(60 30 50deg / calc(50% + (sign(1em - 10px) * 10%)))' +Fail Property color value 'oklch(0.6 0.3 50deg / calc(50% + (sign(1em - 10px) * 10%)))' +Fail Property color value 'lab(calc(50 + (sign(2cqw - 10px) * 10)) 30 50 / 0.51)' +Fail Property color value 'oklab(calc(0.5 + (sign(2cqw - 10px) * 0.1)) 0.3 0.5 / 0.51)' +Fail Property color value 'lch(calc(50 + (sign(2cqw - 10px) * 10)) 30 50 / 0.51)' +Fail Property color value 'oklch(calc(0.5 + (sign(2cqw - 10px) * 0.1)) 0.3 50 / 0.51)' +Fail Property color value 'lab(calc(50 + (sign(2cqw - 10px) * 10)) 30 50 / 0.52)' +Fail Property color value 'oklab(calc(0.5 + (sign(2cqw - 10px) * 0.1)) 0.3 0.5 / 0.52)' +Fail Property color value 'lch(calc(50 + (sign(2cqw - 10px) * 10)) 30 50 / 0.52)' +Fail Property color value 'oklch(calc(0.5 + (sign(2cqw - 10px) * 0.1)) 0.3 50 / 0.52)' \ No newline at end of file diff --git a/Tests/LibWeb/Text/input/wpt-import/css/css-color/parsing/color-computed-lab.html b/Tests/LibWeb/Text/input/wpt-import/css/css-color/parsing/color-computed-lab.html new file mode 100644 index 00000000000..e16a372bf0f --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/css/css-color/parsing/color-computed-lab.html @@ -0,0 +1,181 @@ + + + + +CSS Color Level 4: Computation of colors using Lab notation + + + + + + + + + + +
+
+
+ + + +