summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/browsers/history/the-history-interface/005.html
blob: 2152e85a3ecc923c0e6c2da33a2bbd380a574c9e (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
35
36
37
38
39
40
41
42
43
44
45
46
47
<!doctype html>
<html>
  <head>
    <title>Popstate event listener registration</title>
    <script type="text/javascript" src="/resources/testharness.js"></script>
    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
    <script type="text/javascript">

//this test checks that onpopstate works on the body element

var readyForPop = false, bodypop = false, inlinepop = false;
setup({explicit_done:true});

//use a timeout to avoid "popstate fires onload" from setting the variables too early
setTimeout(step1,1000);
function step1() {
  readyForPop = true;
  test(function () {
    history.pushState('','');
    history.pushState('','');
  }, 'history.pushState support is needed for this testcase');
  history.go(-1);
  setTimeout(step2,50); //.go is queued to end of thread
}
function step2() {
  test(function () {
    assert_true( bodypop );
  }, '<body onpopstate="..."> should register a listener for the popstate event');
  window.onpopstate = function () { inlinepop = true; };
  history.go(-1);
  setTimeout(step3,50); //.go is queued to end of thread
}
function step3() {
  test(function () {
    assert_true( inlinepop );
  }, 'window.onpopstate should register a listener for the popstate event');
  done();
}
    </script>
  </head>
  <body onpopstate="if( readyForPop ) { bodypop = true; }">

    <noscript><p>Enable JavaScript and reload</p></noscript>
    <div id="log"></div>

  </body>
</html>