mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Auto merge of #22477 - ferjm:media_time_marches_on_step_6, r=jdm
Implement step 6 of media `time marches on` algorithm. Improves stability of media WPTs - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] There are tests for these changes This should help with the WPTs problems observed in https://github.com/servo/servo/pull/22348#issuecomment-446369831 Unfortunately, GStreamer does not seem to be very reliable with Ogg (check https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/520) and most of the media-element WPTs uses a short ogv file, so I had to make our `canPlayType` report that it is not able to play this type to make the tests pick the alternative mp4 version of the same files. Once Ogg support for GStreamer improves, we should be able to revert this change. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22477) <!-- Reviewable:end -->
This commit is contained in:
commit
4ac5b8a3ae
189 changed files with 914 additions and 351 deletions
|
@ -130,7 +130,7 @@ use style::values::specified::Length;
|
|||
use tendril::fmt::UTF8;
|
||||
use tendril::stream::LossyDecoder;
|
||||
use tendril::{StrTendril, TendrilSink};
|
||||
use time::Duration;
|
||||
use time::{Duration, Timespec};
|
||||
use uuid::Uuid;
|
||||
use webrender_api::{DocumentId, ImageKey, RenderApiSender};
|
||||
use webvr_traits::WebVRGamepadHand;
|
||||
|
@ -488,6 +488,7 @@ unsafe_no_jsmanaged_fields!(dyn Player<Error = ServoMediaError>);
|
|||
unsafe_no_jsmanaged_fields!(Mutex<MediaFrameRenderer>);
|
||||
unsafe_no_jsmanaged_fields!(RenderApiSender);
|
||||
unsafe_no_jsmanaged_fields!(ResourceFetchTiming);
|
||||
unsafe_no_jsmanaged_fields!(Timespec);
|
||||
|
||||
unsafe impl<'a> JSTraceable for &'a str {
|
||||
#[inline]
|
||||
|
|
|
@ -204,6 +204,9 @@ pub struct HTMLMediaElement {
|
|||
text_tracks_list: MutNullableDom<TextTrackList>,
|
||||
/// Expected content length of the media asset being fetched or played.
|
||||
content_length: Cell<Option<u64>>,
|
||||
/// Time of last timeupdate notification.
|
||||
#[ignore_malloc_size_of = "Defined in time"]
|
||||
next_timeupdate_event: Cell<Timespec>,
|
||||
}
|
||||
|
||||
/// <https://html.spec.whatwg.org/multipage/#dom-media-networkstate>
|
||||
|
@ -261,6 +264,7 @@ impl HTMLMediaElement {
|
|||
played: Rc::new(DomRefCell::new(TimeRangesContainer::new())),
|
||||
text_tracks_list: Default::default(),
|
||||
content_length: Cell::new(None),
|
||||
next_timeupdate_event: Cell::new(time::get_time() + Duration::milliseconds(250)),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -303,7 +307,16 @@ impl HTMLMediaElement {
|
|||
|
||||
/// https://html.spec.whatwg.org/multipage/#time-marches-on
|
||||
fn time_marches_on(&self) {
|
||||
// TODO: implement this.
|
||||
// Step 6.
|
||||
if time::get_time() > self.next_timeupdate_event.get() {
|
||||
let window = window_from_node(self);
|
||||
window
|
||||
.task_manager()
|
||||
.media_element_task_source()
|
||||
.queue_simple_event(self.upcast(), atom!("timeupdate"), &window);
|
||||
self.next_timeupdate_event
|
||||
.set(time::get_time() + Duration::milliseconds(350));
|
||||
}
|
||||
}
|
||||
|
||||
/// <https://html.spec.whatwg.org/multipage/#internal-pause-steps>
|
||||
|
@ -1173,6 +1186,7 @@ impl HTMLMediaElement {
|
|||
.borrow_mut()
|
||||
.add(self.playback_position.get(), position);
|
||||
self.playback_position.set(position);
|
||||
self.time_marches_on();
|
||||
},
|
||||
PlayerEvent::StateChanged(ref state) => match *state {
|
||||
PlaybackState::Paused => {
|
||||
|
@ -1270,8 +1284,14 @@ impl HTMLMediaElementMethods for HTMLMediaElement {
|
|||
// https://html.spec.whatwg.org/multipage/#dom-navigator-canplaytype
|
||||
fn CanPlayType(&self, type_: DOMString) -> CanPlayTypeResult {
|
||||
match type_.parse::<Mime>() {
|
||||
// XXX GStreamer is currently not very reliable playing OGG and most of
|
||||
// the media related WPTs uses OGG if we report that we are able to
|
||||
// play this type. So we report that we are unable to play it to force
|
||||
// the usage of other types.
|
||||
// https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/520
|
||||
Ok(ref mime)
|
||||
if (mime.type_() == mime::APPLICATION && mime.subtype() == mime::OCTET_STREAM) =>
|
||||
if (mime.type_() == mime::APPLICATION && mime.subtype() == mime::OCTET_STREAM) ||
|
||||
(mime.subtype() == mime::OGG) =>
|
||||
{
|
||||
CanPlayTypeResult::_empty
|
||||
},
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[audio_loop_base.html]
|
||||
type: testharness
|
||||
disabled: extreme timeout
|
||||
expected: TIMEOUT
|
||||
[Check if audio.loop is set to true that expecting the seeking event is fired more than once]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
[audio_volume_check.html]
|
||||
type: testharness
|
||||
[Check if media.volume is set to new value less than 0.0 that expecting an IndexSizeError exception is to be thrown]
|
||||
expected: PASS
|
||||
|
||||
[Check if audio.volume is set to new value greater than 1.0 that expecting an IndexSizeError exception is to be thrown]
|
||||
expected: PASS
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
[autoplay-with-broken-track.html]
|
||||
expected: TIMEOUT
|
||||
[<video autoplay> with <track> child]
|
||||
expected: TIMEOUT
|
||||
|
||||
[<video autoplay> with <track src=\"invalid://url\" default=\"\"> child]
|
||||
expected: TIMEOUT
|
||||
|
||||
[<video autoplay> with <track src=\"404\" default=\"\"> child]
|
||||
expected: TIMEOUT
|
||||
|
||||
[<video autoplay> with <track src=\"\" default=\"\"> child]
|
||||
expected: TIMEOUT
|
|
@ -1,10 +0,0 @@
|
|||
[event_timeupdate.html]
|
||||
type: testharness
|
||||
disabled: Until https://github.com/servo/servo/pull/22477 is merged
|
||||
expected: TIMEOUT
|
||||
[setting src attribute on a sufficiently long autoplay audio should trigger timeupdate event]
|
||||
expected: NOTRUN
|
||||
|
||||
[setting src attribute on a sufficiently long autoplay video should trigger timeupdate event]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
[event_timeupdate_noautoplay.html]
|
||||
type: testharness
|
||||
disabled: Until https://github.com/servo/servo/pull/22477 is merged
|
||||
expected: TIMEOUT
|
||||
[calling play() on a sufficiently long audio should trigger timeupdate event]
|
||||
expected: NOTRUN
|
||||
|
||||
[calling play() on a sufficiently long video should trigger timeupdate event]
|
||||
expected: FAIL
|
||||
|
|
@ -1,27 +1,20 @@
|
|||
[event_volumechange.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[setting audio.volume fires volumechange]
|
||||
expected: PASS
|
||||
|
||||
[setting audio.muted fires volumechange]
|
||||
expected: FAIL
|
||||
|
||||
[setting audio.volume/muted to the same value does not fire volumechange]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting audio.volume/muted repeatedly fires volumechange repeatedly]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting video.volume fires volumechange]
|
||||
expected: PASS
|
||||
|
||||
[setting video.muted fires volumechange]
|
||||
expected: FAIL
|
||||
|
||||
[setting video.volume/muted to the same value does not fire volumechange]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting video.volume/muted repeatedly fires volumechange repeatedly]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting audio.volume/muted to the same value does not fire volumechange]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting video.muted fires volumechange]
|
||||
expected: FAIL
|
||||
|
||||
[setting audio.volume/muted repeatedly fires volumechange repeatedly]
|
||||
expected: TIMEOUT
|
||||
|
||||
[setting video.volume/muted to the same value does not fire volumechange]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
[crossOrigin.html]
|
||||
[HTMLMediaElement.crossOrigin]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute missing]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute invalid value]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute empty string]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute uppercase ANONYMOUS]
|
||||
[HTMLMediaElement.crossOrigin, setting to invalid value]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute use-credentials]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, setting to empty string]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, setting to invalid value]
|
||||
[HTMLMediaElement.crossOrigin, content attribute invalid value]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, setting to uppercase ANONYMOUS]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute uppercase ANONYMOUS]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, setting to empty string]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute empty string]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, content attribute missing]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin, setting to use-credentials]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLMediaElement.crossOrigin]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
[addCue.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrack.addCue(), adding a cue to two different tracks]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.addCue(), adding a cue to a track twice]
|
||||
expected: FAIL
|
||||
[TextTrack.addCue(), adding a cue associated with a track element to other track]
|
||||
expected: TIMEOUT
|
||||
|
||||
[TextTrack.addCue(), adding a removed cue to a different track]
|
||||
expected: FAIL
|
||||
|
@ -13,6 +12,6 @@
|
|||
[TextTrack.addCue(), adding an associated but removed cue to the same track]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.addCue(), adding a cue associated with a track element to other track]
|
||||
expected: TIMEOUT
|
||||
[TextTrack.addCue(), adding a cue to a track twice]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
[cues.html]
|
||||
type: testharness
|
||||
[TextTrack.cues, after addCue()]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.cues, different modes]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.cues, changing order]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.cues, default attribute]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.cues, changing order]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[kind.html]
|
||||
type: testharness
|
||||
[TextTrack.kind, track element]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.kind, \\u0000]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.kind, track element]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[label.html]
|
||||
type: testharness
|
||||
[TextTrack.label]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.label, \\u0000]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.label]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[language.html]
|
||||
type: testharness
|
||||
[TextTrack.language]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.language, \\u0000]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.language]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[oncuechange.html]
|
||||
type: testharness
|
||||
[TextTrack.oncuechange]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
[removeCue.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrack.removeCue(), two elementless tracks]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrack.removeCue(), cue from track element]
|
||||
expected: TIMEOUT
|
||||
|
||||
[TextTrack.removeCue(), two elementless tracks]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[endTime.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrackCue.endTime, script-created cue]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[id.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrackCue.id, script-created cue]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
[onenter.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[TextTrackCue.onenter]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.addEventListener/removeEventListener]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.onenter]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
[onexit.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[TextTrackCue.onexit]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.addEventListener/removeEventListener]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.onexit]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
[pauseOnExit.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrackCue.pauseOnExit, script-created cue]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.pauseOnExit, parsed cue]
|
||||
expected: TIMEOUT
|
||||
|
||||
[TextTrackCue.pauseOnExit, script-created cue]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
[startTime.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrackCue.startTime, script-created cue]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCue.startTime, parsed cue]
|
||||
expected: TIMEOUT
|
||||
|
||||
[TextTrackCue.startTime, script-created cue]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[track.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[TextTrackCue.track, script-created cue]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
[getCueById.html]
|
||||
type: testharness
|
||||
[TextTrackCueList.getCueById, no id]
|
||||
[TextTrackCueList.getCueById, id a\\u0000b]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList.getCueById, id foo]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList.getCueById, no id]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList.getCueById, no 1]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList.getCueById, id a\\u0000b]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
[getter.html]
|
||||
type: testharness
|
||||
[TextTrackCueList getter, no indexed set/create (strict)]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList getter]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList getter, no indexed set/create]
|
||||
expected: FAIL
|
||||
|
||||
[TextTrackCueList getter, no indexed set/create (strict)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[length.html]
|
||||
type: testharness
|
||||
[TextTrackCueList.length]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[getter.html]
|
||||
type: testharness
|
||||
[TextTrackList getter]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[length.html]
|
||||
type: testharness
|
||||
[TextTrackList.length]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[onaddtrack.html]
|
||||
type: testharness
|
||||
[TextTrackList.onaddtrack]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[onremovetrack.html]
|
||||
type: testharness
|
||||
[TextTrackList.onremovetrack]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[constructor.html]
|
||||
type: testharness
|
||||
[TrackEvent constructor, one arg]
|
||||
expected: FAIL
|
||||
|
||||
[TrackEvent constructor, two args]
|
||||
expected: FAIL
|
||||
|
||||
[TrackEvent constructor, one arg]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[createEvent.html]
|
||||
type: testharness
|
||||
[TrackEvent created with createEvent]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[load-removes-queued-error-event.html]
|
||||
type: testharness
|
||||
[source error event]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-candidate-insert-before.html]
|
||||
type: testharness
|
||||
[inserting another source before the candidate]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-candidate-moved.html]
|
||||
type: testharness
|
||||
[moving the candidate source]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-candidate-remove-addEventListener.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[removing the candidate source, addEventListener]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-candidate-remove-onerror.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[removing the candidate source, onerror]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-invoke-insert-source-networkState.html]
|
||||
type: testharness
|
||||
[NOT invoking resource selection by inserting <source> when networkState is not NETWORK_EMPTY]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-control.html]
|
||||
type: testharness
|
||||
[pointer updates (control test)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-insert-br.html]
|
||||
type: testharness
|
||||
[pointer updates (adding br elements)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-insert-source.html]
|
||||
type: testharness
|
||||
[pointer updates (adding source elements)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-insert-text.html]
|
||||
type: testharness
|
||||
[pointer updates (adding text nodes)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-remove-source-after.html]
|
||||
type: testharness
|
||||
[pointer updates (removing source element after pointer)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-remove-source.html]
|
||||
type: testharness
|
||||
[pointer updates (removing source elements)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-pointer-remove-text.html]
|
||||
type: testharness
|
||||
[pointer updates (removing text nodes)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[resource-selection-source-media.html]
|
||||
type: testharness
|
||||
[the <source> media attribute has no effect]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
[currentSrc.html]
|
||||
type: testharness
|
||||
[audio.currentSrc after adding source element with src attribute "."]
|
||||
expected: FAIL
|
||||
|
||||
[audio.currentSrc after adding source element with src attribute " "]
|
||||
expected: FAIL
|
||||
|
||||
[audio.currentSrc after adding source element with src attribute "data:,"]
|
||||
expected: FAIL
|
||||
|
||||
[video.currentSrc after adding source element with src attribute "."]
|
||||
expected: FAIL
|
||||
|
||||
[video.currentSrc after adding source element with src attribute " "]
|
||||
expected: FAIL
|
||||
|
||||
[video.currentSrc after adding source element with src attribute "data:,"]
|
||||
expected: FAIL
|
||||
|
||||
[audio.currentSrc after adding source element with src attribute "."]
|
||||
expected: FAIL
|
||||
|
||||
[audio.currentSrc after adding source element with src attribute "data:,"]
|
||||
expected: FAIL
|
||||
|
||||
[video.currentSrc after adding source element with src attribute " "]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,17 @@
|
|||
[canPlayType.html]
|
||||
type: testharness
|
||||
[audio/webm; codecs="opus" (optional)]
|
||||
[video/mp4; codecs="mp4v.20.8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/webm; codecs="vorbis" (optional)]
|
||||
[video/webm with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp; codecs="samr" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp; codecs="mp4v.20.8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="mp4v.20.8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="mp4v.20.240" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp8.0" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp9" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp9.0" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/x-new-fictional-format]
|
||||
[audio/webm (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/mp4; codecs="mp4a.40.2" (optional)]
|
||||
|
@ -45,84 +20,99 @@
|
|||
[audio/mp4 with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg; codecs="opus" (optional)]
|
||||
[audio/webm; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[audio/wav; codecs="1" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/wav with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[audio/webm with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="mp4a.40.2" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.42E01E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.4D401E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.58A01E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.64001E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4 with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg; codecs="vorbis" (optional)]
|
||||
[video/webm; codecs="vp9" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg; codecs="theora" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg with bogus codec]
|
||||
[video/mp4; codecs="avc1.64001E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm with bogus codec]
|
||||
[video/ogg; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[fictional formats and codecs not supported]
|
||||
expected: FAIL
|
||||
|
||||
[audio/webm (optional)]
|
||||
[video/mp4 with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4 (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp8.0" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.4D401E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/wav; codecs="1" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[audio/wav (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.42E01E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="avc1.58A01E" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/ogg (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/mp4 (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/mp4; codecs="mp4a.40.2" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/ogg; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/webm; codecs="opus" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vorbis" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/wav with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
[video/3gpp; codecs="mp4v.20.8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp9.0" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[video/webm; codecs="vp8" (optional)]
|
||||
expected: FAIL
|
||||
|
||||
[audio/webm with bogus codec]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
[pause-remove-from-document.html]
|
||||
type: testharness
|
||||
expected: OK
|
||||
[paused state when removing from a document]
|
||||
expected: PASS
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[play-in-detached-document.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[play() in detached document]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[autoplay-hidden.optional.html]
|
||||
expected: TIMEOUT
|
||||
[Allow delaying autoplay until video elements become visible]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[autoplay-with-slow-text-tracks.html]
|
||||
type: testharness
|
||||
[autoplay with slow text tracks]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[seek-to-currentTime.html]
|
||||
type: testharness
|
||||
[seek to currentTime]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[seek-to-max-value.htm]
|
||||
type: testharness
|
||||
[seek to Number.MAX_VALUE]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[seek-to-negative-time.htm]
|
||||
type: testharness
|
||||
[seek to negative time]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
disabled: for now
|
|
@ -0,0 +1,11 @@
|
|||
[cloneNode.html]
|
||||
expected: TIMEOUT
|
||||
[track element cloneNode, loading]
|
||||
expected: FAIL
|
||||
|
||||
[track element cloneNode, failed to load]
|
||||
expected: TIMEOUT
|
||||
|
||||
[track element cloneNode, loaded]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[003.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[004.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[005.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[006.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[007.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[008.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[009.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[010.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[011.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[012.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[013.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[014.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[015.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, same-origin, with headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[016.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[019.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, with headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[020.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[021.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, with headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[022.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, with headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[023.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[024.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, with headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[025.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, with headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[026.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: No CORS, same-origin, with headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[027.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[028.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, with headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[029.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[030.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, with headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[031.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, no headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[032.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, with headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[033.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, not same-origin, with headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[034.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, no headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[035.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, with headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[036.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, not same-origin, with headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[037.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to not same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[038.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, with headers, redirects to not same-origin, with headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[039.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to not same-origin, with headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[040.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers, redirects to not same-origin, no headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[041.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, with headers, redirects to not same-origin, with headers, redirects to same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[042.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers, redirects to not same-origin, with headers, redirects to same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[043.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to same-origin, no headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[044.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Anonymous, same-origin, no headers, redirects to same-origin, no headers, redirects to not same-origin, with headers]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[045.html]
|
||||
expected: TIMEOUT
|
||||
[track CORS: Use Credentials, same-origin, no headers, redirects to same-origin, no headers, redirects to not same-origin, no headers]
|
||||
expected: TIMEOUT
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue