<!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" controls>
  </video>
  <div id="log"></div>
  <script>
var t = async_test("setting src attribute on non-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.src = getVideoURI();
  </script>
 </body>
</html>
