summaryrefslogtreecommitdiffstats
path: root/docshell/test/navigation/file_ship_beforeunload_fired.html
blob: a1f416f959a1e002fa9cf89a22a00b80c7d6ce21 (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>
  <script>
    onpageshow = function(pageShowEvent) {
      var bc = new BroadcastChannel("ship_beforeunload");
      bc.onmessage = function(event) {
        if (event.data.action == "register_beforeunload") {
          onbeforeunload = function() {
            bc.postMessage("beforeunload_fired");
            bc.close();
          }
          if (event.data.loadNextPageFromSessionHistory) {
            history.back();
          } else {
            location.href += "?differentpage";
          }
        } else if (event.data.action == "navigate_to_page_b") {
          bc.close();
          if (event.data.blockBFCache) {
            window.blockBFCache = new RTCPeerConnection();
          }
          location.href += "?pageb";
        } else if (event.data.action == "back_to_page_b") {
          if (event.data.forwardNavigateToPageB) {
            history.forward();
          } else {
            history.back();
          }
          bc.close();
        } else if (event.data.action == "close") {
          bc.close();
          window.close();
        }
      }
      bc.postMessage({type: pageShowEvent.type, persisted: pageShowEvent.persisted});
    }
  </script>
</html>