Merge pull request #8144 from electron/from-devtools-webcontents-fix
Guard against missing devToolsWebContents
This commit is contained in:
commit
3e128abb73
2 changed files with 49 additions and 7 deletions
|
@ -138,14 +138,17 @@ BrowserWindow.getFocusedWindow = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowserWindow.fromWebContents = (webContents) => {
|
BrowserWindow.fromWebContents = (webContents) => {
|
||||||
for (let window of BrowserWindow.getAllWindows()) {
|
for (const window of BrowserWindow.getAllWindows()) {
|
||||||
if (window.webContents.equal(webContents)) return window
|
if (window.webContents.equal(webContents)) return window
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowserWindow.fromDevToolsWebContents = (webContents) => {
|
BrowserWindow.fromDevToolsWebContents = (webContents) => {
|
||||||
for (let window of BrowserWindow.getAllWindows()) {
|
for (const window of BrowserWindow.getAllWindows()) {
|
||||||
if (window.devToolsWebContents.equal(webContents)) return window
|
const {devToolsWebContents} = window
|
||||||
|
if (devToolsWebContents != null && devToolsWebContents.equal(webContents)) {
|
||||||
|
return window
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,11 @@ const http = require('http')
|
||||||
const {closeWindow} = require('./window-helpers')
|
const {closeWindow} = require('./window-helpers')
|
||||||
|
|
||||||
const {ipcRenderer, remote, screen} = require('electron')
|
const {ipcRenderer, remote, screen} = require('electron')
|
||||||
const {app, ipcMain, BrowserWindow, protocol} = remote
|
const {app, ipcMain, BrowserWindow, protocol, webContents} = remote
|
||||||
|
|
||||||
const isCI = remote.getGlobal('isCi')
|
const isCI = remote.getGlobal('isCi')
|
||||||
|
|
||||||
describe('browser-window module', function () {
|
describe('BrowserWindow module', function () {
|
||||||
var fixtures = path.resolve(__dirname, 'fixtures')
|
var fixtures = path.resolve(__dirname, 'fixtures')
|
||||||
var w = null
|
var w = null
|
||||||
var server, postData
|
var server, postData
|
||||||
|
@ -133,10 +133,10 @@ describe('browser-window module', function () {
|
||||||
|
|
||||||
describe('BrowserWindow.destroy()', function () {
|
describe('BrowserWindow.destroy()', function () {
|
||||||
it('prevents users to access methods of webContents', function () {
|
it('prevents users to access methods of webContents', function () {
|
||||||
var webContents = w.webContents
|
const contents = w.webContents
|
||||||
w.destroy()
|
w.destroy()
|
||||||
assert.throws(function () {
|
assert.throws(function () {
|
||||||
webContents.getId()
|
contents.getId()
|
||||||
}, /Object has been destroyed/)
|
}, /Object has been destroyed/)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -567,6 +567,45 @@ describe('browser-window module', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('BrowserWindow.fromWebContents(webContents)', function () {
|
||||||
|
let contents = null
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
contents = webContents.create({})
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
contents.destroy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns the window with the webContents', function () {
|
||||||
|
assert.equal(BrowserWindow.fromWebContents(w.webContents).id, w.id)
|
||||||
|
assert.equal(BrowserWindow.fromWebContents(contents), undefined)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('BrowserWindow.fromDevToolsWebContents(webContents)', function () {
|
||||||
|
let contents = null
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
contents = webContents.create({})
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
contents.destroy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns the window with the webContents', function (done) {
|
||||||
|
w.webContents.once('devtools-opened', () => {
|
||||||
|
assert.equal(BrowserWindow.fromDevToolsWebContents(w.devToolsWebContents).id, w.id)
|
||||||
|
assert.equal(BrowserWindow.fromDevToolsWebContents(w.webContents), undefined)
|
||||||
|
assert.equal(BrowserWindow.fromDevToolsWebContents(contents), undefined)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
w.webContents.openDevTools()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('"useContentSize" option', function () {
|
describe('"useContentSize" option', function () {
|
||||||
it('make window created with content size when used', function () {
|
it('make window created with content size when used', function () {
|
||||||
w.destroy()
|
w.destroy()
|
||||||
|
|
Loading…
Reference in a new issue