diff --git a/components/layout/display_list/items.rs b/components/layout/display_list/items.rs index ff276b674e4b..62924fa6c2f8 100644 --- a/components/layout/display_list/items.rs +++ b/components/layout/display_list/items.rs @@ -195,7 +195,7 @@ pub struct StackingContext { /// The clip and scroll info for this StackingContext. pub parent_clipping_and_scrolling: ClippingAndScrolling, - /// The index of the reference frame that this stacking context estalishes. + /// The index of the reference frame that this stacking context establishes. pub established_reference_frame: Option, } @@ -261,6 +261,7 @@ impl StackingContext { let pop_item = DisplayItem::PopStackingContext(Box::new(PopStackingContextItem { base: base_item.clone(), stacking_context_id: self.id, + established_reference_frame: self.established_reference_frame.is_some(), })); let push_item = DisplayItem::PushStackingContext(Box::new(PushStackingContextItem { @@ -657,6 +658,8 @@ pub struct PopStackingContextItem { pub base: BaseDisplayItem, pub stacking_context_id: StackingContextId, + + pub established_reference_frame: bool, } /// Starts a group of items inside a particular scroll root. diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index 973ef623d5ae..cc0e70a77ecc 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -186,7 +186,7 @@ impl DisplayItem { ); IsContentful(false) }, - DisplayItem::PushStackingContext(ref mut item) => { + DisplayItem::PushStackingContext(ref item) => { let stacking_context = &item.stacking_context; debug_assert_eq!(stacking_context.context_type, StackingContextType::Real); @@ -252,8 +252,11 @@ impl DisplayItem { builder.push_item(&WrDisplayItem::PushStackingContext(wr_item)); IsContentful(false) }, - DisplayItem::PopStackingContext(_) => { + DisplayItem::PopStackingContext(ref item) => { builder.pop_stacking_context(); + if item.established_reference_frame { + builder.pop_reference_frame(); + } IsContentful(false) }, DisplayItem::DefineClipScrollNode(ref mut item) => { diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini deleted file mode 100644 index 47ca5b4ed242..000000000000 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[mix-blend-mode-sibling-with-3D-transform.html] - type: reftest - expected: FAIL