summaryrefslogtreecommitdiffstats
path: root/docshell/test/navigation/file_sessionhistory_iframe_removal.html
blob: f18e849942defad77dc09f4d65a8d6560aa5fea2 (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
<html>
  <head>
    <script>
      async function wait() {
        return opener.SpecialPowers.spawnChrome([], function() { /*dummy */ });
      }
      async function run() {
        var counter = 0;
        while(true) {
          // Push new history entries until we hit the limit and start removing
          // entries from the front.
          var len = history.length;
          document.getElementById("ifr1").contentWindow.history.pushState(++counter, null, null);
          await wait();
          if (len == history.length) {
            opener.ok(true, "Found max length " + len);
            document.getElementById("ifr2").contentWindow.history.pushState(++counter, null, null);
            await wait();
            document.getElementById("ifr1").contentWindow.history.pushState(++counter, null, null);
            await wait();
            opener.is(len, history.length, "Adding session history entries in different iframe should behave the same way");
            // This should remove all the history entries for ifr1, leaving just
            // the ones for ifr2.
            document.getElementById("ifr1").remove();
            opener.is(history.length, 2, "Should have entries for the initial load and the pushState for ifr2");
            opener.finishTest();
            break;
          }
        }
      }
    </script>
  </head>
  <body onload="setTimeout(run)">
    <iframe src="blank.html" id="ifr1"></iframe>
    <iframe src="blank.html" id="ifr2"></iframe>
  </body>
</html>