fix: prevent Menu.buildFromTemplate with empty array (#23308)

Prevent issues with menu creation and subsequent pane focus from menu bar by preventing menus from being created from an empty array. I can't conceive a valid use case for this, since if one wants to remove a menu they should be be passing null to win.setMenu() or calling win.removeMenu(). This issue is also specific to top-level menus, and not submenus, so the new check and exception is scoped to top-level menus.
This commit is contained in:
shelley vohr 2020-04-30 08:29:02 -07:00 committed by GitHub
parent 448017b9ee
commit f50f725a9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 2 deletions

View file

@ -173,13 +173,17 @@ Menu.setApplicationMenu = function (menu) {
}
};
Menu.buildFromTemplate = function (template) {
Menu.buildFromTemplate = function (template, isSubmenu = false) {
if (!Array.isArray(template)) {
throw new TypeError('Invalid template for Menu: Menu template must be an array');
} else if (!isSubmenu && template.length === 0) {
throw new TypeError('Invalid template for Menu: Menu template must be an non-empty array');
}
if (!areValidTemplateItems(template)) {
throw new TypeError('Invalid template for MenuItem: must have at least one of label, role or type');
}
const filtered = removeExtraSeparators(template);
const sorted = sortTemplate(filtered);