<!DOCTYPE html>
<html>
  <body onload="load()">
    <p>Tests decoding and rendering encrypted video element that has a changing
      resolution.</p>
    <video width=320 controls></video>
    <video controls></video>
    <script src='eme_player_js/app_loader.js' type='text/javascript'></script>
    <script>
      var firstVideoSeek = false;
      var video_fixed_size = document.getElementsByTagName("video")[0];
      var video = document.getElementsByTagName("video")[1];
      var testConfig = new TestConfig();
      testConfig.loadQueryParams();

      function load() {
        loadVideo(video_fixed_size);
        loadVideo(video);
      }

      function loadVideo(video) {
        var videoPlayer = PlayerUtils.createPlayer(video, testConfig);
        videoPlayer.init();
        video.addEventListener('playing', function() {
          // Make sure the video plays for a bit.
          video.addEventListener('timeupdate', function() {
            if (video.currentTime > 1.0) {
              video.pause();
            }
          });
        });

        video.addEventListener('pause', function() {
          video.addEventListener('seeked', function() {
            if (!firstVideoSeek) {
              Utils.timeLog('One video seeked.');
              firstVideoSeek = true;
              return;
            }
            Utils.setResultInTitle('ENDED');
          });
          video.currentTime = 0.5;
        });

        video.addEventListener('canplay', oncanplay);
        video.play();
      }
    </script>
  </body>
</html>
