From bb5234767d0e121073d3e76643654ea184a9e7ee Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 2 Oct 2015 10:09:25 -0700 Subject: [PATCH] Create a pseudo-stacking context for positioned floats. Fixes #7828 --- components/layout/display_list_builder.rs | 10 +++---- tests/ref/basic.list | 1 + ...at_positioned_pseudo_stacking_context.html | 29 +++++++++++++++++++ ...ositioned_pseudo_stacking_context_ref.html | 28 ++++++++++++++++++ .../html4/anonymous-boxes-001.htm.ini | 3 -- 5 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 tests/ref/float_positioned_pseudo_stacking_context.html create mode 100644 tests/ref/float_positioned_pseudo_stacking_context_ref.html delete mode 100644 tests/wpt/metadata-css/css21_dev/html4/anonymous-boxes-001.htm.ini diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index 49c140cbedb..d9da32cf69b 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -1594,11 +1594,8 @@ impl BlockFlowDisplayListBuilding for BlockFlow { scroll_policy, StackingContextCreationMode::Normal)) } else { - match self.fragment.style.get_box().position { - position::T::static_ => {} - _ => { - display_list.form_pseudo_stacking_context_for_positioned_content(); - } + if self.fragment.style.get_box().position != position::T::static_ { + display_list.form_pseudo_stacking_context_for_positioned_content(); } DisplayListBuildingResult::Normal(display_list) } @@ -1717,6 +1714,9 @@ impl BlockFlowDisplayListBuilding for BlockFlow { ScrollPolicy::Scrollable, StackingContextCreationMode::Normal)) } else { + if self.fragment.style.get_box().position != position::T::static_ { + display_list.form_pseudo_stacking_context_for_positioned_content(); + } DisplayListBuildingResult::Normal(display_list) } } diff --git a/tests/ref/basic.list b/tests/ref/basic.list index c9067f5569d..174a7a645b8 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -113,6 +113,7 @@ prefs:"layout.flex.enabled" == flex_row_direction.html flex_row_direction_ref.ht == float_intrinsic_height.html float_intrinsic_height_ref.html == float_intrinsic_width_a.html float_intrinsic_width_ref.html == float_overflow_area_a.html float_overflow_area_ref.html +== float_positioned_pseudo_stacking_context.html float_positioned_pseudo_stacking_context_ref.html == float_right_intrinsic_width_a.html float_right_intrinsic_width_ref.html == float_table_a.html float_table_ref.html == float_under_top_margin_a.html float_under_top_margin_ref.html diff --git a/tests/ref/float_positioned_pseudo_stacking_context.html b/tests/ref/float_positioned_pseudo_stacking_context.html new file mode 100644 index 00000000000..567608dee9a --- /dev/null +++ b/tests/ref/float_positioned_pseudo_stacking_context.html @@ -0,0 +1,29 @@ + + + + +
+
+ + diff --git a/tests/ref/float_positioned_pseudo_stacking_context_ref.html b/tests/ref/float_positioned_pseudo_stacking_context_ref.html new file mode 100644 index 00000000000..ca58764705c --- /dev/null +++ b/tests/ref/float_positioned_pseudo_stacking_context_ref.html @@ -0,0 +1,28 @@ + + + + +
+
+ + diff --git a/tests/wpt/metadata-css/css21_dev/html4/anonymous-boxes-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/anonymous-boxes-001.htm.ini deleted file mode 100644 index 9b3d62e725c..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/anonymous-boxes-001.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[anonymous-boxes-001.htm] - type: reftest - expected: FAIL