Bug 1336763 - Wait for the browser to say it can go back before going back in browser_grouped_shistory_dead_navigate.js test. r?mystor
This test was accidentally taking advantage of the fact that closing a tab will result
in a nested event loop while waiting for the permitUnload messages to be sent back and
forth from the content process. This meant that the message that tells the parent that
the browser (which is having its history set) can now go back had a chance to be received
by the parent.
With the patches in
bug 1336763, we're no longer spinning the event loop if the closing
tab doesn't have a beforeunload event handler in it, so we need to wait for the browser
to report that it can go back before actually sending it back in order to avoid a
test failure.
MozReview-Commit-ID: Lpl55iErrvf
--- a/docshell/test/browser/browser_grouped_shistory_dead_navigate.js
+++ b/docshell/test/browser/browser_grouped_shistory_dead_navigate.js
@@ -23,16 +23,17 @@ add_task(function* () {
isPrerendered: true,
});
yield BrowserTestUtils.browserLoaded(tab2.linkedBrowser);
browser1.frameLoader.appendPartialSHistoryAndSwap(tab2.linkedBrowser.frameLoader);
yield awaitProcessChange(browser1);
// Close tab2 such that the back frameloader is dead
yield BrowserTestUtils.removeTab(tab2);
+ yield BrowserTestUtils.waitForCondition(() => browser1.canGoBack);
browser1.goBack();
yield BrowserTestUtils.browserLoaded(browser1);
yield ContentTask.spawn(browser1, null, function() {
is(content.window.location + "", "data:text/html,a");
let webNav = content.window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation);
is(webNav.canGoForward, true, "canGoForward is correct");
is(webNav.canGoBack, false, "canGoBack is correct");