diff options
author | Vincent Ricard <magic@magicninja.org> | 2020-10-08 22:30:22 +0200 |
---|---|---|
committer | Vincent Ricard <magic@magicninja.org> | 2020-10-10 21:21:00 +0200 |
commit | e7199c029f3ce276c77ce9680eb198fdfdb650d8 (patch) | |
tree | 5c819d27f614b6dd142af1efc4bbbb80c03052b1 /components/script/dom/htmlstyleelement.rs | |
parent | 406d15974f3231dc769c2703e89b986ef9b20210 (diff) | |
download | servo-e7199c029f3ce276c77ce9680eb198fdfdb650d8.tar.gz servo-e7199c029f3ce276c77ce9680eb198fdfdb650d8.zip |
Implements Stylesheet.ownerNode
Diffstat (limited to 'components/script/dom/htmlstyleelement.rs')
-rw-r--r-- | components/script/dom/htmlstyleelement.rs | 10 |
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) } } |