aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-09-12 13:36:16 +0200
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-10-08 16:12:02 +0200
commit8fd9b72eb7c93cb0334a8ad0261828da72b6eef9 (patch)
treee176ce143c2b7753110b6519b1ba555b0ee14320 /components/script/dom/htmlmediaelement.rs
parent468c59a217598f7da323c1c3c3479c4e3a59d2d4 (diff)
downloadservo-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.rs26
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"));