Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / media / encrypted-media / encrypted-media-playback-multiple-sessions.html
index f6d89cd..05a5d9c 100644 (file)
                 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;
 
                 var videoKey = new Uint8Array([0x7A, 0x7A, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B,
                                                0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A]);
 
-                function onNeedKey(event)
+                function onEncrypted(event)
                 {
-                    var keyId = String.fromCharCode.apply(null, event.initData);
+                    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.contentType, 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);
                     });
                 }
                     test.done();
                 }
 
-                MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
-                    waitForEventAndRunStep('needkey', video, onNeedKey, test);
+                navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(function(access) {
+                    return access.createMediaKeys();
+                }).then(function(mediaKeys) {
+                    waitForEventAndRunStep('encrypted', video, onEncrypted, test);
                     waitForEventAndRunStep('playing', video, onPlaying, test);
                     video.src = '../content/test-encrypted-different-av-keys.webm';
                     return video.setMediaKeys(mediaKeys);