summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_unloaddialogs.js
blob: bf3790b958f1e4e5f2495554e3024ba2c1ae39d8 (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
var testUrls =
  [
    "data:text/html,<script>" +
      "function handle(evt) {" +
        "evt.target.removeEventListener(evt.type, handle, true);" +
        "try { alert('This should NOT appear'); } catch(e) { }" +
      "}" +
      "window.addEventListener('pagehide', handle, true);" +
      "window.addEventListener('beforeunload', handle, true);" +
      "window.addEventListener('unload', handle, true);" +
      "</script><body>Testing alert during pagehide/beforeunload/unload</body>",
    "data:text/html,<script>" +
      "function handle(evt) {" +
        "evt.target.removeEventListener(evt.type, handle, true);" +
        "try { prompt('This should NOT appear'); } catch(e) { }" +
      "}" +
      "window.addEventListener('pagehide', handle, true);" +
      "window.addEventListener('beforeunload', handle, true);" +
      "window.addEventListener('unload', handle, true);" +
      "</script><body>Testing prompt during pagehide/beforeunload/unload</body>",
    "data:text/html,<script>" +
      "function handle(evt) {" +
        "evt.target.removeEventListener(evt.type, handle, true);" +
        "try { confirm('This should NOT appear'); } catch(e) { }" +
      "}" +
      "window.addEventListener('pagehide', handle, true);" +
      "window.addEventListener('beforeunload', handle, true);" +
      "window.addEventListener('unload', handle, true);" +
      "</script><body>Testing confirm during pagehide/beforeunload/unload</body>",
  ];

add_task(function*() {
  for (let url of testUrls) {
    let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, url);
    ok(true, "Loaded page " + url);
    // Wait one turn of the event loop before closing, so everything settles.
    yield new Promise(resolve => setTimeout(resolve, 0));
    yield BrowserTestUtils.removeTab(tab);
    ok(true, "Closed page " + url + " without timeout");
  }
});