Index: LayoutTests/media/encrypted-media/encrypted-media-playback-setmediakeys-after-src.html |
diff --git a/LayoutTests/media/encrypted-media/encrypted-media-playback-setmediakeys-after-src.html b/LayoutTests/media/encrypted-media/encrypted-media-playback-setmediakeys-after-src.html |
index 4bfa79aba862ff86cebcce268b7775f779a9f9f6..3a95e4ad0a4a774e3c7e10d5a6cb6c4b052fd84a 100644 |
--- a/LayoutTests/media/encrypted-media/encrypted-media-playback-setmediakeys-after-src.html |
+++ b/LayoutTests/media/encrypted-media/encrypted-media-playback-setmediakeys-after-src.html |
@@ -14,8 +14,8 @@ |
async_test(function(test) |
{ |
var video = document.getElementById('testVideo'); |
- var isSessionCreated = false; |
var isUpdatePromiseResolved = false; |
+ var encryptedEventCount = 0; |
var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, |
0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); |
@@ -26,11 +26,13 @@ |
assert_true(event instanceof window.MediaEncryptedEvent); |
assert_equals(event.type, 'encrypted'); |
- // The same decryption key is shared by all streams so |
- // only create a shared session once. |
- if (isSessionCreated) |
+ // The same decryption key is shared by all streams so only |
+ // create a shared session once. To avoid timing issues with |
+ // the "message" event being received before the second |
+ // "encrypted" event, only create the session on the second |
+ // event. |
+ if (++encryptedEventCount != 2) |
return; |
- isSessionCreated = true; |
var mediaKeySession = video.mediaKeys.createSession(); |
waitForEventAndRunStep('message', mediaKeySession, onMessage, test); |