aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout/flow.rs3
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json24
-rw-r--r--tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html35
-rw-r--r--tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html34
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>
+
+