gecko/browser/base/content/test/tabview/browser_tabview_bug630157.js

85 lines
2.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
let cw;
let createGroupItem = function () {
let bounds = new cw.Rect(20, 20, 400, 200);
let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true});
let groupItemId = groupItem.id;
registerCleanupFunction(function() {
let groupItem = cw.GroupItems.groupItem(groupItemId);
if (groupItem)
groupItem.close();
});
return groupItem;
}
let assertNumberOfGroups = function (num) {
is(cw.GroupItems.groupItems.length, num, 'there should be ' + num + ' groups');
}
let assertNumberOfTabs = function (num) {
is(gBrowser.tabs.length, num, 'there should be ' + num + ' tabs');
}
let simulateDoubleClick = function (target, button) {
for (let i=0; i<2; i++)
EventUtils.synthesizeMouseAtCenter(target, {button: button || 0}, cw);
}
let finishTest = function () {
let tabItem = gBrowser.tabs[0]._tabViewTabItem;
cw.GroupItems.updateActiveGroupItemAndTabBar(tabItem);
gBrowser.removeTab(gBrowser.tabs[1]);
assertNumberOfGroups(1);
assertNumberOfTabs(1);
finish();
}
let testDoubleClick = function () {
let groupItem = createGroupItem();
assertNumberOfGroups(2);
assertNumberOfTabs(1);
// simulate double click on group title
let input = groupItem.$title[0];
simulateDoubleClick(input);
assertNumberOfTabs(1);
// simulate double click on title bar
let titlebar = groupItem.$titlebar[0];
simulateDoubleClick(titlebar);
assertNumberOfTabs(1);
// simulate double click with middle mouse button
let container = groupItem.container;
simulateDoubleClick(container, 1);
assertNumberOfTabs(1);
// simulate double click with right mouse button
simulateDoubleClick(container, 2);
assertNumberOfTabs(1);
// simulate double click with left mouse button
let container = groupItem.container;
simulateDoubleClick(container);
assertNumberOfTabs(2);
whenTabViewIsHidden(finishTest);
}
waitForExplicitFinish();
registerCleanupFunction(function () TabView.hide());
showTabView(function () {
cw = TabView.getContentWindow();
testDoubleClick();
});
}