summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js')
-rw-r--r--testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js320
1 files changed, 0 insertions, 320 deletions
diff --git a/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js b/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js
deleted file mode 100644
index 98be50bb8..000000000
--- a/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js
+++ /dev/null
@@ -1,320 +0,0 @@
-function runTest(config, qualifier) {
-
- var prefix = testnamePrefix(qualifier, config.keysystem) + ', requestMediaKeySystemAccess: ';
-
- function expect_error(keySystem, configurations, expectedError, testname) {
-
- var audioCapabilities = configurations.length ? configurations[0].audioCapabilities : undefined,
- videoCapabilities = configurations.length ? configurations[0].videoCapabilities : undefined,
- audiocontenttypes = audioCapabilities ? audioCapabilities.map( function(ac) { return "'" + ac.contentType + "'"; } ).join(',') : '',
- videocontenttypes = videoCapabilities ? videoCapabilities.map( function(ac) { return "'" + ac.contentType + "'"; } ).join(',') : '',
- modifiedtestname = testname.replace( '%ks', keySystem ).replace( '%audiocontenttype', audiocontenttypes ).replace( '%videocontenttype', videocontenttypes );
-
- promise_test(function(test) {
- return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) {
- assert_unreached('Unexpected requestMediaKeySystemAccess() success.');
- }, function(e) {
- assert_equals(e.name, expectedError);
- });
- }, prefix + modifiedtestname + ' should result in ' + expectedError );
- }
-
- function assert_subset(actual, expected, path) {
- if (typeof expected == 'string') {
- assert_equals(actual, expected, path);
- } else {
- if (expected.hasOwnProperty('length')) {
- assert_equals(actual.length, expected.length, path + '.length');
- }
- for (property in expected) {
- assert_subset(actual[property], expected[property], path + '.' + property);
- }
- }
- }
-
- function expect_config(keySystem, configurations, expectedConfiguration, testname) {
- promise_test(function(test) {
- return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) {
- assert_subset(a.getConfiguration(), expectedConfiguration, testname + ': ');
- });
- }, testname);
- }
-
- // Tests for Key System.
- expect_error('', [{}], 'InvalidAccessError', 'Empty Key System (%ks)');
- expect_error('com.example.unsupported', [{}], 'NotSupportedError', 'Unsupported Key System (%ks)');
- expect_error(config.keysystem + '.', [{}], 'NotSupportedError', 'Key System ending in "." (%ks)');
- expect_error(config.keysystem.toUpperCase(), [{}], 'NotSupportedError', 'Capitalized Key System (%ks)');
- expect_error(config.keysystem + '\u028F', [{}], 'NotSupportedError', 'Non-ASCII Key System (%ks)');
-
- // Parent of Clear Key not supported.
- expect_error(config.keysystem.match(/^(.*?)\./)[1], [{}], 'NotSupportedError', 'Root domain of Key System alone (%ks)');
- expect_error(config.keysystem.match(/^(.*?)\./)[0], [{}], 'NotSupportedError', 'Root domain of Key System, with dot (%ks)');
- expect_error(config.keysystem.match(/^(.*?\..*?)\./)[1], [{}], 'NotSupportedError', 'Domain of Key System along (%ks)');
- expect_error(config.keysystem.match(/^(.*?\..*?)\./)[0], [{}], 'NotSupportedError', 'Domain of Key System, with dot (%ks)');
-
- // Child of Clear Key not supported.
- expect_error(config.keysystem+'.foo', [{}], 'NotSupportedError', 'Child of Key System');
-
- // Prefixed Clear Key not supported.
- expect_error('webkit-'+config.keysystem, [{}], 'NotSupportedError', 'Prefixed Key System');
-
- // Incomplete names.
- expect_error(config.keysystem.substr(0,7)+config.keysystem.substr(8), [{}], 'NotSupportedError', 'Incomplete Key System name (%ks)');
- expect_error(config.keysystem.substr(0,config.keysystem.length-1), [{}], 'NotSupportedError', 'Incomplete Key System name (%ks)');
-
- // Spaces in key system name not supported.
- expect_error(' '+config.keysystem, [{}], 'NotSupportedError', 'Leading space in Key System name (%ks)');
- expect_error(config.keysystem.substr(0,6) + ' ' + config.keysystem.substr(6), [{}], 'NotSupportedError', 'Extra space in Key System name (%ks)');
- expect_error(config.keysystem + ' ', [{}], 'NotSupportedError', 'Trailing space in Key System name (%ks)');
-
- // Extra dots in key systems names not supported.
- expect_error('.' + config.keysystem, [{}], 'NotSupportedError', 'Leading dot in Key System name (%ks)');
- expect_error(config.keysystem.substr(0,6) + '.' + config.keysystem.substr(6), [{}], 'NotSupportedError', 'Trailing dot in Key System name (%ks)');
- expect_error(config.keysystem + '.', [{}], 'NotSupportedError', 'Trailing dot in Key System name (%ks)');
-
- // Key system name is case sensitive.
- if (config.keysystem !== config.keysystem.toUpperCase()) {
- expect_error(config.keysystem.toUpperCase(), [{}], 'NotSupportedError', 'Key System name is case sensitive (%ks)');
- }
-
- if (config.keysystem !== config.keysystem.toLowerCase()) {
- expect_error(config.keysystem.toLowerCase(), [{}], 'NotSupportedError', 'Key System name is case sensitive (%ks)');
- }
-
- // Tests for trivial configurations.
- expect_error(config.keysystem, [], 'InvalidAccessError', 'Empty supportedConfigurations');
- expect_config(config.keysystem, [{}], {}, 'Empty configuration');
-
- // Various combinations of supportedConfigurations.
- expect_config(config.keysystem, [{
- initDataTypes: [config.initDataType],
- audioCapabilities: [{contentType: config.audioType}],
- videoCapabilities: [{contentType: config.videoType}],
- }], {
- initDataTypes: [config.initDataType],
- audioCapabilities: [{contentType: config.audioType}],
- videoCapabilities: [{contentType: config.videoType}],
- }, 'Basic supported configuration');
-
- expect_config(config.keysystem, [{
- initDataTypes: ['fakeidt', config.initDataType],
- audioCapabilities: [{contentType: 'audio/fake'}, {contentType: config.audioType}],
- videoCapabilities: [{contentType: 'video/fake'}, {contentType: config.videoType}],
- }], {
- initDataTypes: [config.initDataType],
- audioCapabilities: [{contentType: config.audioType}],
- videoCapabilities: [{contentType: config.videoType}],
- }, 'Partially supported configuration');
-
- expect_config(config.keysystem, [{
- audioCapabilities: [{contentType: config.audioType}],
- }], {
- audioCapabilities: [{contentType: config.audioType}],
- }, 'Supported audio codec');
-
- expect_config(config.keysystem, [{
- audioCapabilities: [{contentType: config.audioType.replace(/^(.*?);(.*)/, "$1; $2")}],
- }], {
- audioCapabilities: [{contentType: config.audioType.replace(/^(.*?);(.*)/, "$1; $2")}],
- }, 'ContentType formatting must be preserved');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [{contentType: 'audio/webm; codecs=fake'}],
- }], 'NotSupportedError', 'Unsupported audio codec (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [{contentType: 'video/webm; codecs=fake'}],
- }], 'NotSupportedError', 'Unsupported video codec (%videocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/webm; codecs=mp4a'},
- {contentType: 'audio/webm; codecs=mp4a.40.2'}
- ],
- }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [{contentType: config.videoType}],
- }], 'NotSupportedError', 'Video codec specified in audio field (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: config.audioType}],
- }], 'NotSupportedError', 'Audio codec specified in video field (%videocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/webm; codecs=avc1'},
- {contentType: 'audio/webm; codecs=avc1.42e01e'}
- ],
- }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/mp4; codecs=vorbis'}
- ],
- }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)');
-
- expect_config(config.keysystem, [
- {initDataTypes: ['fakeidt']},
- {initDataTypes: [config.initDataType]}
- ], {initDataTypes: [config.initDataType]}, 'Two configurations, one supported');
-
- expect_config(config.keysystem, [
- {initDataTypes: [config.initDataType]},
- {}
- ], {initDataTypes: [config.initDataType]}, 'Two configurations, both supported');
-
- // Audio MIME type does not support video codecs.
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/webm; codecs="vp8,vorbis"'},
- {contentType: 'audio/webm; codecs="vorbis, vp8"'},
- {contentType: 'audio/webm; codecs="vp8"'}
- ],
- }], 'NotSupportedError', 'Audio MIME type does not support video codecs (webm) (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/mp4; codecs="avc1"'},
- {contentType: 'audio/mp4; codecs="avc1.4d401e"'},
- ],
- }], 'NotSupportedError', 'Audio MIME type does not support video codecs (mp4) (%audiocontenttype)');
-
- // Video MIME type does not support audio codecs.
- expect_error(config.keysystem, [{
- videoCapabilities: [
- {contentType: 'video/webm; codecs="vp8,vorbis"'},
- {contentType: 'video/webm; codecs="vorbis, vp8"'},
- {contentType: 'video/webm; codecs="vorbis"'}
- ],
- }], 'NotSupportedError', 'Video MIME type does not support audio codecs (webm) (%videocontenttype)');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [
- {contentType: 'video/mp4; codecs="mp4a"'},
- {contentType: 'video/mp4; codecs="mp4a.40.2"'}
- ],
- }], 'NotSupportedError', 'Video MIME type does not support audio codecs (mp4) (%videocontenttype)');
-
- // WebM does not support AVC1/AAC.
- expect_error(config.keysystem, [{
- audioCapabilities: [
- {contentType: 'audio/webm; codecs="aac"'},
- {contentType: 'audio/webm; codecs="avc1"'},
- {contentType: 'audio/webm; codecs="vp8,aac"'}
- ],
- }], 'NotSupportedError', 'WebM audio does not support AVC1/AAC (%audiocontenttype)');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [
- {contentType: 'video/webm; codecs="aac"'},
- {contentType: 'video/webm; codecs="avc1"'},
- {contentType: 'video/webm; codecs="vp8,aac"'}
- ],
- }], 'NotSupportedError', 'WebM video does not support AVC1/AAC (%videocontenttype)');
-
- // Extra space is allowed in contentType.
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: ' ' + config.videoType}],
- }], {
- videoCapabilities: [{contentType: ' ' + config.videoType}],
- }, 'Leading space in contentType');
-
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?);(.*)/, "$1 ;$2")}],
- }], {
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?);(.*)/, "$1 ;$2")}],
- }, 'Space before ; in contentType');
-
-
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType + ' '}],
- }], {
- videoCapabilities: [{contentType: config.videoType + ' '}],
- }, 'Trailing space in contentType');
-
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\")(.*)/, "$1 $2")}],
- }], {
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\")(.*)/, "$1 $2")}],
- }, 'Space at start of codecs parameter');
-
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\".*)\"/, "$1 \"")}],
- }], {
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\".*)\"/, "$1 \"")}],
- }, 'Space at end of codecs parameter');
-
- // contentType is not case sensitive (except the codec names).
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: 'V' + config.videoType.substr(1)}],
- }], {
- videoCapabilities: [{contentType: 'V' + config.videoType.substr(1)}],
- }, 'Video/' );
-
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?)c(odecs.*)/, "$1C$2")}],
- }], {
- videoCapabilities: [{contentType: config.videoType.replace( /^(.*?)c(odecs.*)/, "$1C$2")}],
- }, 'Codecs=');
-
- var t = config.videoType.match(/(.*?)(;.*)/);
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: t[1].toUpperCase() + t[2]}],
- }], {
- videoCapabilities: [{contentType: t[1].toUpperCase() + t[2]}],
- }, 'Upper case MIME type');
-
- t = config.videoType.match(/(.*?)codecs(.*)/);
- expect_config(config.keysystem, [{
- videoCapabilities: [{contentType: t[1] + 'CODECS' + t[2]}],
- }], {
- videoCapabilities: [{contentType: t[1] + 'CODECS' + t[2]}],
- }, 'CODECS=');
-
- // Unrecognized attributes are not allowed.
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: 'video/webm; foo="bar"'}],
- }], 'NotSupportedError', 'Unrecognized foo with webm (%videocontenttype)');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: 'video/mp4; foo="bar"'}],
- }], 'NotSupportedError', 'Unrecognized foo with mp4 (%videocontenttype)');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: config.videoType + '; foo="bar"'}],
- }], 'NotSupportedError', 'Unrecognized foo with codecs (%videocontenttype)');
-
- // Invalid contentTypes.
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: 'fake'}],
- }], 'NotSupportedError', 'contentType: %videocontenttype');
-
- expect_error(config.keysystem, [{
- audioCapabilities: [{contentType: 'audio/fake'}],
- }], 'NotSupportedError', 'contentType: %audiocontenttype');
-
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: 'video/fake'}],
- }], 'NotSupportedError', 'contentType: %videocontenttype');
-
- // The actual codec names are case sensitive.
- t = config.videoType.match( /(.*?codecs=\")(.*?\")(.*)/ );
- if (t[2] !== t[2].toUpperCase()) {
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: t[1] + t[2].toUpperCase() + t[3] }],
- }], 'NotSupportedError', 'contentType: %videocontenttype');
- }
-
- if (t[2] !== t[2].toLowerCase()) {
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: t[1] + t[2].toLowerCase() + t[3] }],
- }], 'NotSupportedError', 'contentType: %videocontenttype');
- }
-
- // Extra comma is not allowed in codecs.
- expect_error(config.keysystem, [{
- videoCapabilities: [{contentType: t[1] + ',' + t[2] + t[3] }],
- }], 'NotSupportedError', 'contentType: %videocontenttype');
-}