Skip to content

Commit

Permalink
fix: throw error when inserting menu items out-of-range (electron#17401)
Browse files Browse the repository at this point in the history
* fix: throw error when inserting menu items out-of-range

* also check pos < 0
  • Loading branch information
codebytere authored and kiku-jw committed May 16, 2019
1 parent 009450f commit bd4ddb2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/browser/api/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@ Menu.prototype.insert = function (pos, item) {
throw new TypeError('Invalid item')
}

if (pos < 0) {
throw new RangeError(`Position ${pos} cannot be less than 0`)
} else if (pos > this.getItemCount()) {
throw new RangeError(`Position ${pos} cannot be greater than the total MenuItem count`)
}

// insert item depending on its type
insertItemByType.call(this, item, pos)

Expand Down
18 changes: 18 additions & 0 deletions spec/api-menu-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,24 @@ describe('Menu module', () => {
})

describe('Menu.insert', () => {
it('should throw when attempting to insert at out-of-range indices', () => {
const menu = Menu.buildFromTemplate([
{ label: '1' },
{ label: '2' },
{ label: '3' }
])

const item = new MenuItem({ label: 'badInsert' })

expect(() => {
menu.insert(9999, item)
}).to.throw(/Position 9999 cannot be greater than the total MenuItem count/)

expect(() => {
menu.insert(-9999, item)
}).to.throw(/Position -9999 cannot be less than 0/)
})

it('should store item in @items by its index', () => {
const menu = Menu.buildFromTemplate([
{ label: '1' },
Expand Down

0 comments on commit bd4ddb2

Please sign in to comment.