diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2018-12-17 23:50:39 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-01-10 19:09:32 +0100 |
commit | 5112e0435cdbef9bb872bb242750ec75fee4fb53 (patch) | |
tree | 1fa5f95ab98cd93a75e57e1a2ed1041ad6a26e74 /components/script/dom/htmlmediaelement.rs | |
parent | 4ac5b8a3aea5df3bf374dcfdb22c34f5ff0bafe8 (diff) | |
download | servo-5112e0435cdbef9bb872bb242750ec75fee4fb53.tar.gz servo-5112e0435cdbef9bb872bb242750ec75fee4fb53.zip |
Update servo-media
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index b751e176fb4..d397313ee6d 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -1115,6 +1115,24 @@ impl HTMLMediaElement { fn handle_player_event(&self, event: &PlayerEvent) { match *event { + PlayerEvent::EndOfStream => { + // https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list + // => "If the media data can be fetched but is found by inspection to be in + // an unsupported format, or can otherwise not be rendered at all" + if self.ready_state.get() < ReadyState::HaveMetadata { + self.queue_dedicated_media_source_failure_steps(); + } + }, + PlayerEvent::Error => { + self.error.set(Some(&*MediaError::new( + &*window_from_node(self), + MEDIA_ERR_DECODE, + ))); + self.upcast::<EventTarget>().fire_event(atom!("error")); + }, + PlayerEvent::FrameUpdated => { + self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); + }, PlayerEvent::MetadataUpdated(ref metadata) => { // https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list // => "Once enough of the media data has been fetched to determine the duration..." @@ -1179,6 +1197,12 @@ impl HTMLMediaElement { // XXX Steps 12 and 13 require audio and video tracks support. }, + PlayerEvent::NeedData => { + // XXX(ferjm) implement backoff protocol. + }, + PlayerEvent::EnoughData => { + // XXX(ferjm) implement backoff protocol. + }, PlayerEvent::PositionChanged(position) => { let position = position as f64; let _ = self @@ -1188,25 +1212,6 @@ impl HTMLMediaElement { self.playback_position.set(position); self.time_marches_on(); }, - PlayerEvent::StateChanged(ref state) => match *state { - PlaybackState::Paused => { - if self.ready_state.get() == ReadyState::HaveMetadata { - self.change_ready_state(ReadyState::HaveEnoughData); - } - }, - _ => {}, - }, - PlayerEvent::EndOfStream => { - // https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list - // => "If the media data can be fetched but is found by inspection to be in - // an unsupported format, or can otherwise not be rendered at all" - if self.ready_state.get() < ReadyState::HaveMetadata { - self.queue_dedicated_media_source_failure_steps(); - } - }, - PlayerEvent::FrameUpdated => { - self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); - }, PlayerEvent::SeekData(p) => { self.fetch_request(Some(p)); }, @@ -1221,12 +1226,13 @@ impl HTMLMediaElement { }; ScriptThread::await_stable_state(Microtask::MediaElement(task)); }, - PlayerEvent::Error => { - self.error.set(Some(&*MediaError::new( - &*window_from_node(self), - MEDIA_ERR_DECODE, - ))); - self.upcast::<EventTarget>().fire_event(atom!("error")); + PlayerEvent::StateChanged(ref state) => match *state { + PlaybackState::Paused => { + if self.ready_state.get() == ReadyState::HaveMetadata { + self.change_ready_state(ReadyState::HaveEnoughData); + } + }, + _ => {}, }, } } |