michael@0: var runs = [ michael@0: function (win, tabbrowser, tab) { michael@0: is(tabbrowser.browsers.length, 2, "test_bug462673.html has opened a second tab"); michael@0: is(tabbrowser.selectedTab, tab.nextSibling, "dependent tab is selected"); michael@0: tabbrowser.removeTab(tab); michael@0: // Closing a tab will also close its parent chrome window, but async michael@0: executeSoon(function() { michael@0: ok(win.closed, "Window is closed"); michael@0: testComplete(win); michael@0: }); michael@0: }, michael@0: function (win, tabbrowser, tab) { michael@0: var newTab = tabbrowser.addTab(); michael@0: var newBrowser = newTab.linkedBrowser; michael@0: tabbrowser.removeTab(tab); michael@0: ok(!win.closed, "Window stays open"); michael@0: if (!win.closed) { michael@0: is(tabbrowser.tabContainer.childElementCount, 1, "Window has one tab"); michael@0: is(tabbrowser.browsers.length, 1, "Window has one browser"); michael@0: is(tabbrowser.selectedTab, newTab, "Remaining tab is selected"); michael@0: is(tabbrowser.selectedBrowser, newBrowser, "Browser for remaining tab is selected"); michael@0: is(tabbrowser.mTabBox.selectedPanel, newBrowser.parentNode.parentNode.parentNode.parentNode, "Panel for remaining tab is selected"); michael@0: } michael@0: testComplete(win); michael@0: } michael@0: ]; michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: runOneTest(); michael@0: } michael@0: michael@0: function testComplete(win) { michael@0: win.close(); michael@0: if (runs.length) michael@0: runOneTest(); michael@0: else michael@0: finish(); michael@0: } michael@0: michael@0: function runOneTest() { michael@0: var win = openDialog(getBrowserURL(), "_blank", "chrome,all,dialog=no"); michael@0: michael@0: win.addEventListener("load", function () { michael@0: win.removeEventListener("load", arguments.callee, false); michael@0: michael@0: var tab = win.gBrowser.tabContainer.firstChild; michael@0: var browser = tab.linkedBrowser; michael@0: michael@0: browser.addEventListener("load", function () { michael@0: browser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: executeSoon(function () { michael@0: runs.shift()(win, win.gBrowser, tab); michael@0: }); michael@0: }, true); michael@0: michael@0: var rootDir = getRootDirectory(gTestPath); michael@0: browser.contentWindow.location = rootDir + "test_bug462673.html" michael@0: }, false); michael@0: }