aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorsreeise <reeisesean@gmail.com>2019-09-11 19:16:28 -0400
committersreeise <reeisesean@gmail.com>2019-09-22 10:39:41 -0400
commit5ea79c64f9a56b3e116d7d306c9d300a5d6717a5 (patch)
tree2be7b35e36e8b2406e10349ad3919be76262bc68 /components/script/dom/htmlmediaelement.rs
parent4fe8238b14d535f7ca94a36effda06624b73ecbe (diff)
downloadservo-5ea79c64f9a56b3e116d7d306c9d300a5d6717a5.tar.gz
servo-5ea79c64f9a56b3e116d7d306c9d300a5d6717a5.zip
Integrates media track selection
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r--components/script/dom/htmlmediaelement.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index a607c915802..e3cb0dfb5b2 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -1435,6 +1435,22 @@ impl HTMLMediaElement {
Ok(())
}
+ pub fn set_audio_track(&self, idx: usize, enabled: bool) {
+ if let Some(ref player) = *self.player.borrow() {
+ if let Err(err) = player.lock().unwrap().set_audio_track(idx as i32, enabled) {
+ warn!("Could not set audio track {:#?}", err);
+ }
+ }
+ }
+
+ pub fn set_video_track(&self, idx: usize, enabled: bool) {
+ if let Some(ref player) = *self.player.borrow() {
+ if let Err(err) = player.lock().unwrap().set_video_track(idx as i32, enabled) {
+ warn!("Could not set video track {:#?}", err);
+ }
+ }
+ }
+
fn handle_player_event(&self, event: &PlayerEvent) {
match *event {
PlayerEvent::EndOfStream => {
@@ -1530,6 +1546,7 @@ impl HTMLMediaElement {
kind,
DOMString::new(),
DOMString::new(),
+ Some(&*self.AudioTracks()),
);
// Steps 2. & 3.
@@ -1585,6 +1602,7 @@ impl HTMLMediaElement {
kind,
DOMString::new(),
DOMString::new(),
+ Some(&*self.VideoTracks()),
);
// Steps 2. & 3.
@@ -2217,14 +2235,14 @@ impl HTMLMediaElementMethods for HTMLMediaElement {
fn AudioTracks(&self) -> DomRoot<AudioTrackList> {
let window = window_from_node(self);
self.audio_tracks_list
- .or_init(|| AudioTrackList::new(&window, &[]))
+ .or_init(|| AudioTrackList::new(&window, &[], Some(self)))
}
// https://html.spec.whatwg.org/multipage/#dom-media-videotracks
fn VideoTracks(&self) -> DomRoot<VideoTrackList> {
let window = window_from_node(self);
self.video_tracks_list
- .or_init(|| VideoTrackList::new(&window, &[]))
+ .or_init(|| VideoTrackList::new(&window, &[], Some(self)))
}
// https://html.spec.whatwg.org/multipage/#dom-media-texttracks