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:
parent
53229e3d6c
commit
35cbe9d140
2 changed files with 24 additions and 2 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue