Fix dockMenu not being referenced in JavaScript (#12062)

* Fix dockMenu not being referenced in JavaScript

* spec: Test garbage collecting dock menu
This commit is contained in:
Cheng Zhao 2018-02-27 15:15:06 +09:00 committed by shelley vohr
parent 53229e3d6c
commit 35cbe9d140
2 changed files with 24 additions and 2 deletions

View file

@ -10,6 +10,8 @@ const electron = require('electron')
const {deprecate, Menu} = electron const {deprecate, Menu} = electron
const {EventEmitter} = require('events') const {EventEmitter} = require('events')
let dockMenu = null
// App is an EventEmitter. // App is an EventEmitter.
Object.setPrototypeOf(App.prototype, EventEmitter.prototype) Object.setPrototypeOf(App.prototype, EventEmitter.prototype)
EventEmitter.call(app) EventEmitter.call(app)
@ -49,7 +51,13 @@ if (process.platform === 'darwin') {
hide: bindings.dockHide, hide: bindings.dockHide,
show: bindings.dockShow, show: bindings.dockShow,
isVisible: bindings.dockIsVisible, isVisible: bindings.dockIsVisible,
setMenu: bindings.dockSetMenu, setMenu (menu) {
dockMenu = menu
bindings.dockSetMenu(menu)
},
getMenu () {
return dockMenu
},
setIcon: bindings.dockSetIcon setIcon: bindings.dockSetIcon
} }
} }

View file

@ -7,7 +7,7 @@ const path = require('path')
const {ipcRenderer, remote} = require('electron') const {ipcRenderer, remote} = require('electron')
const {closeWindow} = require('./window-helpers') const {closeWindow} = require('./window-helpers')
const {app, BrowserWindow, ipcMain} = remote const {app, BrowserWindow, Menu, ipcMain} = remote
const isCI = remote.getGlobal('isCi') const isCI = remote.getGlobal('isCi')
@ -881,4 +881,18 @@ describe('app module', () => {
}, /before app is ready/) }, /before app is ready/)
}) })
}) })
describe('dock.setMenu', () => {
before(function () {
if (process.platform !== 'darwin') {
this.skip()
}
})
it('keeps references to the menu', () => {
app.dock.setMenu(new Menu())
const v8Util = process.atomBinding('v8_util')
v8Util.requestGarbageCollectionForTesting()
})
})
}) })