Fix offsetLeft/offsetTop to match major browsers (#32761)

* Fix offsetLeft/offsetTop to match major browsers

See: https://github.com/w3c/csswg-drafts/issues/10549
Signed-off-by: Nico Burns <nico@nicoburns.com>

Fix crash when <html> element is absolutely positioned

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Update test expectations

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Update test expectations again

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Use PhysicalRect and PhysicalVec types

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Use is_some_and

Signed-off-by: Nico Burns <nico@nicoburns.com>

* clippy

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Apply comment changes from code review

Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Nico Burns 2024-11-17 04:28:38 +13:00 committed by GitHub
parent ee63174d6f
commit 6955950948
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 82 additions and 1209 deletions

View file

@ -37,6 +37,7 @@ use style_traits::{ParsingMode, ToCss};
use crate::flow::inline::construct::{TextTransformation, WhitespaceCollapse}; use crate::flow::inline::construct::{TextTransformation, WhitespaceCollapse};
use crate::fragment_tree::{BoxFragment, Fragment, FragmentFlags, FragmentTree, Tag}; use crate::fragment_tree::{BoxFragment, Fragment, FragmentFlags, FragmentTree, Tag};
use crate::geom::{PhysicalRect, PhysicalVec};
pub fn process_content_box_request( pub fn process_content_box_request(
requested_node: OpaqueNode, requested_node: OpaqueNode,
@ -335,10 +336,11 @@ fn process_offset_parent_query_inner(
struct NodeOffsetBoxInfo { struct NodeOffsetBoxInfo {
border_box: Rect<Au>, border_box: Rect<Au>,
offset_parent_node_address: Option<OpaqueNode>, offset_parent_node_address: Option<OpaqueNode>,
is_static_body_element: bool,
} }
// https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#extensions-to-the-htmlelement-interface // https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#extensions-to-the-htmlelement-interface
let mut parent_node_addresses = Vec::new(); let mut parent_node_addresses: Vec<Option<(OpaqueNode, bool)>> = Vec::new();
let tag_to_find = Tag::new(node); let tag_to_find = Tag::new(node);
let node_offset_box = fragment_tree.find(|fragment, level, containing_block| { let node_offset_box = fragment_tree.find(|fragment, level, containing_block| {
let base = fragment.base()?; let base = fragment.base()?;
@ -385,7 +387,7 @@ fn process_offset_parent_query_inner(
border_box.origin = Point2D::zero(); border_box.origin = Point2D::zero();
} }
let offset_parent_node_address = if is_fixed { let offset_parent_node = if is_fixed {
None None
} else { } else {
// Find the nearest ancestor element eligible as `offsetParent`. // Find the nearest ancestor element eligible as `offsetParent`.
@ -398,15 +400,20 @@ fn process_offset_parent_query_inner(
Some(NodeOffsetBoxInfo { Some(NodeOffsetBoxInfo {
border_box, border_box,
offset_parent_node_address, offset_parent_node_address: offset_parent_node.map(|node| node.0),
is_static_body_element: offset_parent_node.is_some_and(|node| node.1),
}) })
} else { } else {
// Record the paths of the nodes being traversed. // Record the paths of the nodes being traversed.
let parent_node_address = match fragment { let parent_node_address = match fragment {
Fragment::Box(fragment) | Fragment::Float(fragment) => { Fragment::Box(fragment) | Fragment::Float(fragment) => {
let is_eligible_parent = is_eligible_parent(fragment); let is_eligible_parent = is_eligible_parent(fragment);
let is_static_body_element = is_body_element &&
fragment.style.get_box().position == Position::Static;
match base.tag { match base.tag {
Some(tag) if is_eligible_parent && !tag.is_pseudo() => Some(tag.node), Some(tag) if is_eligible_parent && !tag.is_pseudo() => {
Some((tag.node, is_static_body_element))
},
_ => None, _ => None,
} }
}, },
@ -432,9 +439,36 @@ fn process_offset_parent_query_inner(
// zero and terminate this algorithm." (others) // zero and terminate this algorithm." (others)
let node_offset_box = node_offset_box?; let node_offset_box = node_offset_box?;
let offset_parent_padding_box_corner = node_offset_box let offset_parent_padding_box_corner = if let Some(offset_parent_node_address) =
.offset_parent_node_address node_offset_box.offset_parent_node_address
.map(|offset_parent_node_address| { {
// The spec (https://www.w3.org/TR/cssom-view-1/#extensions-to-the-htmlelement-interface)
// says that offsetTop/offsetLeft are always relative to the padding box of the offsetParent.
// However, in practice this is not true in major browsers in the case that the offsetParent is the body
// element and the body element is position:static. In that case offsetLeft/offsetTop are computed
// relative to the root node's border box.
if node_offset_box.is_static_body_element {
fn extract_box_fragment(
fragment: &Fragment,
containing_block: &PhysicalRect<Au>,
) -> PhysicalVec<Au> {
let (Fragment::Box(fragment) | Fragment::Float(fragment)) = fragment else {
unreachable!();
};
// Again, take the *first* associated CSS layout box.
fragment.border_rect().origin.to_vector() + containing_block.origin.to_vector()
}
let containing_block = &fragment_tree.initial_containing_block;
let fragment = &(*fragment_tree.root_fragments[0].borrow());
if let Fragment::AbsoluteOrFixedPositioned(shared_fragment) = fragment {
let shared_fragment = &*shared_fragment.borrow();
let fragment = &*shared_fragment.fragment.as_ref().unwrap().borrow();
extract_box_fragment(fragment, containing_block)
} else {
extract_box_fragment(fragment, containing_block)
}
} else {
// Find the top and left padding edges of "the first CSS layout box // Find the top and left padding edges of "the first CSS layout box
// associated with the `offsetParent` of the element". // associated with the `offsetParent` of the element".
// //
@ -447,27 +481,27 @@ fn process_offset_parent_query_inner(
Fragment::Box(fragment) | Fragment::Float(fragment) => { Fragment::Box(fragment) | Fragment::Float(fragment) => {
if fragment.base.tag == Some(offset_parent_node_tag) { if fragment.base.tag == Some(offset_parent_node_tag) {
// Again, take the *first* associated CSS layout box. // Again, take the *first* associated CSS layout box.
let padding_box_corner = let padding_box_corner = fragment.padding_rect().origin.to_vector()
fragment.padding_rect().origin.to_vector() + + containing_block.origin.to_vector();
containing_block.origin.to_vector();
let padding_box_corner = padding_box_corner.to_untyped();
Some(padding_box_corner) Some(padding_box_corner)
} else { } else {
None None
} }
}, },
Fragment::AbsoluteOrFixedPositioned(_) | Fragment::AbsoluteOrFixedPositioned(_)
Fragment::Text(_) | | Fragment::Text(_)
Fragment::Image(_) | | Fragment::Image(_)
Fragment::IFrame(_) | | Fragment::IFrame(_)
Fragment::Positioning(_) => None, | Fragment::Positioning(_) => None,
} }
}) })
.unwrap() .unwrap()
}) }
} else {
// "If the offsetParent of the element is null," subtract zero in the // "If the offsetParent of the element is null," subtract zero in the
// following step. // following step.
.unwrap_or(Vector2D::zero()); Vector2D::zero()
};
Some(OffsetParentResponse { Some(OffsetParentResponse {
node_address: node_offset_box.offset_parent_node_address.map(Into::into), node_address: node_offset_box.offset_parent_node_address.map(Into::into),
@ -480,7 +514,7 @@ fn process_offset_parent_query_inner(
// versa for the top border edge) // versa for the top border edge)
rect: node_offset_box rect: node_offset_box
.border_box .border_box
.translate(-offset_parent_padding_box_corner), .translate(-offset_parent_padding_box_corner.to_untyped()),
}) })
} }

View file

@ -1,190 +1,4 @@
[align-content-horiz-001a.html] [align-content-horiz-001a.html]
[.flexbox div 42]
expected: FAIL
[.flexbox div 43]
expected: FAIL
[.flexbox div 40]
expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46]
expected: FAIL
[.flexbox div 31]
expected: FAIL
[.flexbox div 44]
expected: FAIL
[.flexbox div 45]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48]
expected: FAIL
[.flexbox div 30]
expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66]
expected: FAIL
[.flexbox div 67]
expected: FAIL
[.flexbox div 24]
expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26]
expected: FAIL
[.flexbox div 27]
expected: FAIL
[.flexbox div 20]
expected: FAIL
[.flexbox div 21]
expected: FAIL
[.flexbox div 22]
expected: FAIL
[.flexbox div 23]
expected: FAIL
[.flexbox div 28]
expected: FAIL
[.flexbox div 29]
expected: FAIL
[.flexbox div 47]
expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55]
expected: FAIL
[.flexbox div 54]
expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51]
expected: FAIL
[.flexbox div 50]
expected: FAIL
[.flexbox div 53]
expected: FAIL
[.flexbox div 52]
expected: FAIL
[.flexbox div 72]
expected: FAIL
[.flexbox div 71]
expected: FAIL
[.flexbox div 70]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56]
expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19]
expected: FAIL
[.flexbox div 18]
expected: FAIL
[.flexbox div 69]
expected: FAIL
[.flexbox div 39]
expected: FAIL
[.flexbox div 38]
expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68]
expected: FAIL
[.flexbox div 36]
expected: FAIL
[.flexbox div 35]
expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +8,8 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32]
expected: FAIL

View file

@ -1,190 +1,4 @@
[align-content-horiz-001b.html] [align-content-horiz-001b.html]
[.flexbox div 42]
expected: FAIL
[.flexbox div 43]
expected: FAIL
[.flexbox div 40]
expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46]
expected: FAIL
[.flexbox div 31]
expected: FAIL
[.flexbox div 44]
expected: FAIL
[.flexbox div 45]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48]
expected: FAIL
[.flexbox div 30]
expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66]
expected: FAIL
[.flexbox div 67]
expected: FAIL
[.flexbox div 24]
expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26]
expected: FAIL
[.flexbox div 27]
expected: FAIL
[.flexbox div 20]
expected: FAIL
[.flexbox div 21]
expected: FAIL
[.flexbox div 22]
expected: FAIL
[.flexbox div 23]
expected: FAIL
[.flexbox div 28]
expected: FAIL
[.flexbox div 29]
expected: FAIL
[.flexbox div 47]
expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55]
expected: FAIL
[.flexbox div 54]
expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51]
expected: FAIL
[.flexbox div 50]
expected: FAIL
[.flexbox div 53]
expected: FAIL
[.flexbox div 52]
expected: FAIL
[.flexbox div 72]
expected: FAIL
[.flexbox div 71]
expected: FAIL
[.flexbox div 70]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56]
expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19]
expected: FAIL
[.flexbox div 18]
expected: FAIL
[.flexbox div 69]
expected: FAIL
[.flexbox div 39]
expected: FAIL
[.flexbox div 38]
expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68]
expected: FAIL
[.flexbox div 36]
expected: FAIL
[.flexbox div 35]
expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +8,8 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32]
expected: FAIL

View file

@ -1,190 +1,4 @@
[align-content-horiz-002.html] [align-content-horiz-002.html]
[.flexbox div 42]
expected: FAIL
[.flexbox div 43]
expected: FAIL
[.flexbox div 40]
expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46]
expected: FAIL
[.flexbox div 31]
expected: FAIL
[.flexbox div 44]
expected: FAIL
[.flexbox div 45]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48]
expected: FAIL
[.flexbox div 30]
expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66]
expected: FAIL
[.flexbox div 67]
expected: FAIL
[.flexbox div 24]
expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26]
expected: FAIL
[.flexbox div 27]
expected: FAIL
[.flexbox div 20]
expected: FAIL
[.flexbox div 21]
expected: FAIL
[.flexbox div 22]
expected: FAIL
[.flexbox div 23]
expected: FAIL
[.flexbox div 28]
expected: FAIL
[.flexbox div 29]
expected: FAIL
[.flexbox div 47]
expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55]
expected: FAIL
[.flexbox div 54]
expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51]
expected: FAIL
[.flexbox div 50]
expected: FAIL
[.flexbox div 53]
expected: FAIL
[.flexbox div 52]
expected: FAIL
[.flexbox div 72]
expected: FAIL
[.flexbox div 71]
expected: FAIL
[.flexbox div 70]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56]
expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19]
expected: FAIL
[.flexbox div 18]
expected: FAIL
[.flexbox div 69]
expected: FAIL
[.flexbox div 39]
expected: FAIL
[.flexbox div 38]
expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68]
expected: FAIL
[.flexbox div 36]
expected: FAIL
[.flexbox div 35]
expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +8,8 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32]
expected: FAIL

View file

@ -1,190 +1,4 @@
[align-content-vert-001a.html] [align-content-vert-001a.html]
[.flexbox div 42]
expected: FAIL
[.flexbox div 43]
expected: FAIL
[.flexbox div 40]
expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46]
expected: FAIL
[.flexbox div 31]
expected: FAIL
[.flexbox div 44]
expected: FAIL
[.flexbox div 45]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48]
expected: FAIL
[.flexbox div 30]
expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66]
expected: FAIL
[.flexbox div 67]
expected: FAIL
[.flexbox div 24]
expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26]
expected: FAIL
[.flexbox div 27]
expected: FAIL
[.flexbox div 20]
expected: FAIL
[.flexbox div 21]
expected: FAIL
[.flexbox div 22]
expected: FAIL
[.flexbox div 23]
expected: FAIL
[.flexbox div 28]
expected: FAIL
[.flexbox div 29]
expected: FAIL
[.flexbox div 47]
expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55]
expected: FAIL
[.flexbox div 54]
expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51]
expected: FAIL
[.flexbox div 50]
expected: FAIL
[.flexbox div 53]
expected: FAIL
[.flexbox div 52]
expected: FAIL
[.flexbox div 72]
expected: FAIL
[.flexbox div 71]
expected: FAIL
[.flexbox div 70]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56]
expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19]
expected: FAIL
[.flexbox div 18]
expected: FAIL
[.flexbox div 69]
expected: FAIL
[.flexbox div 39]
expected: FAIL
[.flexbox div 38]
expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68]
expected: FAIL
[.flexbox div 36]
expected: FAIL
[.flexbox div 35]
expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +8,8 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32]
expected: FAIL

View file

@ -8,9 +8,6 @@
[.flexbox div 40] [.flexbox div 40]
expected: FAIL expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46] [.flexbox div 46]
expected: FAIL expected: FAIL
@ -23,24 +20,12 @@
[.flexbox div 45] [.flexbox div 45]
expected: FAIL expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48] [.flexbox div 48]
expected: FAIL expected: FAIL
[.flexbox div 30] [.flexbox div 30]
expected: FAIL expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66] [.flexbox div 66]
expected: FAIL expected: FAIL
@ -50,9 +35,6 @@
[.flexbox div 24] [.flexbox div 24]
expected: FAIL expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26] [.flexbox div 26]
expected: FAIL expected: FAIL
@ -80,27 +62,12 @@
[.flexbox div 47] [.flexbox div 47]
expected: FAIL expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55] [.flexbox div 55]
expected: FAIL expected: FAIL
[.flexbox div 54] [.flexbox div 54]
expected: FAIL expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51] [.flexbox div 51]
expected: FAIL expected: FAIL
@ -122,39 +89,9 @@
[.flexbox div 70] [.flexbox div 70]
expected: FAIL expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56] [.flexbox div 56]
expected: FAIL expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19] [.flexbox div 19]
expected: FAIL expected: FAIL
@ -170,9 +107,6 @@
[.flexbox div 38] [.flexbox div 38]
expected: FAIL expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68] [.flexbox div 68]
expected: FAIL expected: FAIL
@ -182,9 +116,6 @@
[.flexbox div 35] [.flexbox div 35]
expected: FAIL expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +125,41 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32] [.flexbox div 32]
expected: FAIL expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 64]
expected: FAIL

View file

@ -1,190 +1,4 @@
[align-content-vert-002.html] [align-content-vert-002.html]
[.flexbox div 42]
expected: FAIL
[.flexbox div 43]
expected: FAIL
[.flexbox div 40]
expected: FAIL
[.flexbox div 41]
expected: FAIL
[.flexbox div 46]
expected: FAIL
[.flexbox div 31]
expected: FAIL
[.flexbox div 44]
expected: FAIL
[.flexbox div 45]
expected: FAIL
[.flexbox div 60]
expected: FAIL
[.flexbox div 61]
expected: FAIL
[.flexbox div 48]
expected: FAIL
[.flexbox div 30]
expected: FAIL
[.flexbox div 64]
expected: FAIL
[.flexbox div 65]
expected: FAIL
[.flexbox div 66]
expected: FAIL
[.flexbox div 67]
expected: FAIL
[.flexbox div 24]
expected: FAIL
[.flexbox div 25]
expected: FAIL
[.flexbox div 26]
expected: FAIL
[.flexbox div 27]
expected: FAIL
[.flexbox div 20]
expected: FAIL
[.flexbox div 21]
expected: FAIL
[.flexbox div 22]
expected: FAIL
[.flexbox div 23]
expected: FAIL
[.flexbox div 28]
expected: FAIL
[.flexbox div 29]
expected: FAIL
[.flexbox div 47]
expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63]
expected: FAIL
[.flexbox div 62]
expected: FAIL
[.flexbox div 55]
expected: FAIL
[.flexbox div 54]
expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49]
expected: FAIL
[.flexbox div 51]
expected: FAIL
[.flexbox div 50]
expected: FAIL
[.flexbox div 53]
expected: FAIL
[.flexbox div 52]
expected: FAIL
[.flexbox div 72]
expected: FAIL
[.flexbox div 71]
expected: FAIL
[.flexbox div 70]
expected: FAIL
[.flexbox div 59]
expected: FAIL
[.flexbox div 58]
expected: FAIL
[.flexbox div 56]
expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17]
expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19]
expected: FAIL
[.flexbox div 18]
expected: FAIL
[.flexbox div 69]
expected: FAIL
[.flexbox div 39]
expected: FAIL
[.flexbox div 38]
expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68]
expected: FAIL
[.flexbox div 36]
expected: FAIL
[.flexbox div 35]
expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +8,8 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32]
expected: FAIL

View file

@ -80,9 +80,6 @@
[.flexbox div 47] [.flexbox div 47]
expected: FAIL expected: FAIL
[.flexbox div 34]
expected: FAIL
[.flexbox div 63] [.flexbox div 63]
expected: FAIL expected: FAIL
@ -95,9 +92,6 @@
[.flexbox div 54] [.flexbox div 54]
expected: FAIL expected: FAIL
[.flexbox div 57]
expected: FAIL
[.flexbox div 49] [.flexbox div 49]
expected: FAIL expected: FAIL
@ -131,30 +125,9 @@
[.flexbox div 56] [.flexbox div 56]
expected: FAIL expected: FAIL
[.flexbox div 11]
expected: FAIL
[.flexbox div 10]
expected: FAIL
[.flexbox div 13]
expected: FAIL
[.flexbox div 12]
expected: FAIL
[.flexbox div 15]
expected: FAIL
[.flexbox div 14]
expected: FAIL
[.flexbox div 17] [.flexbox div 17]
expected: FAIL expected: FAIL
[.flexbox div 16]
expected: FAIL
[.flexbox div 19] [.flexbox div 19]
expected: FAIL expected: FAIL
@ -170,9 +143,6 @@
[.flexbox div 38] [.flexbox div 38]
expected: FAIL expected: FAIL
[.flexbox div 37]
expected: FAIL
[.flexbox div 68] [.flexbox div 68]
expected: FAIL expected: FAIL
@ -182,9 +152,6 @@
[.flexbox div 35] [.flexbox div 35]
expected: FAIL expected: FAIL
[.flexbox div 5]
expected: FAIL
[.flexbox div 4] [.flexbox div 4]
expected: FAIL expected: FAIL
@ -194,24 +161,11 @@
[.flexbox div 6] [.flexbox div 6]
expected: FAIL expected: FAIL
[.flexbox div 1]
expected: FAIL
[.flexbox div 3] [.flexbox div 3]
expected: FAIL expected: FAIL
[.flexbox div 2]
expected: FAIL
[.flexbox div 33]
expected: FAIL
[.flexbox div 9]
expected: FAIL
[.flexbox div 8] [.flexbox div 8]
expected: FAIL expected: FAIL
[.flexbox div 32] [.flexbox div 32]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-column-vert-lr-flexbox-item.html] [align-items-baseline-column-vert-lr-flexbox-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-column-vert-lr-grid-item.html] [align-items-baseline-column-vert-lr-grid-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +0,0 @@
[align-items-baseline-column-vert-lr-items.html]
[#target > div 1]
expected: FAIL
[#target > div 2]
expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-column-vert-lr-table-item.html] [align-items-baseline-column-vert-lr-table-item.html]
[#target > * 1]
expected: FAIL
[#target > * 2] [#target > * 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-lr-column-horz-flexbox-item.html] [align-items-baseline-vert-lr-column-horz-flexbox-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-lr-column-horz-grid-item.html] [align-items-baseline-vert-lr-column-horz-grid-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-lr-column-horz-items.html] [align-items-baseline-vert-lr-column-horz-items.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-rl-column-horz-flexbox-item.html] [align-items-baseline-vert-rl-column-horz-flexbox-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-rl-column-horz-grid-item.html] [align-items-baseline-vert-rl-column-horz-grid-item.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,3 @@
[align-items-baseline-vert-rl-column-horz-items.html] [align-items-baseline-vert-rl-column-horz-items.html]
[#target > div 1]
expected: FAIL
[#target > div 2] [#target > div 2]
expected: FAIL expected: FAIL

View file

@ -1,4 +0,0 @@
[hittest-overlapping-relative.html]
[Flexboxes should perform hit testing in reverse paint order for overlapping elements: relative case (crbug.com/844505)]
expected: FAIL

View file

@ -1,2 +0,0 @@
[position-sticky-stacking-context.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[offsetTopLeft-inline.html]
expected: FAIL

View file

@ -1,12 +0,0 @@
[legend-margin-inline.html]
[left]
expected: FAIL
[center]
expected: FAIL
[right]
expected: FAIL
[10px]
expected: FAIL