<!doctype html>
<html>
 <head>
  <title>{audio,video} events - readyState property during canplay</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
  <script src="/common/media.js"></script>
 </head>
 <body>
  <p><a href="https://html.spec.whatwg.org/multipage/#mediaevents">spec reference</a></p>
  <audio id="a" autoplay controls>
  </audio>
  <video id="v" autoplay controls>
  </video>
  <div id="log"></div>
  <script>
test(function() {
  var t = async_test("audio.readyState should be >= HAVE_FUTURE_DATA during canplay event", {timeout:5000});
  var a = document.getElementById("a");
  a.addEventListener("canplay", function() {
    t.step(function() {
     assert_greater_than_equal(a.readyState, a.HAVE_FUTURE_DATA);
    });
    t.done();
    a.pause();
  }, false);
  a.src = getAudioURI("/media/sound_5") + "?" + new Date() + Math.random();
}, "audio events - readyState property during canplay");

test(function() {
  var t = async_test("video.readyState should be >= HAVE_FUTURE_DATA during canplay event", {timeout:5000});
  var v = document.getElementById("v");
  v.addEventListener("canplay", function() {
    t.step(function() {
     assert_greater_than_equal(v.readyState, v.HAVE_FUTURE_DATA);
    });
    t.done();
    v.pause();
  }, false);
  v.src = getVideoURI("/media/movie_5") + "?" + new Date() + Math.random();
}, "video events - readyState property during canplay");
  </script>
 </body>
</html>
