<!DOCTYPE html>
<html>
  <head>
    <title>object-fit, video</title>
    <style>
      .group > div {
        display: inline-block;
        overflow: hidden;
        width: 120px;
        height: 120px;
        border: 1px solid blue;
        background-color: gray;
        margin: 10px;
      }

      .group > * > * { display: block; }
      .group > *:nth-child(1) > * { width:100%; height:100%; }
      .group > *:nth-child(2) > * { width:100%; margin-top:15px; }
      .group > *:nth-child(3) > * { height:100%; margin-left:-20px; }
      .group > *:nth-child(4) > * { margin-left:-100px; margin-top:-60px; }
      .group > *:nth-child(5) > * { width:100%; margin-top:15px; }
    </style>
    <script src=media-file.js></script>
    <script>
        if (window.testRunner)
          testRunner.waitUntilDone();

        function init()
        {
            setSrcByTagName("video", findMediaFile("video", "content/test"));

            var totalCount = document.getElementsByTagName('video').length;
            var count = totalCount;
            document.addEventListener("canplaythrough", function () {
                if (!--count) {
                    if (window.testRunner)
                        setTimeout(function() { testRunner.notifyDone(); }, totalCount * 150);
                }
            }, true);
        }
    </script>

  </head>
  <body onload="init();">
    <div class="group">
      <!-- Note about the first video here: There's no way to unlock a video from its
	   aspect ratio without using object-fit:fill, so we have to use it here as well
	   as in the test file. In order to actually being able to detect failures, use a
	   different background color. -->
      <div style="background:salmon;"><video style="object-fit:fill;"></video></div>
      <div><video></video></div>
      <div><video></video></div>
      <div><video></video></div>
      <div><video></video></div>
    </div>
  </body>
</html>
