events-session-closed-event.js (1985B)
1 function runTest(config, qualifier) 2 { 3 var testname = testnamePrefix(qualifier, config.keysystem) + ' test MediaKeySession closed event.'; 4 5 var configuration = { 6 initDataTypes: [config.initDataType], 7 audioCapabilities: [{ 8 contentType: config.audioType 9 }], 10 videoCapabilities: [{ 11 contentType: config.videoType 12 }], 13 sessionTypes: ['temporary'] 14 }; 15 16 promise_test(function (test) { 17 var initDataType; 18 var initData; 19 var mediaKeySession; 20 21 return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) { 22 initDataType = access.getConfiguration().initDataTypes[0]; 23 return access.createMediaKeys(); 24 }).then(function (mediaKeys) { 25 mediaKeySession = mediaKeys.createSession(); 26 if(config.initData) { 27 initData = config.initData; 28 } else { 29 initData = stringToUint8Array(atob(config.content.keys[0].initData)); 30 } 31 return mediaKeySession.generateRequest(initDataType, initData); 32 }).then(function() { 33 // close() should result in the closed promise being 34 // fulfilled. 35 return mediaKeySession.close(); 36 }).then(function (result) { 37 assert_equals(result, undefined); 38 // Wait for the session to be closed. 39 return mediaKeySession.closed; 40 }).then(function (result) { 41 assert_equals(result, "closed-by-application"); 42 // Now that the session is closed, verify that the 43 // closed attribute immediately returns a fulfilled 44 // promise. 45 return mediaKeySession.closed; 46 }).then(function (result) { 47 assert_equals(result, "closed-by-application"); 48 }).catch(function(error) { 49 assert_unreached('Error: ' + error.name); 50 }); 51 }, testname); 52 }