mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
140 lines
4.5 KiB
JavaScript
140 lines
4.5 KiB
JavaScript
let gTests = [];
|
|
let gCurrentTest = null;
|
|
let Panels = [AllPagesList, HistoryList, BookmarkList];
|
|
|
|
let removedForTestButtons = [];
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
|
|
// Make sure we start the test with less than a full menu
|
|
let menu = document.getElementById("appmenu");
|
|
while (menu.children.length > 5)
|
|
removedForTestButtons.push(menu.removeChild(menu.lastChild));
|
|
|
|
setTimeout(runNextTest, 200);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Iterating tests by shifting test out one by one as runNextTest is called.
|
|
function runNextTest() {
|
|
// Run the next test until all tests completed
|
|
if (gTests.length > 0) {
|
|
gCurrentTest = gTests.shift();
|
|
info(gCurrentTest.desc);
|
|
gCurrentTest.run();
|
|
} else {
|
|
// Add back any removed buttons
|
|
let menu = document.getElementById("appmenu");
|
|
removedForTestButtons.forEach(function(aButton) {
|
|
menu.appendChild(aButton);
|
|
});
|
|
|
|
// Close the awesome panel just in case
|
|
BrowserUI.activePanel = null;
|
|
finish();
|
|
}
|
|
}
|
|
|
|
gTests.push({
|
|
// This test will keep adding buttons and checking the result until there are a
|
|
// total of 9 buttons, then it will (one at a time) hide 3 items and check the
|
|
// result again.
|
|
|
|
desc: "Test for showing the application menu",
|
|
newButtons: [],
|
|
hidden: 0,
|
|
|
|
run: function() {
|
|
addEventListener("PopupChanged", gCurrentTest.popupOpened, false)
|
|
CommandUpdater.doCommand("cmd_menu");
|
|
},
|
|
|
|
addButton: function() {
|
|
info("Adding a new button\n");
|
|
let menu = document.getElementById("appmenu");
|
|
let newButton = menu.children[0].cloneNode(true);
|
|
menu.appendChild(newButton);
|
|
gCurrentTest.newButtons.push(newButton);
|
|
},
|
|
|
|
popupOpened: function() {
|
|
removeEventListener("PopupChanged", gCurrentTest.popupOpened, false);
|
|
let menu = document.getElementById("appmenu");
|
|
ok(!menu.hidden, "App menu is shown");
|
|
|
|
let more = document.getElementById("appmenu-more-button");
|
|
if (menu.children.length > 6) {
|
|
ok(!!more, "More button is shown");
|
|
addEventListener("PopupChanged", gCurrentTest.moreShown, false);
|
|
more.click();
|
|
} else {
|
|
ok(!more, "More button is hidden");
|
|
addEventListener("PopupChanged", gCurrentTest.popupClosed, false);
|
|
EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
|
|
}
|
|
},
|
|
|
|
popupClosed: function() {
|
|
removeEventListener("PopupChanged", gCurrentTest.popupClosed, false);
|
|
let menu = document.getElementById("appmenu");
|
|
ok(document.getElementById("appmenu").hidden, "Esc hides menus");
|
|
if (menu.children.length < 9) {
|
|
gCurrentTest.addButton();
|
|
gCurrentTest.run();
|
|
} else {
|
|
menu.children[gCurrentTest.hidden].hidden = true;
|
|
gCurrentTest.hidden++;
|
|
addEventListener("PopupChanged", gCurrentTest.menuitemHidden, false)
|
|
CommandUpdater.doCommand("cmd_menu");
|
|
}
|
|
},
|
|
|
|
moreShown: function(aEvent) {
|
|
// AppMenu hiding
|
|
if (!aEvent.detail)
|
|
return;
|
|
|
|
let menu = document.getElementById("appmenu");
|
|
ok(document.getElementById("appmenu").hidden, "Clicking more button hides menu");
|
|
|
|
removeEventListener("PopupChanged", gCurrentTest.moreShown, false);
|
|
let listbox = document.getElementById("appmenu-overflow-commands");
|
|
is(listbox.childNodes.length, (menu.childNodes.length - 5), "Menu popup only shows overflow children");
|
|
|
|
addEventListener("PopupChanged", gCurrentTest.popupClosed, false);
|
|
EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
|
|
},
|
|
|
|
menuitemHidden: function() {
|
|
removeEventListener("PopupChanged", gCurrentTest.menuitemHidden, false);
|
|
let menu = document.getElementById("appmenu");
|
|
ok(!document.getElementById("appmenu").hidden, "App menu is shown");
|
|
|
|
let more = document.getElementById("appmenu-more-button");
|
|
if (menu.children.length - gCurrentTest.hidden > 6) {
|
|
ok(more, "More button is shown");
|
|
addEventListener("PopupChanged", gCurrentTest.popupClosed, false);
|
|
} else {
|
|
ok(!more, "More button is hidden");
|
|
addEventListener("PopupChanged", gCurrentTest.popupClosedAgain, false);
|
|
}
|
|
EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
|
|
},
|
|
|
|
popupClosedAgain: function() {
|
|
removeEventListener("PopupChanged", gCurrentTest.popupClosedAgain, false)
|
|
let menu = document.getElementById("appmenu");
|
|
while (gCurrentTest.hidden > 0) {
|
|
gCurrentTest.hidden--;
|
|
menu.children[gCurrentTest.hidden].hidden = false;
|
|
}
|
|
|
|
gCurrentTest.newButtons.forEach(function(aButton) {
|
|
menu.removeChild(aButton);
|
|
});
|
|
|
|
runNextTest();
|
|
}
|
|
});
|