<!doctype html>
<html>
 <head>
  <title>video events - progress</title>
  <script src="../../w3cwrapper.js"></script>
 </head>
 <body>
  <p><a href="http://dev.w3.org/html5/spec/Overview.html#mediaevents">spec reference</a></p>
  <video id="v" autoplay controls>
  </video>
  <div id="log"></div>
  <script>
var t = async_test("setting src attribute on autoplay video should trigger progress event", {timeout:30000});
var v = document.getElementById("v");

var firstProgressEvent = true;
v.addEventListener("progress", function() {
  if (!firstProgressEvent) return;
  firstProgressEvent = false;

  t.step(function() {
   assert_true(true);
  });
  t.done();
  v.pause();
});
v.src = getVideoURI();
  </script>
 </body>
</html>
