<!doctype html>
<title>seek to currentTime</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<div id=log></div>
<script>
async_test(function(t) {
  var v = document.createElement('video');
  v.src = getVideoURI('/media/movie_5');
  v.onloadedmetadata = t.step_func(function() {
    assert_greater_than(v.readyState, v.HAVE_NOTHING, 'readyState');
    assert_greater_than(v.seekable.length, 0, 'seekable ranges');
    assert_false(v.seeking, 'seeking before setting currentTime');
    v.currentTime = v.currentTime;
    assert_true(v.seeking, 'seeking after setting currentTime');
    var events = [];
    v.onseeking = v.ontimeupdate = v.onseeked = t.step_func(function(e) {
      events.push(e.type);
      // v.seeking can be true or false in the seeking event, see
      // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24774
      if (e.type != 'seeking') {
        assert_equals(v.seeking, false, 'seeking in ' + e.type + ' event');
      }
      if (e.type == 'seeked') {
        assert_array_equals(events, ['seeking', 'timeupdate', 'seeked'],
                            'fired events');
        t.done();
      }
    });
  });
});
</script>
