OLD | NEW |
(Empty) | |
| 1 function runTest(config, qualifier) { |
| 2 var testname = testnamePrefix(qualifier, config.keysystem) |
| 3 + ', setmediakeys again after resetting src
'; |
| 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 _video = config.video, |
| 13 _access, |
| 14 _mediaKeys, |
| 15 _mediaKeySession, |
| 16 _mediaSource; |
| 17 |
| 18 function onFailure(error) { |
| 19 forceTestFailureFromPromise(test, error); |
| 20 } |
| 21 |
| 22 function onMessage(event) { |
| 23 config.messagehandler(event.messageType, event.message).then(functio
n(response) { |
| 24 _mediaKeySession.update(response).catch(onFailure).then(function
() { |
| 25 _video.play(); |
| 26 }); |
| 27 }); |
| 28 } |
| 29 |
| 30 function onEncrypted(event) { |
| 31 waitForEventAndRunStep('message', _mediaKeySession, onMessage, test)
; |
| 32 _mediaKeySession.generateRequest( config.initData ? config.initDat
aType : event.initDataType, |
| 33 config.initData || event.initDat
a ) |
| 34 .catch(onFailure); |
| 35 } |
| 36 |
| 37 function playVideoAndWaitForTimeupdate() |
| 38 { |
| 39 return new Promise(function(resolve) { |
| 40 testmediasource(config).then(function(source) { |
| 41 _mediaKeySession = _mediaKeys.createSession('temporary'); |
| 42 _video.src = URL.createObjectURL(source); |
| 43 }); |
| 44 _video.addEventListener('timeupdate', function listener(event) { |
| 45 if (event.target.currentTime < (config.duration || 1)) |
| 46 return; |
| 47 _video.removeEventListener('timeupdate', listener); |
| 48 resolve('success'); |
| 49 }); |
| 50 }); |
| 51 } |
| 52 |
| 53 waitForEventAndRunStep('encrypted', _video, onEncrypted, test); |
| 54 navigator.requestMediaKeySystemAccess(config.keysystem, [configuration])
.then(function(access) { |
| 55 _access = access; |
| 56 return _access.createMediaKeys(); |
| 57 }).then(function(result) { |
| 58 _mediaKeys = result; |
| 59 return _video.setMediaKeys(_mediaKeys); |
| 60 }).then(function() { |
| 61 return config.servercertificate ? _mediaKeys.setServerCertificate( c
onfig.servercertificate ) : true; |
| 62 }).then(function( success ) { |
| 63 return playVideoAndWaitForTimeupdate(); |
| 64 }).then(function(results) { |
| 65 return _access.createMediaKeys(); |
| 66 }).then(function(result) { |
| 67 _mediaKeys = result; |
| 68 _video.src = ''; |
| 69 return _video.setMediaKeys(_mediaKeys); |
| 70 }).then(function() { |
| 71 return config.servercertificate ? _mediaKeys.setServerCertificate( c
onfig.servercertificate ) : true; |
| 72 }).then(function( success ) { |
| 73 return playVideoAndWaitForTimeupdate(); |
| 74 }).then(function() { |
| 75 _video.src = ''; |
| 76 test.done(); |
| 77 }).catch(onFailure); |
| 78 }, testname); |
| 79 } |
OLD | NEW |