<!doctype html>
<html>
 <head>
  <title>{audio,video}.networkState - NETWORK_LOADING</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/#dom-media-networkstate">spec reference</a></p>
  <audio id="a" autoplay controls>
  </audio>
  <video id="v" autoplay controls>
  </video>
  <div id="log"></div>
  <script>
var ta = async_test("audioElement.networkState should be NETWORK_LOADING during loadstart event", {timeout:5000});
var a = document.getElementById("a");
a.addEventListener("loadstart", function() {
  ta.step(function() {
   assert_equals(a.networkState,
   a.NETWORK_LOADING);
  });
  ta.done();
  a.pause();
}, false);
a.src = getAudioURI("/media/sound_5") + "?" + new Date() + Math.random();

var tv = async_test("videoElement.networkState should be NETWORK_LOADING during loadstart event", {timeout:5000});
var v = document.getElementById("v");
v.addEventListener("loadstart", function() {
  tv.step(function() {
   assert_equals(a.networkState,
   v.NETWORK_LOADING);
  });
  tv.done();
  v.pause();
}, false);
v.src = getVideoURI("/media/movie_5") + "?" + new Date() + Math.random();
  </script>
 </body>
</html>
