aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Roman <george.roman.99@gmail.com>2019-04-18 17:22:57 +0300
committerGeorge Roman <george.roman.99@gmail.com>2019-05-02 17:27:18 +0300
commit5eb691c4d2916c490c0e5ed6cad013d5f788e972 (patch)
treea9d469bda860b67f6b2aa24e6240ac9eb2977153
parent834d3193a2ed016093b6b997d29df5a607715956 (diff)
downloadservo-5eb691c4d2916c490c0e5ed6cad013d5f788e972.tar.gz
servo-5eb691c4d2916c490c0e5ed6cad013d5f788e972.zip
Finish the implementation of the HTMLMediaElement canPlayType method
-rw-r--r--components/script/dom/htmlmediaelement.rs21
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini50
2 files changed, 10 insertions, 61 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index c6b9c8a7939..85ccd80156d 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -62,7 +62,6 @@ use html5ever::{LocalName, Prefix};
use http::header::{self, HeaderMap, HeaderValue};
use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
-use mime::{self, Mime};
use net_traits::image::base::Image;
use net_traits::image_cache::ImageResponse;
use net_traits::request::{CredentialsMode, Destination, Referrer, RequestBuilder};
@@ -72,7 +71,7 @@ use script_layout_interface::HTMLMediaData;
use servo_config::pref;
use servo_media::player::frame::{Frame, FrameRenderer};
use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, StreamType};
-use servo_media::ServoMedia;
+use servo_media::{ServoMedia, SupportsMediaType};
use servo_url::ServoUrl;
use std::cell::Cell;
use std::collections::VecDeque;
@@ -1661,20 +1660,10 @@ 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) ||
- (mime.subtype() == mime::OGG) =>
- {
- CanPlayTypeResult::_empty
- },
- Err(_) => CanPlayTypeResult::_empty,
- _ => CanPlayTypeResult::Maybe,
+ match ServoMedia::get().unwrap().can_play_type(&type_) {
+ SupportsMediaType::No => CanPlayTypeResult::_empty,
+ SupportsMediaType::Maybe => CanPlayTypeResult::Maybe,
+ SupportsMediaType::Probably => CanPlayTypeResult::Probably,
}
}
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
index bc63975b5c0..acc60d48f6a 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
@@ -2,9 +2,6 @@
[video/mp4; codecs="mp4v.20.8" (optional)]
expected: FAIL
- [video/webm with bogus codec]
- expected: FAIL
-
[video/3gpp; codecs="samr" (optional)]
expected: FAIL
@@ -14,16 +11,10 @@
[audio/webm (optional)]
expected: FAIL
- [audio/mp4; codecs="mp4a.40.2" (optional)]
- expected: FAIL
-
- [audio/mp4 with bogus codec]
+ [audio/webm with and without codecs]
expected: FAIL
- [audio/webm; codecs="vorbis" (optional)]
- expected: FAIL
-
- [video/webm; codecs="vp9" (optional)]
+ [audio/mp4; codecs="mp4a.40.2" (optional)]
expected: FAIL
[video/ogg; codecs="theora" (optional)]
@@ -32,15 +23,6 @@
[video/mp4; codecs="avc1.64001E" (optional)]
expected: FAIL
- [video/ogg; codecs="opus" (optional)]
- expected: FAIL
-
- [fictional formats and codecs not supported]
- expected: FAIL
-
- [video/mp4 with bogus codec]
- expected: FAIL
-
[video/mp4 (optional)]
expected: FAIL
@@ -50,10 +32,10 @@
[audio/ogg; codecs="opus" (optional)]
expected: FAIL
- [video/webm; codecs="vp8.0" (optional)]
+ [video/webm (optional)]
expected: FAIL
- [video/webm (optional)]
+ [video/webm with and without codecs]
expected: FAIL
[video/mp4; codecs="avc1.4D401E" (optional)]
@@ -62,9 +44,6 @@
[audio/wav; codecs="1" (optional)]
expected: FAIL
- [video/3gpp with bogus codec]
- expected: FAIL
-
[audio/wav (optional)]
expected: FAIL
@@ -80,9 +59,6 @@
[audio/mp4 (optional)]
expected: FAIL
- [video/webm; codecs="opus" (optional)]
- expected: FAIL
-
[video/3gpp (optional)]
expected: FAIL
@@ -95,24 +71,8 @@
[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]
+ [video/ogg; codecs="opus" (optional)]
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
-