Bug 1355426 - Update browser_hide_removing.js to wait for TabClose instead of TabSelect. r?jaws
browser_hide_removing.js assumes that when a tab is closed, the next tab to be displayed will
fire its TabSelect event _after_ the closed tab has been marked as "closed".
Bug 1355426 makes
it so that the tab selection occurs earlier, so this test has been updated to use the TabClose
event instead.
MozReview-Commit-ID: 17rdlNaotq
--- a/browser/base/content/test/general/browser_hide_removing.js
+++ b/browser/base/content/test/general/browser_hide_removing.js
@@ -1,37 +1,29 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Bug 587922: tabs don't get removed if they're hidden
-function test() {
- waitForExplicitFinish();
-
+add_task(async function() {
// Add a tab that will get removed and hidden
- let testTab = BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true});
+ let testTab = BrowserTestUtils.addTab(gBrowser, "about:blank", { skipAnimation: true });
is(gBrowser.visibleTabs.length, 2, "just added a tab, so 2 tabs");
- gBrowser.selectedTab = testTab;
+ await BrowserTestUtils.switchTab(gBrowser, testTab);
let numVisBeforeHide, numVisAfterHide;
- gBrowser.tabContainer.addEventListener("TabSelect", function() {
- // While the next tab is being selected, hide the removing tab
- numVisBeforeHide = gBrowser.visibleTabs.length;
- gBrowser.hideTab(testTab);
- numVisAfterHide = gBrowser.visibleTabs.length;
- }, {once: true});
- gBrowser.removeTab(testTab, {animate: true});
+
+ // We have to animate the tab removal in order to get an async
+ // tab close.
+ let tabClosed = BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "TabClose");
+ let tabRemoved = BrowserTestUtils.removeTab(testTab, { animate: true });
+ await tabClosed;
- // Make sure the tab gets removed at the end of the animation by polling
- (function checkRemoved() {
- return setTimeout(function() {
- if (gBrowser.tabs.length != 1) {
- checkRemoved();
- return;
- }
+ numVisBeforeHide = gBrowser.visibleTabs.length;
+ gBrowser.hideTab(testTab);
+ numVisAfterHide = gBrowser.visibleTabs.length;
- is(numVisBeforeHide, 1, "animated remove has in 1 tab left");
- is(numVisAfterHide, 1, "hiding a removing tab is also has 1 tab");
- finish();
- }, 50);
- })();
-}
+ is(numVisBeforeHide, 1, "animated remove has in 1 tab left");
+ is(numVisAfterHide, 1, "hiding a removing tab also has 1 tab");
+
+ await tabRemoved;
+});