<html>
  <head>
      <script src=../../media-resources/media-file.js></script>
      <script src=../../media-resources/video-test.js></script>
      <script>
          function start() {
              findMediaElement();

              waitForEvent('loadedmetadata', function() {
                  logResult(true, "loaded metadata of media file");
                  endTest();
              });

              waitForEvent('error', function() {
                  logResult(false, "failed to load media file");
                  endTest();
              });

              var mediaFile = findMediaFile("video", "resources/test");
              var type = mimeTypeForExtension(mediaFile.split('.').pop());
              video.src = "http://127.0.0.1:8000/media/video-accept-encoding.cgi?name=" + mediaFile + "&type=" + type;
              video.load();
          }
      </script>
    </head>
    <body onload="start()">
      <video controls></video>
      <p>Test that video requests contain no "Accept-Encoding" header.</p>
    </body>
</html>
