Bug 1351418 - Put single checkbox items into submenu on linux r=mixedpuppy

MozReview-Commit-ID: 9swHS0yEoDg

--HG--
extra : rebase_source : 679be2752856db1a8b710d2c2486cd7857b3654f
This commit is contained in:
Matthew Wein 2017-05-15 13:20:41 -04:00
Родитель 00c13b4cfa
Коммит 0025c483df
2 изменённых файлов: 48 добавлений и 13 удалений

Просмотреть файл

@ -147,6 +147,13 @@ var gMenuBuilder = {
let menuPopup = element.firstChild;
if (menuPopup && menuPopup.childNodes.length == 1) {
let onlyChild = menuPopup.firstChild;
// Keep single checkbox items in the submenu on Linux since
// the extension icon overlaps the checkbox otherwise.
if (AppConstants.platform === "linux" && onlyChild.getAttribute("type") === "checkbox") {
return element;
}
onlyChild.remove();
return onlyChild;
}

Просмотреть файл

@ -24,26 +24,54 @@ add_task(async function() {
type: "checkbox",
});
browser.contextMenus.create({
type: "separator",
});
browser.test.sendMessage("single-contextmenu-item-added");
browser.contextMenus.create({
title: "Checkbox",
type: "checkbox",
checked: true,
});
browser.test.onMessage.addListener(msg => {
if (msg !== "add-additional-menu-items") {
return;
}
browser.contextMenus.create({
title: "Checkbox",
type: "checkbox",
});
browser.contextMenus.create({
type: "separator",
});
browser.test.notifyPass("contextmenus-checkboxes");
browser.contextMenus.create({
title: "Checkbox",
type: "checkbox",
checked: true,
});
browser.contextMenus.create({
title: "Checkbox",
type: "checkbox",
});
browser.test.notifyPass("contextmenus-checkboxes");
});
},
});
await extension.startup();
await extension.awaitMessage("single-contextmenu-item-added");
async function testSingleCheckboxItem() {
let extensionMenuRoot = await openExtensionContextMenu();
// On Linux, the single menu item should be contained in a submenu.
if (AppConstants.platform === "linux") {
let items = extensionMenuRoot.getElementsByAttribute("type", "checkbox");
is(items.length, 1, "single checkbox should be in the submenu on Linux");
await closeContextMenu();
} else {
is(extensionMenuRoot, null, "there should be no submenu for a single checkbox item");
await closeContextMenu();
}
}
await testSingleCheckboxItem();
extension.sendMessage("add-additional-menu-items");
await extension.awaitFinish("contextmenus-checkboxes");
function confirmCheckboxStates(extensionMenuRoot, expectedStates) {