Index: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/onencrypted.js |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/onencrypted.js b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/onencrypted.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dbeb99d5d44cd4a02c76912489b82f92701bee3d |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/onencrypted.js |
@@ -0,0 +1,48 @@ |
+function runTest(config) { |
+ var expectedInitData = []; |
+ expectedInitData.push(stringToUint8Array(atob(config.keys[0].initData))); |
+ expectedInitData.push(stringToUint8Array(atob(config.keys[1].initData))); |
+ |
+ // Will get 2 identical events, one for audio, one for video. |
+ var expectedEvents = 2; |
+ var currentData; |
+ |
+ async_test(function (test) { |
+ var video = config.video, |
+ mediaSource, |
+ onEncrypted = function (event) { |
+ currentData = new Uint8Array(event.initData); |
+ assert_equals(event.target, config.video); |
+ assert_true(event instanceof window.MediaEncryptedEvent); |
+ assert_equals(event.type, 'encrypted'); |
+ assert_equals(event.initDataType, 'cenc'); |
+ // At this point we do not know if the event is related to audio or video. So check for both expected init data |
+ assert_true(checkInitData(currentData, expectedInitData[0]) || checkInitData(currentData, expectedInitData[1])); |
+ |
+ if (--expectedEvents === 0) { |
+ test.done(); |
+ } |
+ }; |
+ |
+ waitForEventAndRunStep('encrypted', video, onEncrypted, test); |
+ return testmediasource(config).then(function (source) { |
+ mediaSource = source; |
+ config.video.src = URL.createObjectURL(mediaSource); |
+ return source.done; |
+ }).then(function(){ |
+ video.play(); |
+ }); |
+ }, 'encrypted fired on encrypted media file.'); |
+} |
+ |
+function checkInitData(data, expectedData) { |
+ if (data.length !== expectedData.length) { |
+ return false; |
+ } |
+ for (var i = 0; i < data.length; i++) { |
+ if (data[i] !== expectedData[i]) { |
+ return false; |
+ } |
+ } |
+ return true; |
+} |