163 lines
6.4 KiB
HTML
163 lines
6.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src=../video-test.js></script>
|
|
<script type="text/javascript">
|
|
var mock;
|
|
var promise;
|
|
var mediaKeySystemAccess;
|
|
var mediaKeys;
|
|
var mediaKeySession;
|
|
var capabilities = {};
|
|
var kids;
|
|
var encoder = new TextEncoder();
|
|
|
|
function doTest()
|
|
{
|
|
if (!window.internals) {
|
|
failTest("Internals is required for this test.")
|
|
return;
|
|
}
|
|
|
|
run('internals.initializeMockMediaSource()');
|
|
run('mock = internals.registerMockCDM()');
|
|
run('mock.supportedDataTypes = ["keyids"]');
|
|
run('capabilities.initDataTypes = ["keyids"]');
|
|
run(`capabilities.videoCapabilities = [{ contentType: 'video/mock; codecs="mock"' }] `);
|
|
run('promise = navigator.requestMediaKeySystemAccess("org.webkit.mock", [capabilities])');
|
|
shouldResolve(promise).then(gotMediaKeySystemAccess, failTest);
|
|
}
|
|
|
|
function next() {
|
|
if (!tests.length) {
|
|
mock.unregister();
|
|
endTest()
|
|
return;
|
|
}
|
|
|
|
var nextTest = tests.shift();
|
|
consoleWrite('');
|
|
nextTest();
|
|
}
|
|
|
|
function gotMediaKeySystemAccess(result) {
|
|
mediaKeySystemAccess = result;
|
|
next();
|
|
}
|
|
|
|
function gotMediaKeys(result) {
|
|
mediaKeys = result;
|
|
next();
|
|
}
|
|
|
|
tests = [
|
|
function() {
|
|
run('promise = mediaKeySystemAccess.createMediaKeys()');
|
|
shouldResolve(promise).then(gotMediaKeys, failTest);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Closing a non-callable MediaKeySession should reject.');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
testExpected('typeof mediaKeySession', 'object');
|
|
run('promise = mediaKeySession.close()');
|
|
shouldReject(promise).then(next, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Closing a failed MediaKeySession should reject.')
|
|
run('kids = JSON.stringify({ invalid: "invalid" })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldReject(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldReject(promise).then(next, next);
|
|
}, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Closing a valid MediaKeySession should resolve.')
|
|
run('kids = JSON.stringify({ kids: [ "MTIzNDU=" ] })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(next, next);
|
|
}, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Closing a valid MediaKeySession should resolve the "closed" promise.')
|
|
run('kids = JSON.stringify({ kids: [ "MTIzNDU=" ] })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldResolve(promise).then(function() {
|
|
shouldResolve(mediaKeySession.closed).then(function() {
|
|
consoleWrite('"closed" promise correctly resolved.');
|
|
next();
|
|
}, next);
|
|
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise);
|
|
}, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Already closed MediaKeySession should resolve the "closed" promise immediately.');
|
|
run('kids = JSON.stringify({ kids: [ "MTIzNDU=" ] })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(function() {
|
|
shouldResolve(mediaKeySession.closed).then(function () {
|
|
consoleWrite('"closed" promise correctly resolved.');
|
|
next();
|
|
}, next);
|
|
}, next);
|
|
}, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Closing a closed MediaKeySession should resolve.')
|
|
run('kids = JSON.stringify({ kids: [ "MTIzNDU=" ] })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(next, next);
|
|
}, next);
|
|
}, next);
|
|
},
|
|
|
|
function() {
|
|
consoleWrite('Operating on a closed MediaKeySession should resolve for close(), reject otherwise.')
|
|
run('kids = JSON.stringify({ kids: [ "MTIzNDU=" ] })');
|
|
run('mediaKeySession = mediaKeys.createSession("temporary")');
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.generateRequest("keyids", encoder.encode(kids))');
|
|
shouldReject(promise).then(function() {
|
|
run('promise = mediaKeySession.update(encoder.encode("some-data"))');
|
|
shouldReject(promise).then(function() {
|
|
run('promise = mediaKeySession.close()');
|
|
shouldResolve(promise).then(function() {
|
|
run('promise = mediaKeySession.remove()');
|
|
shouldReject(promise).then(next, next);
|
|
}, next);
|
|
}, next);
|
|
}, next);
|
|
}, next);
|
|
}, next);
|
|
},
|
|
];
|
|
</script>
|
|
</head>
|
|
<body onload="doTest()">
|
|
</body>
|
|
</html>
|