/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ let tabOne; let tabTwo; function test() { waitForExplicitFinish(); tabOne = gBrowser.addTab("http://mochi.test:8888/"); tabTwo = gBrowser.addTab("http://mochi.test:8888/browser/browser/base/content/test/tabview/dummy_page.html"); afterAllTabsLoaded(function () { // make sure the tab one is selected because undoCloseTab() would remove // the selected tab if it's a blank tab. gBrowser.selectedTab = tabOne; showTabView(onTabViewWindowLoaded); }); } function onTabViewWindowLoaded() { let contentWindow = TabView.getContentWindow(); let groupItems = contentWindow.GroupItems.groupItems; is(groupItems.length, 1, "There is only one group"); is(groupItems[0].getChildren().length, 3, "The group has three tab items"); gBrowser.removeTab(tabTwo); ok(TabView.isVisible(), "Tab View is still visible after removing a tab"); is(groupItems[0].getChildren().length, 2, "The group has two tab items"); tabTwo = undoCloseTab(0); whenTabIsReconnected(tabTwo, function() { ok(TabView.isVisible(), "Tab View is still visible after restoring a tab"); is(groupItems[0].getChildren().length, 3, "The group still has three tab items"); // clean up and finish hideTabView(function () { gBrowser.removeTab(tabOne); gBrowser.removeTab(tabTwo); finish(); }); }); } // ---------- function whenTabIsReconnected(tab, callback) { let tabItem = tab._tabViewTabItem; if (tabItem._reconnected) { callback(); return; } tabItem.addSubscriber(tabItem, "reconnected", function () { tabItem.removeSubscriber(tabItem, "reconnected"); callback(); }); }