summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/common/media.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/common/media.js')
-rw-r--r--testing/web-platform/tests/common/media.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/testing/web-platform/tests/common/media.js b/testing/web-platform/tests/common/media.js
new file mode 100644
index 0000000000..800593f534
--- /dev/null
+++ b/testing/web-platform/tests/common/media.js
@@ -0,0 +1,61 @@
+/**
+ * Returns the URL of a supported video source based on the user agent
+ * @param {string} base - media URL without file extension
+ * @returns {string}
+ */
+function getVideoURI(base)
+{
+ var extension = '.mp4';
+
+ var videotag = document.createElement("video");
+
+ if ( videotag.canPlayType )
+ {
+ if (videotag.canPlayType('video/webm; codecs="vp9, opus"') )
+ {
+ extension = '.webm';
+ } else if ( videotag.canPlayType('video/ogg; codecs="theora, vorbis"') )
+ {
+ extension = '.ogv';
+ }
+ }
+
+ return base + extension;
+}
+
+/**
+ * Returns the URL of a supported audio source based on the user agent
+ * @param {string} base - media URL without file extension
+ * @returns {string}
+ */
+function getAudioURI(base)
+{
+ var extension = '.mp3';
+
+ var audiotag = document.createElement("audio");
+
+ if ( audiotag.canPlayType &&
+ audiotag.canPlayType('audio/ogg') )
+ {
+ extension = '.oga';
+ }
+
+ return base + extension;
+}
+
+/**
+ * Returns the MIME type for a media URL based on the file extension.
+ * @param {string} url
+ * @returns {string}
+ */
+function getMediaContentType(url) {
+ var extension = new URL(url, location).pathname.split(".").pop();
+ var map = {
+ "mp4" : "video/mp4",
+ "ogv" : "application/ogg",
+ "webm": "video/webm",
+ "mp3" : "audio/mp3",
+ "oga" : "application/ogg",
+ };
+ return map[extension];
+}