michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function test() { michael@0: let cw; michael@0: let prefix = 'start'; michael@0: michael@0: let createGroupItem = function () { michael@0: let bounds = new cw.Rect(20, 20, 200, 200); michael@0: let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true}); michael@0: michael@0: cw.UI.setActive(groupItem); michael@0: gBrowser.loadOneTab('http://mochi.test:8888/', {inBackground: true}); michael@0: gBrowser.loadOneTab('http://mochi.test:8888/', {inBackground: true}); michael@0: michael@0: let groupItemId = groupItem.id; michael@0: registerCleanupFunction(function() { michael@0: let groupItem = cw.GroupItems.groupItem(groupItemId); michael@0: if (groupItem) michael@0: groupItem.close(); michael@0: }); michael@0: } michael@0: michael@0: let getGroupItem = function (index) { michael@0: return cw.GroupItems.groupItems[index]; michael@0: } michael@0: michael@0: let activateFirstGroupItem = function () { michael@0: let activeTabItem = getGroupItem(0).getChild(0); michael@0: cw.GroupItems.updateActiveGroupItemAndTabBar(activeTabItem); michael@0: } michael@0: michael@0: let assertTabViewIsHidden = function () { michael@0: ok(!TabView.isVisible(), prefix + ': tabview is hidden'); michael@0: } michael@0: michael@0: let assertNumberOfGroups = function (num) { michael@0: is(cw.GroupItems.groupItems.length, num, prefix + ': there are ' + num + ' groups'); michael@0: } michael@0: michael@0: let assertNumberOfTabs = function (num) { michael@0: is(gBrowser.visibleTabs.length, num, prefix + ': there are ' + num + ' tabs'); michael@0: } michael@0: michael@0: let assertNumberOfPinnedTabs = function (num) { michael@0: is(gBrowser._numPinnedTabs, num, prefix + ': there are ' + num + ' pinned tabs'); michael@0: } michael@0: michael@0: let assertNumberOfTabsInGroup = function (groupItem, num) { michael@0: is(groupItem.getChildren().length, num, prefix + ': there are ' + num + ' tabs in the group'); michael@0: } michael@0: michael@0: let assertValidPrerequisites = function () { michael@0: assertNumberOfTabs(1); michael@0: assertNumberOfGroups(1); michael@0: assertNumberOfPinnedTabs(0); michael@0: } michael@0: michael@0: let finishTest = function () { michael@0: prefix = 'finish'; michael@0: assertValidPrerequisites(); michael@0: assertTabViewIsHidden(); michael@0: finish(); michael@0: } michael@0: michael@0: let testRestoreTabFromInactiveGroup = function () { michael@0: prefix = 'restore'; michael@0: activateFirstGroupItem(); michael@0: michael@0: let groupItem = getGroupItem(1); michael@0: let tabItem = groupItem.getChild(0); michael@0: michael@0: EventUtils.synthesizeMouseAtCenter( michael@0: tabItem.$close[0], {}, TabView.getContentWindow()); michael@0: assertNumberOfTabsInGroup(groupItem, 1); michael@0: michael@0: restoreTab(function () { michael@0: assertNumberOfTabsInGroup(groupItem, 2); michael@0: michael@0: activateFirstGroupItem(); michael@0: gBrowser.removeTab(gBrowser.tabs[1]); michael@0: gBrowser.removeTab(gBrowser.tabs[1]); michael@0: hideTabView(finishTest); michael@0: }); michael@0: } michael@0: michael@0: waitForExplicitFinish(); michael@0: assertTabViewIsHidden(); michael@0: registerCleanupFunction(function () TabView.hide()); michael@0: michael@0: showTabView(function () { michael@0: cw = TabView.getContentWindow(); michael@0: assertValidPrerequisites(); michael@0: michael@0: createGroupItem(); michael@0: afterAllTabsLoaded(testRestoreTabFromInactiveGroup); michael@0: }); michael@0: }