chromium/third_party/blink/web_tests/http/tests/media/encrypted-media/encrypted-media-encrypted-event-different-origin.html

<!DOCTYPE html>
<html>
    <head>
        <title>Initialization Data not returned when using different origin</title>
        <script src="/js-test-resources/testharness.js"></script>
        <script src="/js-test-resources/testharnessreport.js"></script>
    </head>
    <body>
        <video id="testVideo"></video>
        <div id="log"></div>
        <script>
            async_test(function(test)
            {
                var video = document.getElementById('testVideo');
                var encryptedEventCount = 0;

                function logMessage(msg) {
                    var date = new Date();
                    var hours = ('0' + date.getHours()).slice(-2);
                    var minutes = ('0' + date.getMinutes()).slice(-2);
                    var secs = ('0' + date.getSeconds()).slice(-2);
                    var milliSecs = ('00' + date.getMilliseconds()).slice(-3);
                    console.log(hours + ':' + minutes + ':' + secs + '.' + milliSecs + ': ' + msg);
                };

                function onEncrypted(event)
                {
                    logMessage('onEncrypted');
                    assert_equals(event.target, video);
                    assert_true(event instanceof window.MediaEncryptedEvent);
                    assert_equals(event.type, 'encrypted');

                    // Since the .src is in a different origin as this test,
                    // both initDataType and initData should be empty.
                    assert_equals(event.initDataType, '');
                    assert_equals(event.initData.byteLength, 0);

                    // Both the audio and the video tracks have initData,
                    // so finish once both events are received.
                    if (++encryptedEventCount == 2) {
                        logMessage('done');
                        test.done();
                    }
                }

                logMessage('starting');
                navigator.requestMediaKeySystemAccess(
                    'org.w3.clearkey',
                    [{audioCapabilities: [{contentType: 'audio/webm; codecs=vorbis'}]}])
                  .then(function(access) {
                    return access.createMediaKeys();
                }).then(function(mediaKeys) {
                    video.addEventListener('encrypted', test.step_func(onEncrypted), true);
                    return video.setMediaKeys(mediaKeys);
                }).then(function(result) {
                    // Verify that the current origin is different than what
                    // we use for the content.
                    logMessage('setting src');
                    assert_equals(self.origin, 'http://127.0.0.1:8000');
                    video.src = 'http://127.0.0.1:8080/media/encrypted-media/test-encrypted.webm';
                    video.play();
                });
            }, 'Initialization Data not returned when using different origin.');
        </script>
    </body>
</html>