summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html
blob: 82b27bf87d8bc3290c05860e4bb897ce50c2c82b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!doctype html>
<title>seek to currentTime</title>
<meta name="timeout" content="long">
<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>