🔧 Alex has good ideas

This commit is contained in:
Felix Rieseberg 2017-11-18 10:59:09 -08:00
parent cf7e9df3a0
commit 5b18bea7e3
2 changed files with 15 additions and 19 deletions

View file

@ -130,13 +130,9 @@ const asyncWebFrameMethods = function (requestId, method, callback, ...args) {
if (typeof callback === 'function') callback(result) if (typeof callback === 'function') callback(result)
resolve(result) resolve(result)
} else { } else {
if (error && error.__ELECTRON_SERIALIZED_ERROR__) { if (error.__ELECTRON_SERIALIZED_ERROR__ && errorConstructors[error.name]) {
let rehydratedError = error const rehydratedError = new errorConstructors[error.name](error.message)
rehydratedError.stack = error.stack
if (errorConstructors[error.name]) {
rehydratedError = new errorConstructors[error.name](error.message)
rehydratedError.stack = error.stack
}
reject(rehydratedError) reject(rehydratedError)
} else { } else {

View file

@ -2514,15 +2514,15 @@ describe('BrowserWindow module', () => {
const code = `(() => "${expected}")()` const code = `(() => "${expected}")()`
const asyncCode = `(() => new Promise(r => setTimeout(() => r("${expected}"), 500)))()` const asyncCode = `(() => new Promise(r => setTimeout(() => r("${expected}"), 500)))()`
const badAsyncCode = `(() => new Promise((r, e) => setTimeout(() => e("${expectedErrorMsg}"), 500)))()` const badAsyncCode = `(() => new Promise((r, e) => setTimeout(() => e("${expectedErrorMsg}"), 500)))()`
const errorCodes = { const errorTypes = new Set([
Error: 'Promise.reject(new Error("Wamp-wamp"))', Error,
ReferenceError: 'Promise.reject(new ReferenceError("Wamp-wamp"))', ReferenceError,
EvalError: 'Promise.reject(new EvalError("Wamp-wamp"))', EvalError,
RangeError: 'Promise.reject(new RangeError("Wamp-wamp"))', RangeError,
SyntaxError: 'Promise.reject(new SyntaxError("Wamp-wamp"))', SyntaxError,
TypeError: 'Promise.reject(new TypeError("Wamp-wamp"))', TypeError,
URIError: 'Promise.reject(new URIError("Wamp-wamp"))' URIError
} ])
it('doesnt throw when no calback is provided', () => { it('doesnt throw when no calback is provided', () => {
const result = ipcRenderer.sendSync('executeJavaScript', code, false) const result = ipcRenderer.sendSync('executeJavaScript', code, false)
@ -2571,11 +2571,11 @@ describe('BrowserWindow module', () => {
}) })
}) })
it('rejects the returned promise with an error if an Error.prototype is thrown', async () => { it('rejects the returned promise with an error if an Error.prototype is thrown', async () => {
for (const errorKey in errorCodes) { for (const error in errorTypes) {
await new Promise((resolve) => { await new Promise((resolve) => {
ipcRenderer.send('executeJavaScript', errorCodes[errorKey], true) ipcRenderer.send('executeJavaScript', `Promise.reject(new ${error.name}("Wamp-wamp")`, true)
ipcRenderer.once('executeJavaScript-promise-error-name', (event, name) => { ipcRenderer.once('executeJavaScript-promise-error-name', (event, name) => {
assert.equal(name, errorKey) assert.equal(name, error.name)
resolve() resolve()
}) })
}) })