Bug 1100700 - fix browser_unloaddialogs.js so it runs in e10s mode, r?mconley
MozReview-Commit-ID: DcxegzCXCN4
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -470,17 +470,16 @@ support-files =
[browser_trackingUI_telemetry.js]
tags = trackingprotection
support-files =
trackingPage.html
[browser_typeAheadFind.js]
skip-if = buildapp == 'mulet'
[browser_unknownContentType_title.js]
[browser_unloaddialogs.js]
-skip-if = e10s # Bug 1100700 - test relies on unload event firing on closed tabs, which it doesn't
[browser_urlHighlight.js]
[browser_urlbarAutoFillTrimURLs.js]
[browser_urlbarCopying.js]
[browser_urlbarDecode.js]
[browser_urlbarDelete.js]
[browser_urlbarEnter.js]
[browser_urlbarEnterAfterMouseOver.js]
skip-if = os == "linux" # Bug 1073339 - Investigate autocomplete test unreliability on Linux/e10s
--- a/browser/base/content/test/general/browser_unloaddialogs.js
+++ b/browser/base/content/test/general/browser_unloaddialogs.js
@@ -23,51 +23,19 @@ var testUrls =
"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>",
];
-var testsDone = 0;
-function test()
-{
- waitForExplicitFinish();
- runTest();
-}
-
-function runTest()
-{
- whenNewTabLoaded(window, function() {
- gBrowser.selectedBrowser.addEventListener("load", onLoad, true);
- executeSoon(function() {
- info("Loading page with pagehide, beforeunload, and unload handlers that attempt to create dialogs");
- gBrowser.selectedBrowser.loadURI(testUrls[testsDone]);
- });
- });
-}
-
-function onLoad(event)
-{
- info("Page loaded");
-
- event.target.removeEventListener("load", onLoad, true);
- gBrowser.selectedBrowser.addEventListener("unload", done, true);
-
- executeSoon(function () {
- info("Closing page");
- gBrowser.removeCurrentTab();
- });
-}
-
-function done() {
- ok(true, "Page closed (hopefully) without timeout");
-
- testsDone++;
- if (testsDone == testUrls.length) {
- finish();
- return;
+add_task(function*() {
+ for (let url of testUrls) {
+ let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, url);
+ ok(true, "Loaded page " + url);
+ // beat:
+ yield new Promise(resolve => setTimeout(resolve, 0));
+ yield BrowserTestUtils.removeTab(tab);
+ ok(true, "Closed page " + url + " without timeout");
}
-
- executeSoon(runTest);
-}
+});