aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/document.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/document.rs')
-rw-r--r--components/script/dom/document.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 78ccbbdf1f5..e70501d3711 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -241,6 +241,8 @@ pub struct Document {
referrer_policy: Cell<Option<ReferrerPolicy>>,
/// https://html.spec.whatwg.org/multipage/#dom-document-referrer
referrer: Option<String>,
+ /// https://html.spec.whatwg.org/multipage/#target-element
+ target_element: MutNullableHeap<JS<Element>>,
}
#[derive(JSTraceable, HeapSizeOf)]
@@ -1735,6 +1737,7 @@ impl Document {
origin: origin,
referrer: referrer,
referrer_policy: Cell::new(referrer_policy),
+ target_element: MutNullableHeap::new(None),
}
}
@@ -1886,6 +1889,22 @@ impl Document {
pub fn get_referrer_policy(&self) -> Option<ReferrerPolicy> {
return self.referrer_policy.get();
}
+
+ pub fn set_target_element(&self, node: Option<&Element>) {
+ if let Some(ref element) = self.target_element.get() {
+ element.set_target_state(false);
+ }
+
+ self.target_element.set(node);
+
+ if let Some(ref element) = self.target_element.get() {
+ element.set_target_state(true);
+ }
+
+ self.window.reflow(ReflowGoal::ForDisplay,
+ ReflowQueryType::NoQuery,
+ ReflowReason::ElementStateChanged);
+ }
}