[css-anchor-position] Mixing self and container logical inset-area
Spec changed to disallow mixing things like self-inline-start and
block-start which might have caused parallel axes for the two spans.
This change means an inset-area that is valid at computed time is now
also always valid at used value time.
Bug: 329679902
Change-Id: I853f77ee3e82793759659227327c45c0aaf8f5ba
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5376950
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1275209}
diff --git a/css/css-anchor-position/inset-area-basic.html b/css/css-anchor-position/inset-area-basic.html
index bd39f3e..01c543f 100644
--- a/css/css-anchor-position/inset-area-basic.html
+++ b/css/css-anchor-position/inset-area-basic.html
@@ -111,12 +111,6 @@
test_inset_area("span-y-self-start span-x-self-end", {left:100, top:0, width:300, height:225});
test_inset_area("span-bottom span-all", {left:0, top:150, width:400, height:250});
- // Non-orthogonal axes.
- anchored.style.writingMode = "vertical-lr";
- test_inset_area("self-inline-start block-start", {left:0, top:0, width:0, height:0});
- test_inset_area("self-block-end inline-start", {left:0, top:0, width:0, height:0});
- anchored.style.writingMode = "horizontal-tb";
-
// No implicit anchor means the inset-area should not apply.
anchored.style.positionAnchor = "implicit";
test_inset_area("span-all top", {left:0, top:0, width:0, height:0});
diff --git a/css/css-anchor-position/inset-area-parsing.html b/css/css-anchor-position/inset-area-parsing.html
index e6bb22c..7c7fc82 100644
--- a/css/css-anchor-position/inset-area-parsing.html
+++ b/css/css-anchor-position/inset-area-parsing.html
@@ -72,11 +72,13 @@
"y-end", "span-y-start", "span-y-end", "y-self-start",
"y-self-end", "span-y-self-start", "span-y-self-end" ];
const inline = [ "inline-start", "inline-end", "span-inline-start",
- "span-inline-end", "self-inline-start", "self-inline-end",
- "span-self-inline-start", "span-self-inline-end" ];
+ "span-inline-end" ];
const block = [ "block-start", "block-end", "span-block-start",
- "span-block-end", "self-block-start", "self-block-end",
- "span-self-block-start", "span-self-block-end" ];
+ "span-block-end" ];
+ const self_inline = [ "self-inline-start", "self-inline-end",
+ "span-self-inline-start", "span-self-inline-end" ];
+ const self_block = [ "self-block-start", "self-block-end",
+ "span-self-block-start", "span-self-block-end" ];
const start_end = [ "start", "end", "span-start", "span-end" ];
const self_start_end = [ "self-start", "self-end", "span-self-start",
"span-self-end" ];
@@ -112,6 +114,8 @@
test_valid_inset_area_value_pairs(vertical, horizontal, flip_order);
test_valid_inset_area_value_pairs(block, inline);
test_valid_inset_area_value_pairs(inline, block, flip_order);
+ test_valid_inset_area_value_pairs(self_block, self_inline);
+ test_valid_inset_area_value_pairs(self_inline, self_block, flip_order);
test_valid_inset_area_value_pairs(start_end, start_end);
test_valid_inset_area_value_pairs(self_start_end, self_start_end);
@@ -120,20 +124,30 @@
test_valid_inset_area_value_pairs_with_span_all_center(vertical, flip_order);
test_valid_inset_area_value_pairs_with_span_all_center(block);
test_valid_inset_area_value_pairs_with_span_all_center(inline, flip_order);
+ test_valid_inset_area_value_pairs_with_span_all_center(self_block);
+ test_valid_inset_area_value_pairs_with_span_all_center(self_inline, flip_order);
test_valid_inset_area_value_start_end_pairs_with_span_all_center(start_end);
test_valid_inset_area_value_start_end_pairs_with_span_all_center(self_start_end);
// Test all invalid combinations with incompatible axes in both orders
test_invalid_inset_area_value_pairs(horizontal, inline);
test_invalid_inset_area_value_pairs(horizontal, block);
+ test_invalid_inset_area_value_pairs(horizontal, self_inline);
+ test_invalid_inset_area_value_pairs(horizontal, self_block);
test_invalid_inset_area_value_pairs(horizontal, start_end);
test_invalid_inset_area_value_pairs(horizontal, self_start_end);
test_invalid_inset_area_value_pairs(vertical, inline);
test_invalid_inset_area_value_pairs(vertical, block);
+ test_invalid_inset_area_value_pairs(vertical, self_inline);
+ test_invalid_inset_area_value_pairs(vertical, self_block);
test_invalid_inset_area_value_pairs(vertical, start_end);
test_invalid_inset_area_value_pairs(vertical, self_start_end);
+ test_invalid_inset_area_value_pairs(inline, self_inline);
+ test_invalid_inset_area_value_pairs(inline, self_block);
test_invalid_inset_area_value_pairs(inline, start_end);
test_invalid_inset_area_value_pairs(inline, self_start_end);
+ test_invalid_inset_area_value_pairs(block, self_inline);
+ test_invalid_inset_area_value_pairs(block, self_block);
test_invalid_inset_area_value_pairs(block, start_end);
test_invalid_inset_area_value_pairs(block, self_start_end);
test_invalid_inset_area_value_pairs(start_end, self_start_end);
@@ -143,4 +157,6 @@
test_invalid_inset_area_value_equal_pairs(vertical);
test_invalid_inset_area_value_equal_pairs(inline);
test_invalid_inset_area_value_equal_pairs(block);
+ test_invalid_inset_area_value_equal_pairs(self_inline);
+ test_invalid_inset_area_value_equal_pairs(self_block);
</script>