mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Use task! for the dedicated media source failure steps
This commit is contained in:
parent
91c2865e36
commit
30a1d3f617
1 changed files with 28 additions and 34 deletions
|
@ -39,7 +39,6 @@ use script_thread::ScriptThread;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use task::Task;
|
|
||||||
use task_source::TaskSource;
|
use task_source::TaskSource;
|
||||||
use time::{self, Timespec, Duration};
|
use time::{self, Timespec, Duration};
|
||||||
|
|
||||||
|
@ -461,30 +460,43 @@ impl HTMLMediaElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Queues the [dedicated media source failure steps][steps].
|
||||||
|
///
|
||||||
|
/// [steps]: https://html.spec.whatwg.org/multipage/#dedicated-media-source-failure-steps
|
||||||
fn queue_dedicated_media_source_failure_steps(&self) {
|
fn queue_dedicated_media_source_failure_steps(&self) {
|
||||||
|
let this = Trusted::new(self);
|
||||||
let window = window_from_node(self);
|
let window = window_from_node(self);
|
||||||
|
// FIXME(nox): Why are errors silenced here?
|
||||||
let _ = window.dom_manipulation_task_source().queue(
|
let _ = window.dom_manipulation_task_source().queue(
|
||||||
box DedicatedMediaSourceFailureTask::new(self), window.upcast());
|
box task!(dedicated_media_source_failure_steps: move || {
|
||||||
}
|
let this = this.root();
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dedicated-media-source-failure-steps
|
// Step 1.
|
||||||
fn dedicated_media_source_failure(&self) {
|
this.error.set(Some(&*MediaError::new(
|
||||||
// Step 1
|
&window_from_node(&*this),
|
||||||
self.error.set(Some(&*MediaError::new(&*window_from_node(self),
|
MEDIA_ERR_SRC_NOT_SUPPORTED,
|
||||||
MEDIA_ERR_SRC_NOT_SUPPORTED)));
|
)));
|
||||||
|
|
||||||
// TODO step 2 (forget resource tracks)
|
// Step 2.
|
||||||
|
// FIXME(nox): Forget the media-resource-specific tracks.
|
||||||
|
|
||||||
// Step 3
|
// Step 3.
|
||||||
self.network_state.set(NetworkState::NoSource);
|
this.network_state.set(NetworkState::NoSource);
|
||||||
|
|
||||||
// TODO step 4 (show poster)
|
// Step 4.
|
||||||
|
// FIXME(nox): Set show poster flag to true.
|
||||||
|
|
||||||
// Step 5
|
// Step 5.
|
||||||
self.upcast::<EventTarget>().fire_event(atom!("error"));
|
this.upcast::<EventTarget>().fire_event(atom!("error"));
|
||||||
|
|
||||||
// TODO step 6 (resolve pending play promises)
|
// Step 6.
|
||||||
// TODO step 7 (delay load event)
|
// FIXME(nox): Reject pending play promises.
|
||||||
|
|
||||||
|
// Step 7.
|
||||||
|
// FIXME(nox): Set the delaying-the-load-event flag to false.
|
||||||
|
}),
|
||||||
|
window.upcast(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#media-element-load-algorithm
|
// https://html.spec.whatwg.org/multipage/#media-element-load-algorithm
|
||||||
|
@ -733,24 +745,6 @@ impl MicrotaskRunnable for MediaElementMicrotask {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct DedicatedMediaSourceFailureTask {
|
|
||||||
elem: Trusted<HTMLMediaElement>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl DedicatedMediaSourceFailureTask {
|
|
||||||
fn new(elem: &HTMLMediaElement) -> DedicatedMediaSourceFailureTask {
|
|
||||||
DedicatedMediaSourceFailureTask {
|
|
||||||
elem: Trusted::new(elem),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Task for DedicatedMediaSourceFailureTask {
|
|
||||||
fn run(self: Box<Self>) {
|
|
||||||
self.elem.root().dedicated_media_source_failure();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ResourceSelectionMode {
|
enum ResourceSelectionMode {
|
||||||
Object,
|
Object,
|
||||||
Attribute(String),
|
Attribute(String),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue