:
- // > Flex items paint exactly the same as inline blocks [CSS2], except that order-modified
- // > document order is used in place of raw document order, and z-index values other than auto
- // > create a stacking context even if position is static (behaving exactly as if position
- // > were relative).
- if self.get_box().position == ComputedPosition::Static &&
- !fragment_flags.contains(FragmentFlags::IS_FLEX_ITEM)
- {
- return false;
- }
-
- // For absolutely and relatively positioned fragments we only establish a stacking
- // context if there is a z-index set.
- // See https://www.w3.org/TR/CSS2/visuren.html#z-index
- !self.get_position().z_index.is_auto()
+ // TODO: We need to handle CSS Contain here.
+ false
}
/// Returns true if this style establishes a containing block for absolute
diff --git a/components/layout_2020/taffy/layout.rs b/components/layout_2020/taffy/layout.rs
index 2bee4c590f8..0d7e34af882 100644
--- a/components/layout_2020/taffy/layout.rs
+++ b/components/layout_2020/taffy/layout.rs
@@ -20,7 +20,9 @@ use crate::formatting_contexts::{
Baselines, IndependentFormattingContext, IndependentFormattingContextContents,
IndependentLayout,
};
-use crate::fragment_tree::{BoxFragment, CollapsedBlockMargins, Fragment, SpecificLayoutInfo};
+use crate::fragment_tree::{
+ BoxFragment, CollapsedBlockMargins, Fragment, FragmentFlags, SpecificLayoutInfo,
+};
use crate::geom::{
LogicalSides, LogicalVec2, PhysicalPoint, PhysicalRect, PhysicalSides, PhysicalSize, Size,
SizeConstraint, Sizes,
@@ -560,8 +562,12 @@ impl TaffyContainer {
match &mut child.taffy_level_box {
TaffyItemBoxInner::InFlowBox(independent_box) => {
+ let mut fragment_info = independent_box.base_fragment_info();
+ fragment_info
+ .flags
+ .insert(FragmentFlags::IS_FLEX_OR_GRID_ITEM);
let mut box_fragment = BoxFragment::new(
- independent_box.base_fragment_info(),
+ fragment_info,
independent_box.style().clone(),
std::mem::take(&mut child.child_fragments),
content_size,
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index 79668fb0ad6..e54ddc40d22 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -307667,6 +307667,45 @@
{}
]
],
+ "will-change-stacking-context-z-index-2.html": [
+ "9379185048a78b031e8ac290bd7bb3e5df24fa5f",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "will-change-stacking-context-z-index-3.html": [
+ "4ec40ae1a430a095ea6f703c8c27698e04792220",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "will-change-stacking-context-z-index-4.html": [
+ "d8a87b23415c3c10a6f4875f16cd63301e789152",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"will-change-transform-add-content.html": [
"1d8568ee629e48adfe99abab2e2194a73ae1301a",
[
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini
deleted file mode 100644
index 45cf6fc0460..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini
deleted file mode 100644
index 4ff1ef0fe2d..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini
deleted file mode 100644
index 837fbd2a8c1..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini
deleted file mode 100644
index fd41d4c1a42..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini
deleted file mode 100644
index 293ed0639f2..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini
deleted file mode 100644
index eb2233d3700..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini
deleted file mode 100644
index cb9905e7a27..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini
deleted file mode 100644
index f3a786abf7b..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini
deleted file mode 100644
index 03f883fbceb..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini
deleted file mode 100644
index f89f4e9cfbe..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini
deleted file mode 100644
index 479e338b1fd..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-inline-z-axis-ordering-overlapped-items-006.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-a.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-a.html.ini
deleted file mode 100644
index 64b4b2b480e..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-a.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-layout-z-order-a.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-b.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-b.html.ini
deleted file mode 100644
index 7573aba43fd..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-layout-z-order-b.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-layout-z-order-b.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini
deleted file mode 100644
index 3a9b399710f..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini
deleted file mode 100644
index 3702bfaad3d..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini
deleted file mode 100644
index 0a3c12ac1bf..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini
deleted file mode 100644
index 221e23ddb98..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini
deleted file mode 100644
index 43014f76ca9..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini
deleted file mode 100644
index 98556a4a8ca..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini
deleted file mode 100644
index c947cd0caf8..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini
deleted file mode 100644
index 80644b4df38..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini
deleted file mode 100644
index c6498b7b9c0..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini
deleted file mode 100644
index c214befe848..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini b/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini
deleted file mode 100644
index b4f85a68692..00000000000
--- a/tests/wpt/meta/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[grid-z-axis-ordering-overlapped-items-006.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-will-change/will-change-stacking-context-z-index-3.html.ini b/tests/wpt/meta/css/css-will-change/will-change-stacking-context-z-index-3.html.ini
new file mode 100644
index 00000000000..d0c021b9dd0
--- /dev/null
+++ b/tests/wpt/meta/css/css-will-change/will-change-stacking-context-z-index-3.html.ini
@@ -0,0 +1,2 @@
+[will-change-stacking-context-z-index-3.html]
+ prefs: ["layout_grid_enabled:true"]
diff --git a/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-2.html b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-2.html
new file mode 100644
index 00000000000..9379185048a
--- /dev/null
+++ b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-2.html
@@ -0,0 +1,29 @@
+
+CSS Test: `will-change: z-index`
+
+
+
+
+
+
+
+Test passes if there is a filled green square and no red.
+
diff --git a/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-3.html b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-3.html
new file mode 100644
index 00000000000..4ec40ae1a43
--- /dev/null
+++ b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-3.html
@@ -0,0 +1,29 @@
+
+CSS Test: `will-change: z-index`
+
+
+
+
+
+
+
+Test passes if there is a filled green square and no red.
+
diff --git a/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-4.html b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-4.html
new file mode 100644
index 00000000000..d8a87b23415
--- /dev/null
+++ b/tests/wpt/tests/css/css-will-change/will-change-stacking-context-z-index-4.html
@@ -0,0 +1,28 @@
+
+CSS Test: `will-change: z-index`
+
+
+
+
+
+
+
+Test passes if there is a filled green square and no red.
+