gecko/browser/base/content/test/tabview/browser_tabview_bug597980.js
2011-08-15 19:48:43 +02:00

86 lines
2.9 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
newWindowWithTabView(part1);
}
function part1(win) {
registerCleanupFunction(function() win.close());
let contentWindow = win.document.getElementById("tab-view").contentWindow;
is(contentWindow.GroupItems.groupItems.length, 1, "Has only one group");
let originalTab = win.gBrowser.selectedTab;
let originalGroup = contentWindow.GroupItems.groupItems[0];
let newTab = win.gBrowser.loadOneTab("about:blank", {inBackground: true});
is(originalGroup.getChildren().length, 2, "The original group now has two tabs");
// create group two with the new tab
let box = new contentWindow.Rect(300,300,150,150);
let newGroup = new contentWindow.GroupItem([], {bounds: box, immediately: true});
newGroup.add(newTab._tabViewTabItem, {immediately: true});
// ensure active group item and tab
contentWindow.UI.setActive(originalGroup);
is(contentWindow.GroupItems.getActiveGroupItem(), originalGroup,
"The original group is active");
is(contentWindow.UI.getActiveTab(), originalTab._tabViewTabItem,
"The original tab is active");
function checkActive(callback, time) {
is(contentWindow.GroupItems.getActiveGroupItem(), newGroup,
"The new group is active");
is(contentWindow.UI.getActiveTab(), newTab._tabViewTabItem,
"The new tab is active");
if (time)
setTimeout(callback, time);
else
callback();
}
// click on the new tab, and check that the new tab and group are active
// at two times: 10 ms after (still during the animation) and
// 500 ms after (after the animation, hopefully). Either way, the new
// tab and group should be active.
EventUtils.sendMouseEvent({ type: "mousedown" },
newTab._tabViewTabItem.container, contentWindow);
EventUtils.sendMouseEvent({ type: "mouseup" },
newTab._tabViewTabItem.container, contentWindow);
setTimeout(function() {
checkActive(function() {
checkActive(function() {
win.close();
newWindowWithTabView(part2);
});
}, 490);
}, 10)
}
function part2(win) {
registerCleanupFunction(function() win.close());
let newTab = win.gBrowser.loadOneTab("about:blank", {inBackground: true});
hideTabView(function() {
let selectedTab = win.gBrowser.selectedTab;
isnot(selectedTab, newTab, "They are different tabs");
// switch the selected tab to new tab
win.gBrowser.selectedTab = newTab;
whenTabViewIsHidden(function () {
is(win.gBrowser.selectedTab, newTab, "The seleted tab should be the same as before (new tab)");
win.close();
finish();
});
// show tabview
EventUtils.synthesizeKey("e", { accelKey: true, shiftKey: true }, win);
// hide tabview
EventUtils.synthesizeKey("e", { accelKey: true, shiftKey: true }, win);
})
}