diff options
4 files changed, 95 insertions, 1 deletions
diff --git a/components/layout/flow.rs b/components/layout/flow.rs index 2476e2431da..36b8da6cc48 100644 --- a/components/layout/flow.rs +++ b/components/layout/flow.rs @@ -1405,7 +1405,8 @@ impl<'a> ImmutableFlowUtils for &'a Flow { return kid.as_inline().baseline_offset_of_last_line() } if kid.is_block_like() && - kid.as_block().formatting_context_type() == FormattingContextType::None { + kid.as_block().formatting_context_type() == FormattingContextType::None && + !base(kid).flags.contains(IS_ABSOLUTELY_POSITIONED) { if let Some(baseline_offset) = kid.baseline_offset_of_last_line_box_in_flow() { return Some(base(kid).position.start.b + baseline_offset) } diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index d4ea44a5cc0..0625c6745bc 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -2496,6 +2496,18 @@ "url": "/_mozilla/css/inline_block_border_intrinsic_size_a.html" } ], + "css/inline_block_height_with_out_of_flow_child_a.html": [ + { + "path": "css/inline_block_height_with_out_of_flow_child_a.html", + "references": [ + [ + "/_mozilla/css/inline_block_height_with_out_of_flow_child_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/inline_block_height_with_out_of_flow_child_a.html" + } + ], "css/inline_block_img_a.html": [ { "path": "css/inline_block_img_a.html", @@ -11932,6 +11944,18 @@ "url": "/_mozilla/css/inline_block_border_intrinsic_size_a.html" } ], + "css/inline_block_height_with_out_of_flow_child_a.html": [ + { + "path": "css/inline_block_height_with_out_of_flow_child_a.html", + "references": [ + [ + "/_mozilla/css/inline_block_height_with_out_of_flow_child_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/inline_block_height_with_out_of_flow_child_a.html" + } + ], "css/inline_block_img_a.html": [ { "path": "css/inline_block_img_a.html", diff --git a/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html new file mode 100644 index 00000000000..5aab3a8d04d --- /dev/null +++ b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> +<link rel="match" href="inline_block_height_with_out_of_flow_child_ref.html"> +<style> + .options-bar { + background-color: lightblue; + color: white; + } + + .winkwink-nudgenudge { + display: inline-block; + } + + .tier-1 { + position: relative; + } + + .subnav { + position: absolute; + top: 100px; + } +</style> +</head> +<body> +<div class="options-bar"> + <div class="winkwink-nudgenudge"> + <div class="tier-1"> + <div class="subnav">A</div> + </div> + </div> +</div> +</body> +</html> + diff --git a/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html new file mode 100644 index 00000000000..64603f8c979 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<head> +<style> + .options-bar { + background-color: lightblue; + color: white; + } + + .winkwink-nudgenudge { + display: inline-block; + } + + .tier-1 { + position: relative; + } + + .subnav { + position: absolute; + top: 100px; + } +</style> +</head> +<body> +<div class="options-bar"> + <div class="winkwink-nudgenudge"> + <div class="tier-1"> + </div> + </div> +</div> +</body> +</html> + + |