<html>
  <!-- Trying to access a cross origin resource, but response does not contain CORS headers.
       Video play back is expected to fail. -->
  <body onload="start()">
    <script src=../../media-resources/video-test.js></script>
    <script src=../../media-resources/media-file.js></script>
    <script>
        waitForEvent('error', function() {
          endTest();
        });

        waitForEvent('playing', function() {
          failTest("Video stream access should not be granted");
        });

        function start() {
            findMediaElement();
            var mediaFile = findMediaFile("video", "../../media/resources/test");
            video.src = "http://localhost:8080/" + mediaFile;
            video.play();
        }
    </script>

    <video crossorigin></video>
    <canvas></canvas>
  </body>
</head>
