aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/style/gecko/wrapper.rs10
-rw-r--r--components/style/invalidation/element/element_wrapper.rs5
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()
}