diff options
-rw-r--r-- | components/style/gecko/wrapper.rs | 10 | ||||
-rw-r--r-- | components/style/invalidation/element/element_wrapper.rs | 5 |
2 files changed, 15 insertions, 0 deletions
diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 66b7f538dd6..ff0f9634afb 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -1795,12 +1795,22 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { parent_node.and_then(|n| n.as_element()) } + #[inline] fn pseudo_element_originating_element(&self) -> Option<Self> { debug_assert!(self.implemented_pseudo_element().is_some()); self.closest_non_native_anonymous_ancestor() } #[inline] + fn assigned_slot(&self) -> Option<Self> { + let slot = self.get_extended_slots()?._base.mAssignedSlot.mRawPtr; + + unsafe { + Some(GeckoElement(&slot.as_ref()?._base._base._base._base)) + } + } + + #[inline] fn first_child_element(&self) -> Option<Self> { let mut child = self.as_node().first_child(); while let Some(child_node) = child { diff --git a/components/style/invalidation/element/element_wrapper.rs b/components/style/invalidation/element/element_wrapper.rs index 4ef5f5cad86..65f3ea89c19 100644 --- a/components/style/invalidation/element/element_wrapper.rs +++ b/components/style/invalidation/element/element_wrapper.rs @@ -351,6 +351,11 @@ impl<'a, E> Element for ElementWrapper<'a, E> .map(|e| ElementWrapper::new(e, self.snapshot_map)) } + fn assigned_slot(&self) -> Option<Self> { + self.element.assigned_slot() + .map(|e| ElementWrapper::new(e, self.snapshot_map)) + } + fn blocks_ancestor_combinators(&self) -> bool { self.element.blocks_ancestor_combinators() } |