diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-06-11 15:48:36 +0200 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-07-22 17:40:16 +0200 |
commit | 1f3c879a85a128c89e1a962e10e1e3d11550d37b (patch) | |
tree | f5015697a17c5ef83e02d183c5bcb3eb444b2794 /components/script/dom/htmlmediaelement.rs | |
parent | f8ae394cadb28958e52ae941bc3a89f4ea7fb4b5 (diff) | |
download | servo-1f3c879a85a128c89e1a962e10e1e3d11550d37b.tar.gz servo-1f3c879a85a128c89e1a962e10e1e3d11550d37b.zip |
Detach shadow clean up
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 90 |
1 files changed, 44 insertions, 46 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index f20db8eb83e..007e1c8d954 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -1737,55 +1737,53 @@ impl HTMLMediaElement { // if we are already showing the controls. return; } - if let Ok(shadow_root) = element.attach_shadow(IsUserAgentWidget::Yes) { - let document = document_from_node(self); - let script = HTMLScriptElement::new( - local_name!("script"), - None, - &document, - ElementCreator::ScriptCreated, - ); - let mut media_controls_script = - resources::read_string(EmbedderResource::MediaControlsJS); - // This is our hacky way to temporarily workaround the lack of a privileged - // JS context. - // The media controls UI accesses the document.servoGetMediaControls(id) API - // to get an instance to the media controls ShadowRoot. - // `id` needs to match the internally generated UUID assigned to a media element. - let id = document.register_media_controls(&shadow_root); - let media_controls_script = media_controls_script.as_mut_str().replace("@@@id@@@", &id); - *self.media_controls_id.borrow_mut() = Some(id); - script - .upcast::<Node>() - .SetTextContent(Some(DOMString::from(media_controls_script))); - if let Err(e) = shadow_root - .upcast::<Node>() - .AppendChild(&*script.upcast::<Node>()) - { - warn!("Could not render media controls {:?}", e); - return; - } - - let media_controls_style = resources::read_string(EmbedderResource::MediaControlsCSS); - let style = HTMLStyleElement::new( - local_name!("script"), - None, - &document, - ElementCreator::ScriptCreated, - ); - style - .upcast::<Node>() - .SetTextContent(Some(DOMString::from(media_controls_style))); + let shadow_root = element.attach_shadow(IsUserAgentWidget::Yes).unwrap(); + let document = document_from_node(self); + let script = HTMLScriptElement::new( + local_name!("script"), + None, + &document, + ElementCreator::ScriptCreated, + ); + let mut media_controls_script = resources::read_string(EmbedderResource::MediaControlsJS); + // This is our hacky way to temporarily workaround the lack of a privileged + // JS context. + // The media controls UI accesses the document.servoGetMediaControls(id) API + // to get an instance to the media controls ShadowRoot. + // `id` needs to match the internally generated UUID assigned to a media element. + let id = document.register_media_controls(&shadow_root); + let media_controls_script = media_controls_script.as_mut_str().replace("@@@id@@@", &id); + *self.media_controls_id.borrow_mut() = Some(id); + script + .upcast::<Node>() + .SetTextContent(Some(DOMString::from(media_controls_script))); + if let Err(e) = shadow_root + .upcast::<Node>() + .AppendChild(&*script.upcast::<Node>()) + { + warn!("Could not render media controls {:?}", e); + return; + } - if let Err(e) = shadow_root - .upcast::<Node>() - .AppendChild(&*style.upcast::<Node>()) - { - warn!("Could not render media controls {:?}", e); - } + let media_controls_style = resources::read_string(EmbedderResource::MediaControlsCSS); + let style = HTMLStyleElement::new( + local_name!("script"), + None, + &document, + ElementCreator::ScriptCreated, + ); + style + .upcast::<Node>() + .SetTextContent(Some(DOMString::from(media_controls_style))); - self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); + if let Err(e) = shadow_root + .upcast::<Node>() + .AppendChild(&*style.upcast::<Node>()) + { + warn!("Could not render media controls {:?}", e); } + + self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); } fn remove_controls(&self) { |