зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
00c13b4cfa
Коммит
0025c483df
|
@ -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) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче