aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlstyleelement.rs
diff options
context:
space:
mode:
authorVincent Ricard <magic@magicninja.org>2020-10-08 22:30:22 +0200
committerVincent Ricard <magic@magicninja.org>2020-10-10 21:21:00 +0200
commite7199c029f3ce276c77ce9680eb198fdfdb650d8 (patch)
tree5c819d27f614b6dd142af1efc4bbbb80c03052b1 /components/script/dom/htmlstyleelement.rs
parent406d15974f3231dc769c2703e89b986ef9b20210 (diff)
downloadservo-e7199c029f3ce276c77ce9680eb198fdfdb650d8.tar.gz
servo-e7199c029f3ce276c77ce9680eb198fdfdb650d8.zip
Implements Stylesheet.ownerNode
Diffstat (limited to 'components/script/dom/htmlstyleelement.rs')
-rw-r--r--components/script/dom/htmlstyleelement.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs
index 6d10b0838f7..4e81837fc35 100644
--- a/components/script/dom/htmlstyleelement.rs
+++ b/components/script/dom/htmlstyleelement.rs
@@ -144,7 +144,7 @@ impl HTMLStyleElement {
stylesheets_owner.remove_stylesheet(self.upcast(), s)
}
*self.stylesheet.borrow_mut() = Some(s.clone());
- self.cssom_stylesheet.set(None);
+ self.clean_stylesheet_ownership();
stylesheets_owner.add_stylesheet(self.upcast(), s);
}
@@ -166,6 +166,13 @@ impl HTMLStyleElement {
})
})
}
+
+ fn clean_stylesheet_ownership(&self) {
+ if let Some(cssom_stylesheet) = self.cssom_stylesheet.get() {
+ cssom_stylesheet.set_owner(None);
+ }
+ self.cssom_stylesheet.set(None);
+ }
}
impl VirtualMethods for HTMLStyleElement {
@@ -217,6 +224,7 @@ impl VirtualMethods for HTMLStyleElement {
if context.tree_connected {
if let Some(s) = self.stylesheet.borrow_mut().take() {
+ self.clean_stylesheet_ownership();
stylesheets_owner_from_node(self).remove_stylesheet(self.upcast(), &s)
}
}