mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Implement method to remove media controls
This commit is contained in:
parent
142d42a833
commit
23def72787
3 changed files with 24 additions and 6 deletions
|
@ -20,6 +20,7 @@ use crate::dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFram
|
|||
use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter;
|
||||
use crate::dom::bindings::codegen::Bindings::PerformanceBinding::PerformanceMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::ShadowRootBinding::ShadowRootMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::TouchBinding::TouchMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::{
|
||||
FrameRequestCallback, ScrollBehavior, WindowMethods,
|
||||
|
@ -2474,6 +2475,14 @@ impl Document {
|
|||
}
|
||||
|
||||
pub fn unregister_media_controls(&self, id: &str) {
|
||||
if let Some(media_controls) = self.media_controls.borrow().get(id) {
|
||||
media_controls.Host().detach_shadow();
|
||||
media_controls
|
||||
.upcast::<Node>()
|
||||
.dirty(NodeDamage::OtherNodeDamage);
|
||||
} else {
|
||||
debug_assert!(false, "Trying to unregister unknown media controls");
|
||||
}
|
||||
self.media_controls.borrow_mut().remove(id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -501,6 +501,15 @@ impl Element {
|
|||
|
||||
Ok(shadow_root)
|
||||
}
|
||||
|
||||
pub fn detach_shadow(&self) {
|
||||
if let Some(ref shadow_root) = self.shadow_root() {
|
||||
self.node.owner_doc().unregister_shadow_root(shadow_root);
|
||||
self.ensure_rare_data().shadow_root = None;
|
||||
} else {
|
||||
debug_assert!(false, "Trying to detach a non-attached shadow root");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
|
|
|
@ -1788,8 +1788,10 @@ impl HTMLMediaElement {
|
|||
}
|
||||
}
|
||||
|
||||
fn hide_controls(&self) {
|
||||
println!("hide_controls");
|
||||
fn remove_controls(&self) {
|
||||
if let Some(ref id) = *self.media_controls_id.borrow() {
|
||||
document_from_node(self).unregister_media_controls(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1833,9 +1835,7 @@ impl Drop for HTMLMediaElement {
|
|||
.unwrap()
|
||||
.shutdown_player(&client_context_id, player.clone());
|
||||
}
|
||||
if let Some(ref id) = *self.media_controls_id.borrow() {
|
||||
document_from_node(self).unregister_media_controls(id);
|
||||
}
|
||||
self.remove_controls();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2278,7 +2278,7 @@ impl VirtualMethods for HTMLMediaElement {
|
|||
if mutation.new_value(attr).is_some() {
|
||||
self.render_controls();
|
||||
} else {
|
||||
self.hide_controls();
|
||||
self.remove_controls();
|
||||
}
|
||||
},
|
||||
_ => (),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue