Skip to content

Commit

Permalink
fix web-platform-tests#42496. better getCS with backgroundBlendMode
Browse files Browse the repository at this point in the history
This was discussed in
w3c/csswg-drafts#7164 (comment)

> Don't specifically say the computed value is same as specified value,
> it's implied. can be louder in the spec so it's obvious

The specification for CSS values 4 makes it more explicit
https://drafts.csswg.org/css-values-4/#linked-properties

> The computed values of the coordinating list properties are
> not affected by such truncation or repetition.

So this patch add comments in the code to make sure this is understood
and add a test to cover the case of multiple images.
  • Loading branch information
karlcow committed Oct 13, 2023
1 parent 80c0c84 commit 302bfb3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="utf-8">
<title>Compositing and Blending Level 1: getComputedStyle().backgroundBlendMode</title>
<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode">
<meta name="assert" content="background-blend-mode computed value is as specified.">
<meta name="assert" content="background-blend-mode computed value is as specified even when the number of images vary.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
Expand All @@ -17,27 +17,33 @@
<body>
<div id="target"></div>
<script>
// This is testing the case with multiple background images
//
// see https://drafts.fxtf.org/compositing-1/#background-blend-mode
// and https://drafts.csswg.org/css-backgrounds-3/#layering
// > The lists are matched up from the first value: excess values at the end are not used.
// and
// > If a property doesn’t have enough comma-separated values
// > to match the number of layers, the UA must calculate its used value
// > by repeating the list of values until there are enough.
// but in https://drafts.csswg.org/css-values-4/#linked-properties
// it was decided that
// > The computed values of the coordinating list properties are not affected by such truncation or repetition.
//
// There is a distinction between specified values, used values, and computed values.

// if three images and one value the initial value should be repeated.
test_computed_value("background-blend-mode", "normal", "normal, normal, normal");
test_computed_value("background-blend-mode", "multiply", "multiply, multiply, multiply");
// if three images and one value, just send back the specified list.
test_computed_value("background-blend-mode", "normal");
test_computed_value("background-blend-mode", "multiply");

// if three images and two values, just send back the same list and the first value for missing values.
test_computed_value("background-blend-mode", "normal, luminosity", "normal, luminosity, normal");
test_computed_value("background-blend-mode", "screen, overlay", "screen, overlay, screen");
test_computed_value("background-blend-mode", "color, saturation", "color, saturation, color");
// if three images and two values, just send back the specified list.
test_computed_value("background-blend-mode", "normal, luminosity");
test_computed_value("background-blend-mode", "screen, overlay");
test_computed_value("background-blend-mode", "color, saturation");

// if three images and three values, just send back the same list.
// if three images and three values, just send back the specified list.
test_computed_value("background-blend-mode", "normal, luminosity, color");
test_computed_value("background-blend-mode", "screen, overlay, screen");

</script>
</body>
</html>
11 changes: 8 additions & 3 deletions css/compositing/parsing/background-blend-mode-computed.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,14 @@
// see https://drafts.fxtf.org/compositing-1/#background-blend-mode
// and https://drafts.csswg.org/css-backgrounds-3/#layering
// > The lists are matched up from the first value: excess values at the end are not used.
test_computed_value("background-blend-mode", "normal, luminosity", "normal");
test_computed_value("background-blend-mode", "screen, overlay", "screen");
test_computed_value("background-blend-mode", "color, saturation", "color");
// but in https://drafts.csswg.org/css-values-4/#linked-properties
// it was decided that
// > The computed values of the coordinating list properties are not affected by such truncation or repetition.
// There is a distinction between specified values, used values, and computed values.

test_computed_value("background-blend-mode", "normal, luminosity");
test_computed_value("background-blend-mode", "screen, overlay");
test_computed_value("background-blend-mode", "color, saturation");
</script>
</body>
</html>

0 comments on commit 302bfb3

Please sign in to comment.