mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01: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::NodeBinding::NodeMethods;
|
||||||
use crate::dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter;
|
use crate::dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter;
|
||||||
use crate::dom::bindings::codegen::Bindings::PerformanceBinding::PerformanceMethods;
|
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::TouchBinding::TouchMethods;
|
||||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::{
|
use crate::dom::bindings::codegen::Bindings::WindowBinding::{
|
||||||
FrameRequestCallback, ScrollBehavior, WindowMethods,
|
FrameRequestCallback, ScrollBehavior, WindowMethods,
|
||||||
|
@ -2474,6 +2475,14 @@ impl Document {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unregister_media_controls(&self, id: &str) {
|
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);
|
self.media_controls.borrow_mut().remove(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -501,6 +501,15 @@ impl Element {
|
||||||
|
|
||||||
Ok(shadow_root)
|
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)]
|
#[allow(unsafe_code)]
|
||||||
|
|
|
@ -1788,8 +1788,10 @@ impl HTMLMediaElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn hide_controls(&self) {
|
fn remove_controls(&self) {
|
||||||
println!("hide_controls");
|
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()
|
.unwrap()
|
||||||
.shutdown_player(&client_context_id, player.clone());
|
.shutdown_player(&client_context_id, player.clone());
|
||||||
}
|
}
|
||||||
if let Some(ref id) = *self.media_controls_id.borrow() {
|
self.remove_controls();
|
||||||
document_from_node(self).unregister_media_controls(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2278,7 +2278,7 @@ impl VirtualMethods for HTMLMediaElement {
|
||||||
if mutation.new_value(attr).is_some() {
|
if mutation.new_value(attr).is_some() {
|
||||||
self.render_controls();
|
self.render_controls();
|
||||||
} else {
|
} else {
|
||||||
self.hide_controls();
|
self.remove_controls();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_ => (),
|
_ => (),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue