<html>
<head>
<title>NeedKey</title>
- <script src=../video-test.js></script>
+ <script src="encrypted-media-utils.js"></script>
+ <script src="../w3c-media-utils.js"></script>
+ <script src="../../resources/testharness.js"></script>
+ <script src="../../resources/testharnessreport.js"></script>
+ </head>
+ <body>
+ <video id="testVideo" controls></video>
+ <div id="log"></div>
+ <p>Test that needkey event is fired on an encrypted media file.</p>
<script>
- function stringToUint8Array(str)
- {
- var arr = [];
- for(var i = 0,j = str.length; i < j; ++i)
- arr[i] = str.charCodeAt(i);
- return new Uint8Array(arr);
- }
-
- var mediaKeys;
- var mediaKeySession;
var expectedInitData = stringToUint8Array('0123456789012345');
- var validKey = stringToUint8Array(
- '{"keys":[{"kty":"oct","kid":"691i8WgU0nto7xIq/OSuPA","k":"MDEyMzQ1Njc4OTAxMjM0"}]}');
// Will get 2 identical events, one for audio, one for video.
var expectedEvents = 2;
- function runTest()
+ async_test(function(test)
{
- video = document.getElementsByTagName('video')[0];
- run('video.src = "../content/test-encrypted.webm"');
- waitForEvent('needkey', needKey, false, false, video, false);
- }
+ var video = document.getElementById("testVideo");
- function needKey(event)
- {
- testExpected("event.target", video);
- testExpected("event instanceof window.MediaKeyNeededEvent", true);
- testExpected("event.type", "needkey");
+ var onNeedKey = function(event)
+ {
+ assert_equals(event.target, video);
+ assert_true(event instanceof window.MediaKeyNeededEvent);
+ assert_equals(event.type, "needkey");
+ assert_equals(event.contentType, "video/webm");
+ assert_array_equals(event.initData, expectedInitData);
- // FIXME: Enable the following line when contentType set.
- // testExpected("event.contentType", "video/webm");
- testArraysEqual("event.initData", expectedInitData);
+ if (--expectedEvents == 0)
+ test.done();
+ };
- if (--expectedEvents == 0)
- endTest();
- }
+ waitForEventAndRunStep("needkey", video, onNeedKey, test);
+ video.src = "../content/test-encrypted.webm";
+ }, "Needkey fired on encrypted media file.");
</script>
- </head>
- <body onload="runTest()">
- <p>This tests that the 'needkey' event is generated.</p>
- <video></video>
</body>
</html>