diff options
Diffstat (limited to 'dom/media/test/test_eme_playback.html')
-rw-r--r-- | dom/media/test/test_eme_playback.html | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/dom/media/test/test_eme_playback.html b/dom/media/test/test_eme_playback.html deleted file mode 100644 index a568402cd6..0000000000 --- a/dom/media/test/test_eme_playback.html +++ /dev/null @@ -1,188 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>Test Encrypted Media Extensions</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> - <script type="text/javascript" src="manifest.js"></script> - <script type="text/javascript" src="http://test1.mochi.test:8888/tests/dom/media/test/eme.js"></script> -</head> -<body> -<pre id="test"> -<script class="testbody" type="text/javascript"> -var manager = new MediaTestManager; - -function ArrayBuffersEqual(a, b) { - if (a.byteLength != b.byteLength) { - return false; - } - var ua = new Uint8Array(a); - var ub = new Uint8Array(b); - for (var i = 0; i < ua.length; i++) { - if (ua[i] != ub[i]) { - return false; - } - } - return true; -} - -function KeysChangeFunc(session, keys, token) { - session.keyIdsReceived = []; - for (var keyid in keys) { - Log(token, "Set " + keyid + " to false in session[" + session.sessionId + "].keyIdsReceived"); - session.keyIdsReceived[keyid] = false; - } - return function(ev) { - var session = ev.target; - session.gotKeysChanged = true; - - var keyList = []; - var valueList = []; - var map = session.keyStatuses; - - // Test that accessing keys not known to the CDM has expected behaviour. - var absentKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - is(map.has(absentKey), false, "Shouldn't have a key that's not in the media"); - is(map.get(absentKey), undefined, "Unknown keys should undefined status"); - - // Verify known keys have expected status. - for (var [key, val] of map.entries()) { - is(key.constructor, ArrayBuffer, "keyId should be ArrayBuffer"); - ok(map.has(key), "MediaKeyStatusMap.has() should work."); - is(map.get(key), val, "MediaKeyStatusMap.get() should work."); - keyList.push(key); - valueList.push(val); - is(val, "usable", token + ": key status should be usable"); - var kid = Base64ToHex(window.btoa(ArrayBufferToString(key))); - ok(kid in session.keyIdsReceived, TimeStamp(token) + " session[" + session.sessionId + "].keyIdsReceived contained " + kid + " as expected."); - session.keyIdsReceived[kid] = true; - } - - var index = 0; - for (var keyId of map.keys()) { - ok(ArrayBuffersEqual(keyId, keyList[index]), "MediaKeyStatusMap.keys() should correspond to entries"); - index++; - } - index = 0; - for (var val of map.values()) { - is(val, valueList[index], "MediaKeyStatusMap.values() should correspond to entries"); - index++; - } - } -} - -function startTest(test, token) -{ - manager.started(token); - - var sessions = []; - - var v = SetupEME(test, token, - { - onsessioncreated: function(session) { - sessions.push(session); - session.addEventListener("keystatuseschange", KeysChangeFunc(session, test.keys, token), false); - - session.numKeystatuseschangeEvents = 0; - session.numOnkeystatuseschangeEvents = 0; - - session.addEventListener("keystatuseschange", function() { - session.numKeystatuseschangeEvents += 1; - }); - session.onkeystatuseschange = function() { - session.numOnkeystatuseschangeEvents += 1; - }; - - session.numMessageEvents = 0; - session.numOnMessageEvents = 0; - session.addEventListener("message", function() { - session.numMessageEvents += 1; - }); - session.onmessage = function() { - session.numOnMessageEvents += 1; - }; - } - } - ); - - document.body.appendChild(v); - - var gotEncrypted = 0; - - v.addEventListener("encrypted", function(ev) { - gotEncrypted += 1; - }); - - v.addEventListener("loadedmetadata", function() { - ok(SpecialPowers.do_lookupGetter(v, "isEncrypted").apply(v), - TimeStamp(token) + " isEncrypted should be true"); - is(v.isEncrypted, undefined, "isEncrypted should not be accessible from content"); - }); - - v.addEventListener("ended", function(ev) { - ok(true, TimeStamp(token) + " got ended event"); - - is(gotEncrypted, test.sessionCount, - TimeStamp(token) + " encrypted events expected: " + test.sessionCount - + ", actual: " + gotEncrypted); - - ok(Math.abs(test.duration - v.duration) < 0.1, - TimeStamp(token) + " Duration of video should be corrrect"); - ok(Math.abs(test.duration - v.currentTime) < 0.1, - TimeStamp(token) + " Current time should be same as duration"); - - // Verify all sessions had all keys went sent to the CDM usable, and thus - // that we received keystatuseschange event(s). - is(sessions.length, test.sessionCount, TimeStamp(token) + " should have " - + test.sessionCount - + " session" + (test.sessionCount === 1 ? "" : "s")); - var keyIdsReceived = []; - for (var keyid in test.keys) { keyIdsReceived[keyid] = false; } - for (var i = 0; i < sessions.length; i++) { - var session = sessions[i]; - ok(session.gotKeysChanged, - TimeStamp(token) + " session[" + session.sessionId - + "] should have received at least one keychange event"); - for (var kid in session.keyIdsReceived) { - Log(token, "session[" + session.sessionId + "] key " + kid + " = " + (session.keyIdsReceived[kid] ? "true" : "false")); - if (session.keyIdsReceived[kid]) { keyIdsReceived[kid] = true; } - } - ok(session.numKeystatuseschangeEvents > 0, TimeStamp(token) + " should get key status changes"); - is(session.numKeystatuseschangeEvents, session.numOnkeystatuseschangeEvents, - TimeStamp(token) + " should have as many keystatuseschange event listener calls as event handler calls."); - - ok(session.numMessageEvents > 0, TimeStamp(token) + " should get message events"); - is(session.numMessageEvents, session.numOnMessageEvents, - TimeStamp(token) + " should have as many message event listener calls as event handler calls."); - } - for (var kid in keyIdsReceived) { - ok(keyIdsReceived[kid], TimeStamp(token) + " key with id " + kid + " was usable as expected"); - } - - v.closeSessions().then(() => manager.finished(token)); - }); - - LoadTest(test, v, token) - .then(function() { - v.play(); - }).catch(function() { - ok(false, token + " failed to load"); - manager.finished(token); - }); -} - -function beginTest() { - manager.runTests(gEMETests, startTest); -} - -if (!IsMacOSSnowLeopardOrEarlier()) { - SimpleTest.waitForExplicitFinish(); - SetupEMEPref(beginTest); -} else { - todo(false, "Test disabled on this platform."); -} -</script> -</pre> -</body> -</html> |