aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-06-11 15:48:36 +0200
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-07-22 17:40:16 +0200
commit1f3c879a85a128c89e1a962e10e1e3d11550d37b (patch)
treef5015697a17c5ef83e02d183c5bcb3eb444b2794 /components/script/dom/htmlmediaelement.rs
parentf8ae394cadb28958e52ae941bc3a89f4ea7fb4b5 (diff)
downloadservo-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.rs90
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) {