File: test_bug607529.html

package info (click to toggle)
firefox 141.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,550,616 kB
  • sloc: cpp: 7,426,508; javascript: 6,367,238; ansic: 3,707,354; python: 1,368,984; xml: 623,983; asm: 426,916; java: 184,324; sh: 64,488; makefile: 19,203; objc: 13,059; perl: 12,955; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,071; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (102 lines) | stat: -rw-r--r-- 3,327 bytes parent folder | download | duplicates (3)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=607529
-->
<head>
  <title>Test for Bug 607529</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=607529">Mozilla Bug 607529</a>
<p id="display"></p>
<div id="content" style="display: none">

</div>
<pre id="test">
<script type="application/javascript">
  SimpleTest.waitForExplicitFinish();

  /* General idea: Open a new window (needed because we don't bfcache
     subframes) that uses requestAnimationFrame, navigate it, navigate it
     back, and verify that the animations are still running.  */

  function executeTest() {
    /** Test for Bug 607529 **/
    var doneOneLoad = false;
    var done = false;
    var bc = SpecialPowers.wrap(BroadcastChannel).unpartitionedTestingChannel("bug607529");
    var bc_1 = SpecialPowers.wrap(BroadcastChannel).unpartitionedTestingChannel("bug607529_1");
    bc.onmessage = (msgEvent) => {
      var msg = msgEvent.data;
      isnot(msg, "notcached", "Should never end up not being cached");
      if (msg == "loaded") {
        if (!doneOneLoad) {
          doneOneLoad = true;
          bc.postMessage("navigateToPage");
        } else {
          // This is unexpected, but it can happen on Android, probably when
          // bfcache gets purged due to memory pressure. Hence, "soft fail" there.
          var message = "onload handler shouldn't fire on restore from bfcache";
          if (navigator.appVersion.includes("Android")) {
            todo(false, message);
          } else {
            ok(false, message);
          }
          // In any case, more messages aren't coming, so finish up.
          closeWindowAndFinish();
        }
      }
      else if (msg == "revived") {
        bc.postMessage("report");
      }
      else if (msg == "callbackHappened") {
        // We might get this message more than once, if the other page queues up
        // more than one callbackHappened message before we manage to close it.
        // Protect against calling SimpleTest.finish() more than once.
        if (!done) {
          closeWindowAndFinish();
          done = true;
        }
      } else if (msg == "closed") {
        bc.close();
        bc_1.close();
        SimpleTest.finish();
      } else {
        try {
          var jsonMsg = JSON.parse(msg);
        } catch (ex) {
          // In case JSON.parse throws, we pause to print the string that it
          // choked on, and then resume throwing the exception.
          ok(false, "JSON.parse threw, when passed string '" + jsonMsg + "'");
          throw ex;
        }
        if (jsonMsg.error) {
          window.onerror(jsonMsg.msg, jsonMsg.url, jsonMsg.line);
        }
      }
    }
    bc_1.onmessage = (msgEvent) => {
      if (msgEvent.data == "goback") {
        bc_1.postMessage("navigateBack");
      }
    }
    function closeWindowAndFinish() {
      bc.postMessage("close");
    }

    // If Fission is disabled, the pref is no-op.
    SpecialPowers.pushPrefEnv({set: [["fission.bfcacheInParent", true]]}, () => {
      window.open("file_bug607529.html", "", "noopener");
    });
  }


  executeTest();


</script>
</pre>
</body>
</html>