blob: 44f683eac854b1f0fea6a845c0ea841e84eb5c26 [file] [log] [blame]
function runTest(config, qualifier)
{
var testname = testnamePrefix(qualifier, config.keysystem) + ' test MediaKeySession closed event.';
var configuration = {
initDataTypes: [config.initDataType],
audioCapabilities: [{
contentType: config.audioType
}],
videoCapabilities: [{
contentType: config.videoType
}],
sessionTypes: ['temporary']
};
promise_test(function (test) {
var initDataType;
var initData;
var mediaKeySession;
return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) {
initDataType = access.getConfiguration().initDataTypes[0];
return access.createMediaKeys();
}).then(function (mediaKeys) {
mediaKeySession = mediaKeys.createSession();
if(config.initData) {
initData = config.initData;
} else {
initData = stringToUint8Array(atob(config.content.keys[0].initData));
}
return mediaKeySession.generateRequest(initDataType, initData);
}).then(function() {
// close() should result in the closed promise being
// fulfilled.
return mediaKeySession.close();
}).then(function (result) {
assert_equals(result, undefined);
// Wait for the session to be closed.
return mediaKeySession.closed;
}).then(function (result) {
assert_equals(result, undefined);
// Now that the session is closed, verify that the
// closed attribute immediately returns a fulfilled
// promise.
return mediaKeySession.closed;
}).then(function (result) {
assert_equals(result, undefined);
}).catch(function(error) {
assert_unreached('Error: ' + error.name);
});
}, testname);
}