blob: ff8a92830a85b423b8c3d984791380c25a305001 [file] [log] [blame]
<!DOCTYPE html>
<script src=../resources/testharness.js></script>
<script src=../resources/testharnessreport.js></script>
<script>
// Checks navigator.mediaCapabilities.encodingInfo() with some MIME types that
// should be recordable and a few that shouldn't.
// A list of test cases. Each test case consists of [MIME type, is supported].
const recordTypeTestCases = [
[ 'video/webm', true ],
[ 'video/webm;codecs=vp8', true ],
[ 'video/webm;codecs=vp9', true ],
[ 'video/webm;codecs=vp8.0', true ],
[ 'video/webm;codecs=vp9.0', true ],
// 'video/webm' supports audio codec specification, see
// http://www.webmproject.org/docs/container/
[ 'video/webm;codecs="vp8,opus"', true ],
[ 'video/WEBM;codecs="VP8,OPUS"', true ],
[ 'video/webm;codecs="vp9,opus"', true ],
[ 'video/webm;codecs="vp8,vp9,opus"', true ],
[ 'audio/webm', true ],
[ 'audio/webm;codecs=opus', true ],
// Rejected MIME types
[ 'video/invalid', false],
[ 'video/mpeg4', false],
[ 'video/webm;codecs=daala', false],
[ 'audio/invalid', false],
[ 'audio/ogg', false],
[ 'audio/webm;codecs=vorbis', false]];
const transmissionTypeTestCases = [
[ 'video/vp8', true ],
[ 'audio/opus', true ],
// Temporary unsupported.
[ 'video/h264', false ],
[ 'video/vp9', false ],
// Rejected MIME types
[ 'video/invalid', false ],
[ 'video/mpeg4', false ],
[ 'video/webm;codecs=daala', false ],
[ 'video/webm;codecs=vp8', false ],
[ 'audio/invalid', false ],
[ 'audio/ogg', false ]];
function composeQuery(mimeType, queryType) {
const media = mimeType.split('/')[0];
assert_true(media == 'video' || media == 'audio', 'Unsupported media type');
if (media == 'video') {
return {
type : queryType,
video : {
contentType : mimeType,
width : 640,
height : 480,
bitrate : 10000,
framerate : 30}};
}
return {type : queryType, audio : {contentType : mimeType}};
}
// Tests encodingInfo()'s response for "record" type request.
recordTypeTestCases.forEach((testCase) => {
const queryType = 'record'
const mimeType = testCase[0];
const isSupported = testCase[1];
const testName = 'MediaEncodingConfiguration {type:' + queryType + ' video:{contentType:' + mimeType + '}}';
promise_test(() => navigator.mediaCapabilities.encodingInfo(
composeQuery(mimeType, queryType)).then(
(result) => {
assert_equals(result.supported, isSupported, mimeType + ' supported?');
}),
testName);
});
// Tests encodingInfo()'s response for "transmission" type request.
transmissionTypeTestCases.forEach((testCase) => {
const queryType = 'transmission'
const mimeType = testCase[0];
const isSupported = testCase[1];
const testName = 'MediaEncodingConfiguration {type:' + queryType + ' video:{contentType:' + mimeType + '}}';
promise_test(() => navigator.mediaCapabilities.encodingInfo(
composeQuery(mimeType, queryType)).then(
(result) => {
assert_equals(result.supported, isSupported, mimeType + ' supported?');
}),
testName);
});
</script>