diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2018-09-12 13:36:16 +0200 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2018-10-08 16:12:02 +0200 |
commit | 8fd9b72eb7c93cb0334a8ad0261828da72b6eef9 (patch) | |
tree | e176ce143c2b7753110b6519b1ba555b0ee14320 /components/script/dom/htmlmediaelement.rs | |
parent | 468c59a217598f7da323c1c3c3479c4e3a59d2d4 (diff) | |
download | servo-8fd9b72eb7c93cb0334a8ad0261828da72b6eef9.tar.gz servo-8fd9b72eb7c93cb0334a8ad0261828da72b6eef9.zip |
Add show poster flag
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 51d9d44b597..55d0a24cb47 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -162,6 +162,8 @@ pub struct HTMLMediaElement { #[ignore_malloc_size_of = "Arc"] frame_renderer: Arc<Mutex<MediaFrameRenderer>>, fetch_canceller: DomRefCell<FetchCanceller>, + /// https://html.spec.whatwg.org/multipage/media.html#show-poster-flag + show_poster: Cell<bool>, } /// <https://html.spec.whatwg.org/multipage/#dom-media-networkstate> @@ -207,6 +209,7 @@ impl HTMLMediaElement { frame_renderer: Arc::new(Mutex::new(MediaFrameRenderer::new(document.window().get_webrender_api_sender()))), fetch_canceller: DomRefCell::new(Default::default()), + show_poster: Cell::new(true), } } @@ -272,8 +275,10 @@ impl HTMLMediaElement { self.paused.set(false); // Step 6.2. - // FIXME(nox): Set show poster flag to false and run time marches on - // steps if show poster flag is true. + if self.show_poster.get() { + self.show_poster.set(false); + self.time_marches_on(); + } // Step 6.3. task_source.queue_simple_event(self.upcast(), atom!("play"), &window); @@ -317,6 +322,11 @@ impl HTMLMediaElement { // Not applicable here, the promise is returned from Play. } + /// https://html.spec.whatwg.org/multipage/media.html#time-marches-on + fn time_marches_on(&self) { + // TODO: implement this. + } + /// <https://html.spec.whatwg.org/multipage/#internal-pause-steps> fn internal_pause_steps(&self) { // Step 1. @@ -468,7 +478,11 @@ impl HTMLMediaElement { if self.autoplaying.get() && self.Paused() && self.Autoplay() { // Step 1 self.paused.set(false); - // TODO step 2: show poster + // Step 2 + if self.show_poster.get() { + self.show_poster.set(false); + self.time_marches_on(); + } // Step 3 task_source.queue_simple_event(self.upcast(), atom!("play"), &window); // Step 4 @@ -489,7 +503,7 @@ impl HTMLMediaElement { self.network_state.set(NetworkState::NoSource); // Step 2. - // FIXME(nox): Set show poster flag to true. + self.show_poster.set(true); // Step 3. self.delay_load_event(true); @@ -517,6 +531,8 @@ impl HTMLMediaElement { // https://html.spec.whatwg.org/multipage/#concept-media-load-algorithm fn resource_selection_algorithm_sync(&self, base_url: ServoUrl) { // Step 5. + // FIXME(ferjm): Implement blocked_on_parser logic + // https://html.spec.whatwg.org/multipage/media.html#blocked-on-parser // FIXME(nox): Maybe populate the list of pending text tracks. // Step 6. @@ -736,7 +752,7 @@ impl HTMLMediaElement { this.network_state.set(NetworkState::NoSource); // Step 4. - // FIXME(nox): Set show poster flag to true. + this.show_poster.set(true); // Step 5. this.upcast::<EventTarget>().fire_event(atom!("error")); |