setmediakeys-to-multiple-video-elements.js (2433B)
1 function runTest(config, qualifier) { 2 var testname = testnamePrefix(qualifier, config.keysystem) 3 + ', setMediaKeys to multiple video elements'; 4 5 var configuration = getSimpleConfigurationForContent(config.content); 6 7 if ( config.initDataType && config.initData ) { 8 configuration.initDataTypes = [ config.initDataType ]; 9 } 10 11 async_test (function (test) { 12 var _video1 = config.video1, 13 _video2 = config.video2, 14 _mediaKeys; 15 16 function onFailure(error) { 17 forceTestFailureFromPromise(test, error); 18 } 19 20 navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { 21 assert_equals(access.keySystem, config.keysystem) 22 return access.createMediaKeys(); 23 }).then(function(result) { 24 _mediaKeys = result; 25 assert_not_equals(_mediaKeys, null); 26 assert_equals(typeof _mediaKeys.createSession, 'function'); 27 return _video1.setMediaKeys(_mediaKeys); 28 }).then(function(result) { 29 assert_not_equals(_video1.mediaKeys, null); 30 assert_equals(_video1.mediaKeys, _mediaKeys); 31 // The specification allows this to fail, but it is not required to fail. 32 return _video2.setMediaKeys(_mediaKeys); 33 }).then(function(result) { 34 // Second setMediaKeys is not required to fail. 35 assert_equals(_video2.mediaKeys, _mediaKeys); 36 return Promise.resolve(); 37 }, function(error) { 38 assert_equals(error.constructor, globalThis.QuotaExceededError, 'QuotaExceededError constructor match'); 39 assert_equals(error.quota, null, 'quota'); 40 assert_equals(error.requested, null, 'requested'); 41 assert_not_equals(error.message, ''); 42 // Return something so the promise resolves properly. 43 return Promise.resolve(); 44 }).then(function() { 45 // Now clear it from video1. 46 return _video1.setMediaKeys(null); 47 }).then(function() { 48 // Should be assignable to video2. 49 return _video2.setMediaKeys(_mediaKeys); 50 }).then(function(result) { 51 assert_not_equals(_video2.mediaKeys, null); 52 assert_equals(_video2.mediaKeys, _mediaKeys); 53 test.done(); 54 }).catch(onFailure); 55 }, testname); 56 }