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

79 lines
2.8 KiB
JavaScript
Raw Normal View History

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
newWindowWithTabView(function (win) {
registerCleanupFunction(function () win.close());
waitForFocus(function () testScenarios(win));
});
}
function testScenarios(win) {
let simulateDragDrop = function (target) {
EventUtils.synthesizeMouseAtCenter(target, {type: "mousedown"}, cw);
EventUtils.synthesizeMouse(target, 40, 20, {type: "mousemove"}, cw);
EventUtils.synthesizeMouse(target, 80, 20, {type: "mouseup"}, cw);
}
let dragOutOfGroup = function (target) {
EventUtils.synthesizeMouseAtCenter(target, {type: "mousedown"}, cw);
EventUtils.synthesizeMouse(target, 600, 5, {type: "mousemove"}, cw);
EventUtils.synthesizeMouse(target, 600, 5, {type: "mouseup"}, cw);
}
let dragIntoGroup = function (target) {
EventUtils.synthesizeMouseAtCenter(target, {type: "mousedown"}, cw);
EventUtils.synthesizeMouse(target, -200, 5, {type: "mousemove"}, cw);
EventUtils.synthesizeMouse(target, -200, 5, {type: "mouseup"}, cw);
}
let assertActiveOrphan = function (tabItem) {
ok(!cw.GroupItems.getActiveGroupItem(), "no groupItem is active");
is(cw.UI.getActiveTab(), tabItem, "orphan tab is active");
is(cw.UI.getActiveOrphanTab(), tabItem, "orphan tab is active");
}
let cw = win.TabView.getContentWindow();
let groupItem = cw.GroupItems.groupItems[0];
let groupItem2 = createGroupItemWithBlankTabs(win, 400, 300, 20, 4);
// move group
cw.UI.setActive(groupItem);
simulateDragDrop(groupItem2.container);
is(cw.GroupItems.getActiveGroupItem(), groupItem2, "second groupItem is active");
is(cw.UI.getActiveTab(), groupItem2.getChild(0), "second groupItem's first tab is active");
// resize group
cw.UI.setActive(groupItem);
let tabItem = groupItem2.getChild(2);
groupItem2.setActiveTab(tabItem);
simulateDragDrop(groupItem2.$resizer[0]);
is(cw.GroupItems.getActiveGroupItem(), groupItem2, "second groupItem is active");
is(cw.UI.getActiveTab(), tabItem, "second groupItem's third tab is active");
// drag tab out of group
tabItem = groupItem2.getChild(0);
dragOutOfGroup(tabItem.container);
is(cw.UI.getActiveTab(), tabItem, "the dragged tab is active");
// drag back into group
dragIntoGroup(tabItem.container);
cw.UI.setActive(groupItem);
cw.UI.setActive(groupItem2);
is(cw.UI.getActiveTab(), tabItem, "the dropped tab is active");
// hide + unhide groupItem
hideGroupItem(groupItem2, function () {
is(cw.GroupItems.getActiveGroupItem(), groupItem, "first groupItem is active");
unhideGroupItem(groupItem2, function () {
is(cw.GroupItems.getActiveGroupItem(), groupItem2, "second groupItem is active");
is(cw.UI.getActiveTab(), tabItem, "the dropped tab is active");
finish();
});
});
}