From 87395cdef81a73147dfc75bfb5eeac6337221d16 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Thu, 17 Mar 2016 16:09:16 -0700 Subject: [PATCH 1/4] add failing spec for undefined accelerator --- spec/api-menu-spec.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/api-menu-spec.js b/spec/api-menu-spec.js index b27840ec4f2e..b7bff910f2b9 100644 --- a/spec/api-menu-spec.js +++ b/spec/api-menu-spec.js @@ -32,6 +32,17 @@ describe('menu module', function() { ]); }); + it('does not throw exceptions for undefined/null values', function() { + assert.doesNotThrow(function(){ + Menu.buildFromTemplate([ + { + label: 'text', + accelerator: undefined + } + ]); + }); + }); + describe('Menu.buildFromTemplate should reorder based on item position specifiers', function() { it('should position before existing item', function() { var menu = Menu.buildFromTemplate([ From e9ba5abe03762232dd20b940b27298d855b6a3e1 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Thu, 17 Mar 2016 16:14:31 -0700 Subject: [PATCH 2/4] test for null accelerator too --- spec/api-menu-spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/api-menu-spec.js b/spec/api-menu-spec.js index b7bff910f2b9..cd1e59870086 100644 --- a/spec/api-menu-spec.js +++ b/spec/api-menu-spec.js @@ -38,6 +38,10 @@ describe('menu module', function() { { label: 'text', accelerator: undefined + }, + { + label: 'text again', + accelerator: null } ]); }); From 344dda4029fa475828bf0a27ffb7a58ad08ab398 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Thu, 17 Mar 2016 16:20:23 -0700 Subject: [PATCH 3/4] ignore set menu item fields --- lib/browser/api/menu.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/browser/api/menu.js b/lib/browser/api/menu.js index cfb00bd45277..4effa10238e6 100644 --- a/lib/browser/api/menu.js +++ b/lib/browser/api/menu.js @@ -269,7 +269,7 @@ Menu.getApplicationMenu = function() { Menu.sendActionToFirstResponder = bindings.sendActionToFirstResponder; Menu.buildFromTemplate = function(template) { - var insertIndex, item, j, k, key, len, len1, menu, menuItem, positionedTemplate, value; + var insertIndex, item, j, k, key, len, len1, menu, menuItem, positionedTemplate; if (!Array.isArray(template)) { throw new TypeError('Invalid template for Menu'); } @@ -293,9 +293,9 @@ Menu.buildFromTemplate = function(template) { } menuItem = new MenuItem(item); for (key in item) { - value = item[key]; - if (menuItem[key] == null) { - menuItem[key] = value; + // Preserve extra fields specified by user + if (!menuItem.hasOwnProperty(key)) { + menuItem[key] = item[key]; } } menu.append(menuItem); From 827730144b74aa0fc543cc312201cab08a1a0380 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Fri, 18 Mar 2016 10:53:49 -0700 Subject: [PATCH 4/4] style nit --- spec/api-menu-spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/api-menu-spec.js b/spec/api-menu-spec.js index cd1e59870086..bb8736e144f8 100644 --- a/spec/api-menu-spec.js +++ b/spec/api-menu-spec.js @@ -33,7 +33,7 @@ describe('menu module', function() { }); it('does not throw exceptions for undefined/null values', function() { - assert.doesNotThrow(function(){ + assert.doesNotThrow(function() { Menu.buildFromTemplate([ { label: 'text',