mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
122 lines
4.5 KiB
JavaScript
122 lines
4.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
newWindowWithTabView(part1);
|
|
}
|
|
|
|
// PART 1:
|
|
// 1. Create a new tab (called newTab)
|
|
// 2. Orphan it. Activate this orphan tab.
|
|
// 3. Zoom into it.
|
|
function part1(win) {
|
|
ok(win.TabView.isVisible(), "Tab View is visible");
|
|
|
|
let contentWindow = win.document.getElementById("tab-view").contentWindow;
|
|
is(win.gBrowser.tabs.length, 1, "In the beginning, there was one tab.");
|
|
let [originalTab] = win.gBrowser.visibleTabs;
|
|
let originalGroup = contentWindow.GroupItems.getActiveGroupItem();
|
|
ok(originalGroup.getChildren().some(function(child) {
|
|
return child == originalTab._tabViewTabItem;
|
|
}),"The current active group is the one with the original tab in it.");
|
|
|
|
// Create a new tab and orphan it
|
|
let newTab = win.gBrowser.loadOneTab("about:mozilla", {inBackground: true});
|
|
|
|
let newTabItem = newTab._tabViewTabItem;
|
|
ok(originalGroup.getChildren().some(function(child) child == newTabItem),"The new tab was made in the current group");
|
|
contentWindow.GroupItems.getActiveGroupItem().remove(newTabItem);
|
|
ok(!originalGroup.getChildren().some(function(child) child == newTabItem),"The new tab was orphaned");
|
|
newTabItem.pushAway();
|
|
// activate this tab item
|
|
contentWindow.UI.setActive(newTabItem);
|
|
|
|
// PART 2: close this orphan tab (newTab)
|
|
let part2 = function part2() {
|
|
win.removeEventListener("tabviewhidden", part2, false);
|
|
|
|
is(win.gBrowser.selectedTab, newTab, "We zoomed into that new tab.");
|
|
ok(!win.TabView.isVisible(), "Tab View is hidden, because we're looking at the new tab");
|
|
|
|
newTab.addEventListener("TabClose", function() {
|
|
newTab.removeEventListener("TabClose", arguments.callee, false);
|
|
|
|
win.addEventListener("tabviewshown", part3, false);
|
|
executeSoon(function() { win.TabView.toggle(); });
|
|
}, false);
|
|
win.gBrowser.removeTab(newTab);
|
|
}
|
|
|
|
let secondNewTab;
|
|
// PART 3: now back in Panorama, open a new tab via the "new tab" menu item (or equivalent)
|
|
// We call this secondNewTab.
|
|
let part3 = function part3() {
|
|
win.removeEventListener("tabviewshown", part3, false);
|
|
|
|
ok(win.TabView.isVisible(), "Tab View is visible.");
|
|
|
|
is(win.gBrowser.tabs.length, 1, "Only one tab again.");
|
|
is(win.gBrowser.tabs[0], originalTab, "That one tab is the original tab.");
|
|
|
|
let groupItems = contentWindow.GroupItems.groupItems;
|
|
is(groupItems.length, 1, "Only one group");
|
|
|
|
ok(!contentWindow.UI.getActiveOrphanTab(), "There is no active orphan tab.");
|
|
ok(win.TabView.isVisible(), "Tab View is visible.");
|
|
|
|
win.gBrowser.tabContainer.addEventListener("TabSelect", function() {
|
|
win.gBrowser.tabContainer.removeEventListener("TabSelect", arguments.callee, false);
|
|
executeSoon(part4);
|
|
}, false);
|
|
win.document.getElementById("cmd_newNavigatorTab").doCommand();
|
|
}
|
|
|
|
// PART 4: verify it opened in the original group, and go back into Panorama
|
|
let part4 = function part4() {
|
|
ok(!win.TabView.isVisible(), "Tab View is hidden");
|
|
|
|
is(win.gBrowser.tabs.length, 2, "There are two tabs total now.");
|
|
is(win.gBrowser.visibleTabs.length, 2, "We're looking at both of them.");
|
|
|
|
let foundOriginalTab = false;
|
|
// we can't use forEach because win.gBrowser.tabs is only array-like.
|
|
for (let i = 0; i < win.gBrowser.tabs.length; i++) {
|
|
let tab = win.gBrowser.tabs[i];
|
|
if (tab === originalTab)
|
|
foundOriginalTab = true;
|
|
else
|
|
secondNewTab = tab;
|
|
}
|
|
ok(foundOriginalTab, "One of those tabs is the original tab.");
|
|
ok(secondNewTab, "We found another tab... this is secondNewTab");
|
|
|
|
is(win.gBrowser.selectedTab, secondNewTab, "This second new tab is what we're looking at.");
|
|
|
|
win.addEventListener("tabviewshown", part5, false);
|
|
win.TabView.toggle();
|
|
}
|
|
|
|
// PART 5: make sure we only have one group with both tabs now, and finish.
|
|
let part5 = function part5() {
|
|
win.removeEventListener("tabviewshown", part5, false);
|
|
|
|
is(win.gBrowser.tabs.length, 2, "There are of course still two tabs.");
|
|
|
|
let groupItems = contentWindow.GroupItems.groupItems;
|
|
is(groupItems.length, 1, "There is one group now");
|
|
is(groupItems[0], originalGroup, "It's the original group.");
|
|
is(originalGroup.getChildren().length, 2, "It has two children.");
|
|
|
|
// finish!
|
|
win.close();
|
|
finish();
|
|
}
|
|
|
|
// Okay, all set up now. Let's get this party started!
|
|
afterAllTabItemsUpdated(function() {
|
|
win.addEventListener("tabviewhidden", part2, false);
|
|
win.TabView.toggle();
|
|
}, win);
|
|
}
|