<!doctype html>
<html>
 <head>
  <title>{audio,video} events - readyState property during loadedmetadata</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_METADATA during loadedmetadata event");
  var a = document.getElementById("a");
  a.addEventListener("error", t.unreached_func());
  a.addEventListener("loadedmetadata", t.step_func(function() {
    assert_greater_than_equal(a.readyState, a.HAVE_METADATA);
    t.done();
    a.pause();
  }), false);
  a.src = getAudioURI("/media/sound_5") + "?" + new Date() + Math.random();
}, "audio events - readyState property during loadedmetadata");

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