Bug 1100700 - fix browser_unloaddialogs.js so it runs in e10s mode, r?mconley draft
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Mon, 29 Feb 2016 19:02:57 +0000
changeset 336983 c957a18604023ee36c77874b3c4d68b3880982ee
parent 336930 129e9b9ce25be48c2544406be1d0e9e9ff33b51b
child 515548 bdde688342f672ecf1e0f4177491666a70a09bcc
push id12235
push usergijskruitbosch@gmail.com
push dateFri, 04 Mar 2016 18:00:50 +0000
reviewersmconley
bugs1100700
milestone47.0a1
Bug 1100700 - fix browser_unloaddialogs.js so it runs in e10s mode, r?mconley MozReview-Commit-ID: DcxegzCXCN4
browser/base/content/test/general/browser.ini
browser/base/content/test/general/browser_unloaddialogs.js
--- 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);
-}
+});