gecko/browser/components/tabview/test/browser_tabview_bug637840.js

93 lines
3.8 KiB
JavaScript
Raw Normal View History

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let cw;
function test() {
waitForExplicitFinish();
newWindowWithTabView(function(win) {
registerCleanupFunction(function() {
win.close();
});
cw = win.TabView.getContentWindow();
let groupItemOne = cw.GroupItems.groupItems[0];
is(groupItemOne.getChildren().length, 1, "Group one has 1 tab item");
let groupItemTwo = createGroupItemWithBlankTabs(win, 300, 300, 40, 2);
is(groupItemTwo.getChildren().length, 2, "Group two has 2 tab items");
let groupItemThree = createGroupItemWithBlankTabs(win, 300, 300, 40, 2);
is(groupItemThree.getChildren().length, 2, "Group three has 2 tab items");
testMoreRecentlyUsedGroup(groupItemOne, groupItemTwo, function() {
testMoreRecentlyUsedGroup(groupItemOne, groupItemThree, function() {
testRemoveGroupAndCheckMoreRecentlyUsedGroup(groupItemOne, groupItemTwo);
});
});
});
}
function testMoreRecentlyUsedGroup(groupItemOne, otherGroupItem, callback) {
let tabItem = otherGroupItem.getChild(1);
cw.UI.setActive(tabItem);
is(otherGroupItem.getActiveTab(), tabItem, "The second item in the other group is active");
is(cw.GroupItems.getActiveGroupItem(), otherGroupItem, "The other group is active");
let tabItemInGroupItemOne = groupItemOne.getChild(0);
cw.UI.setActive(tabItemInGroupItemOne);
is(groupItemOne.getActiveTab(), tabItemInGroupItemOne, "The first item in group one is active");
is(cw.GroupItems.getActiveGroupItem(), groupItemOne, "The group one is active");
groupItemOne.addSubscriber("groupHidden", function onHide() {
groupItemOne.removeSubscriber("groupHidden", onHide);
// group item three should have the focus
is(otherGroupItem.getActiveTab(), tabItem, "The second item in the other group is active after group one is hidden");
is(cw.GroupItems.getActiveGroupItem(), otherGroupItem, "The other group is active active after group one is hidden");
groupItemOne.addSubscriber("groupShown", function onShown() {
groupItemOne.removeSubscriber("groupShown", onShown);
is(groupItemOne.getActiveTab(), tabItemInGroupItemOne, "The first item in group one is active after it is shown");
is(cw.GroupItems.getActiveGroupItem(), groupItemOne, "The group one is active after it is shown");
callback();
});
// click on the undo button
EventUtils.sendMouseEvent(
{ type: "click" }, groupItemOne.$undoContainer[0], cw);
});
// click on the close button of group item one
let closeButton = groupItemOne.container.getElementsByClassName("close");
ok(closeButton[0], "Group item one close button exists");
EventUtils.sendMouseEvent({ type: "click" }, closeButton[0], cw);
}
function testRemoveGroupAndCheckMoreRecentlyUsedGroup(groupItemOne, groupItemTwo) {
let tabItem = groupItemTwo.getChild(0);
cw.UI.setActive(tabItem);
is(groupItemTwo.getActiveTab(), tabItem, "The first item in the group two is active");
is(cw.GroupItems.getActiveGroupItem(), groupItemTwo, "The group two is active");
let tabItemInGroupItemOne = groupItemOne.getChild(0);
tabItemInGroupItemOne.addSubscriber("close", function onClose() {
tabItemInGroupItemOne.removeSubscriber("close", onClose);
is(groupItemTwo.getActiveTab(), tabItem, "The first item in the group two is still active after group one is closed");
is(cw.GroupItems.getActiveGroupItem(), groupItemTwo, "The group two is still active after group one is closed");
finish();
});
// close the tab item and the group item
let closeButton = tabItemInGroupItemOne.container.getElementsByClassName("close");
ok(closeButton[0], "Tab item close button exists");
EventUtils.sendMouseEvent({ type: "mousedown" }, closeButton[0], cw);
EventUtils.sendMouseEvent({ type: "mouseup" }, closeButton[0], cw);
}