2011-02-27 17:36:36 -08:00
|
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
2010-09-16 00:51:24 -07:00
|
|
|
|
|
|
|
function test() {
|
|
|
|
waitForExplicitFinish();
|
|
|
|
|
|
|
|
// Show TabView
|
|
|
|
window.addEventListener("tabviewshown", onTabViewWindowLoaded, false);
|
|
|
|
TabView.toggle();
|
|
|
|
}
|
|
|
|
|
|
|
|
function onTabViewWindowLoaded() {
|
|
|
|
window.removeEventListener("tabviewshown", onTabViewWindowLoaded, false);
|
|
|
|
ok(TabView.isVisible(), "Tab View is visible");
|
|
|
|
|
|
|
|
let contentWindow = document.getElementById("tab-view").contentWindow;
|
|
|
|
|
|
|
|
// establish initial state
|
|
|
|
is(contentWindow.GroupItems.groupItems.length, 1, "we start with one group (the default)");
|
|
|
|
is(gBrowser.tabs.length, 1, "we start with one tab");
|
|
|
|
|
|
|
|
let originalTab = gBrowser.tabs[0];
|
|
|
|
ok(contentWindow.GroupItems.groupItems[0]._children[0].tab == originalTab,
|
|
|
|
"the original tab is in the original group");
|
|
|
|
|
|
|
|
// create a second group
|
|
|
|
let box = new contentWindow.Rect(20, 20, 180, 180);
|
|
|
|
let groupItem = new contentWindow.GroupItem([], { bounds: box });
|
|
|
|
is(contentWindow.GroupItems.groupItems.length, 2, "we now have two groups");
|
2011-04-22 13:05:11 -07:00
|
|
|
contentWindow.UI.setActive(groupItem);
|
2010-09-16 00:51:24 -07:00
|
|
|
|
|
|
|
// create a second tab
|
|
|
|
let normalXulTab = gBrowser.loadOneTab("about:blank");
|
|
|
|
is(gBrowser.tabs.length, 2, "we now have two tabs");
|
|
|
|
is(groupItem._children.length, 1, "the new tab was added to the group");
|
|
|
|
|
|
|
|
// create a third tab
|
|
|
|
let appXulTab = gBrowser.loadOneTab("about:blank");
|
|
|
|
is(gBrowser.tabs.length, 3, "we now have three tabs");
|
|
|
|
gBrowser.pinTab(appXulTab);
|
|
|
|
is(groupItem._children.length, 1, "the app tab is not in the group");
|
|
|
|
|
|
|
|
// We now have two groups with one tab each, plus an app tab.
|
|
|
|
// Click into one of the tabs, close it and make sure we don't go back to Tab View.
|
|
|
|
function onTabViewHidden() {
|
|
|
|
window.removeEventListener("tabviewhidden", onTabViewHidden, false);
|
|
|
|
ok(!TabView.isVisible(), "Tab View is hidden because we clicked on the app tab");
|
|
|
|
|
2011-01-27 10:15:18 -08:00
|
|
|
// Remove the tab we're looking at.
|
2010-09-16 00:51:24 -07:00
|
|
|
gBrowser.removeTab(normalXulTab);
|
|
|
|
|
|
|
|
// Make sure we haven't returned to TabView; this is the crux of this test
|
|
|
|
ok(!TabView.isVisible(), "Tab View remains hidden");
|
|
|
|
|
|
|
|
// clean up
|
|
|
|
gBrowser.selectedTab = originalTab;
|
|
|
|
|
|
|
|
gBrowser.unpinTab(appXulTab);
|
|
|
|
gBrowser.removeTab(appXulTab);
|
|
|
|
|
2011-07-03 17:11:40 -07:00
|
|
|
ok(groupItem.closeIfEmpty(), "the second group was empty");
|
2011-01-27 10:15:18 -08:00
|
|
|
|
2011-07-03 17:11:40 -07:00
|
|
|
// Verify ending state
|
|
|
|
is(gBrowser.tabs.length, 1, "we finish with one tab");
|
|
|
|
is(contentWindow.GroupItems.groupItems.length, 1,
|
|
|
|
"we finish with one group");
|
|
|
|
ok(!TabView.isVisible(), "we finish with Tab View hidden");
|
|
|
|
|
|
|
|
finish();
|
2010-09-16 00:51:24 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
window.addEventListener("tabviewhidden", onTabViewHidden, false);
|
2011-01-11 00:20:08 -08:00
|
|
|
EventUtils.sendMouseEvent({ type: "mousedown" }, normalXulTab._tabViewTabItem.container, contentWindow);
|
|
|
|
EventUtils.sendMouseEvent({ type: "mouseup" }, normalXulTab._tabViewTabItem.container, contentWindow);
|
2011-01-27 10:15:18 -08:00
|
|
|
}
|