Merge pull request #11158 from electron/execute-errors
fix: Pass on errors thrown in `executeJavaScript`
This commit is contained in:
commit
5eb00e45aa
4 changed files with 53 additions and 1 deletions
|
@ -2514,6 +2514,15 @@ describe('BrowserWindow module', () => {
|
|||
const code = `(() => "${expected}")()`
|
||||
const asyncCode = `(() => new Promise(r => setTimeout(() => r("${expected}"), 500)))()`
|
||||
const badAsyncCode = `(() => new Promise((r, e) => setTimeout(() => e("${expectedErrorMsg}"), 500)))()`
|
||||
const errorTypes = new Set([
|
||||
Error,
|
||||
ReferenceError,
|
||||
EvalError,
|
||||
RangeError,
|
||||
SyntaxError,
|
||||
TypeError,
|
||||
URIError
|
||||
])
|
||||
|
||||
it('doesnt throw when no calback is provided', () => {
|
||||
const result = ipcRenderer.sendSync('executeJavaScript', code, false)
|
||||
|
@ -2561,6 +2570,17 @@ describe('BrowserWindow module', () => {
|
|||
done()
|
||||
})
|
||||
})
|
||||
it('rejects the returned promise with an error if an Error.prototype is thrown', async () => {
|
||||
for (const error in errorTypes) {
|
||||
await new Promise((resolve) => {
|
||||
ipcRenderer.send('executeJavaScript', `Promise.reject(new ${error.name}("Wamp-wamp")`, true)
|
||||
ipcRenderer.once('executeJavaScript-promise-error-name', (event, name) => {
|
||||
assert.equal(name, error.name)
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
it('works after page load and during subframe load', (done) => {
|
||||
w.webContents.once('did-finish-load', () => {
|
||||
// initiate a sub-frame load, then try and execute script during it
|
||||
|
|
|
@ -217,6 +217,10 @@ app.on('ready', function () {
|
|||
window.webContents.send('executeJavaScript-promise-response', result)
|
||||
}).catch((error) => {
|
||||
window.webContents.send('executeJavaScript-promise-error', error)
|
||||
|
||||
if (error && error.name) {
|
||||
window.webContents.send('executeJavaScript-promise-error-name', error.name)
|
||||
}
|
||||
})
|
||||
|
||||
if (!hasCallback) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue