| Index: LayoutTests/media/encrypted-media/encrypted-media-playback-multiple-sessions.html
|
| diff --git a/LayoutTests/media/encrypted-media/encrypted-media-playback-multiple-sessions.html b/LayoutTests/media/encrypted-media/encrypted-media-playback-multiple-sessions.html
|
| index 7c3335f9c30307fabf89166d5e65b4d62b20cfb0..eb9ccea2575fc377b922c32c30968c483ba2f414 100644
|
| --- a/LayoutTests/media/encrypted-media/encrypted-media-playback-multiple-sessions.html
|
| +++ b/LayoutTests/media/encrypted-media/encrypted-media-playback-multiple-sessions.html
|
| @@ -16,6 +16,10 @@
|
| var video = document.getElementById('testVideo');
|
| var audioMediaKeySession = null;
|
| var videoMediaKeySession = null;
|
| + var audioInitDataType = null;
|
| + var videoInitDataType = null;
|
| + var audioInitData = null;
|
| + var videoInitData = null;
|
| var audioKeyProvided = false;
|
| var videoKeyProvided = false;
|
|
|
| @@ -31,18 +35,44 @@
|
| {
|
| var keyId = String.fromCharCode.apply(null, new Uint8Array(event.initData));
|
|
|
| + // To avoid issues when comparing the expected.txt file
|
| + // (which logs the events in the order they occur), save
|
| + // the initData and make the calls to generateRequest()
|
| + // only after both "onencrypted" events are received.
|
| + // This prevents a "message" event from occurring before
|
| + // both "onencrypted" events are received.
|
| var mediaKeySession = video.mediaKeys.createSession();
|
| - waitForEventAndRunStep('message', mediaKeySession, onMessage, test);
|
| - mediaKeySession.generateRequest(event.initDataType, event.initData).then(function() {
|
| - if (keyId == videoKeyId) {
|
| - assert_equals(videoMediaKeySession, null);
|
| - videoMediaKeySession = mediaKeySession;
|
| - } else {
|
| - assert_equals(keyId, audioKeyId);
|
| - assert_equals(audioMediaKeySession, null);
|
| - audioMediaKeySession = mediaKeySession;
|
| - }
|
| - }).catch(function(error) {
|
| + if (keyId == videoKeyId) {
|
| + assert_equals(videoMediaKeySession, null);
|
| + videoMediaKeySession = mediaKeySession;
|
| + videoInitDataType = event.initDataType;
|
| + videoInitData = event.initData;
|
| + // Return if audio "onencrypted" event not yet received.
|
| + if (audioMediaKeySession == null)
|
| + return;
|
| + } else {
|
| + assert_equals(keyId, audioKeyId);
|
| + assert_equals(audioMediaKeySession, null);
|
| + audioMediaKeySession = mediaKeySession;
|
| + audioInitDataType = event.initDataType;
|
| + audioInitData = event.initData;
|
| + // Return if video "onencrypted" event not yet received.
|
| + if (videoMediaKeySession == null)
|
| + return;
|
| + }
|
| +
|
| + // Both sessions have been created.
|
| + assert_not_equals(videoMediaKeySession, null);
|
| + assert_not_equals(audioMediaKeySession, null);
|
| +
|
| + var promises = [];
|
| + waitForEventAndRunStep('message', videoMediaKeySession, onMessage, test);
|
| + promises.push(videoMediaKeySession.generateRequest(videoInitDataType, videoInitData));
|
| +
|
| + waitForEventAndRunStep('message', audioMediaKeySession, onMessage, test);
|
| + promises.push(audioMediaKeySession.generateRequest(audioInitDataType, audioInitData));
|
| +
|
| + Promise.all(promises).catch(function(error) {
|
| forceTestFailureFromPromise(test, error);
|
| });
|
| }
|
|
|