feat: promisify executeJavaScript (#17312)

This commit is contained in:
Milan Burda 2019-03-14 20:08:54 +01:00 committed by Shelley Vohr
parent 878538f2e8
commit 2e89348541
14 changed files with 164 additions and 100 deletions

View file

@ -1075,7 +1075,21 @@ describe('webContents module', () => {
})
describe('webframe messages in sandboxed contents', () => {
it('responds to executeJavaScript', (done) => {
it('responds to executeJavaScript', async () => {
w.destroy()
w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
})
await w.loadURL('about:blank')
const result = await w.webContents.executeJavaScript('37 + 5')
assert.strictEqual(result, 42)
})
// TODO(miniak): remove when promisification is complete
it('responds to executeJavaScript (callback)', (done) => {
w.destroy()
w = new BrowserWindow({
show: false,

View file

@ -97,6 +97,7 @@ app.on('ready', () => {
mainWindow.webContents.printToPDF({}, (err, data) => console.log(err))
mainWindow.webContents.executeJavaScript('return true;').then((v: boolean) => console.log(v))
mainWindow.webContents.executeJavaScript('return true;', true).then((v: boolean) => console.log(v))
mainWindow.webContents.executeJavaScript('return true;', true)
mainWindow.webContents.executeJavaScript('return true;', true, (result: boolean) => console.log(result))
mainWindow.webContents.insertText('blah, blah, blah')

View file

@ -72,9 +72,10 @@ webFrame.setSpellCheckProvider('en-US', {
webFrame.insertText('text')
webFrame.executeJavaScript('JSON.stringify({})', false, (result) => {
console.log(result)
}).then((result: string) => console.log('OK:' + result))
webFrame.executeJavaScript('return true;').then((v: boolean) => console.log(v))
webFrame.executeJavaScript('return true;', true).then((v: boolean) => console.log(v))
webFrame.executeJavaScript('return true;', true)
webFrame.executeJavaScript('return true;', true, (result: boolean) => console.log(result))
console.log(webFrame.getResourceUsage())
webFrame.clearCache()

View file

@ -789,11 +789,7 @@ describe('<webview> tag', function () {
const devtools = webview2.getWebContents()
assert.ok(devtools.getURL().startsWith('chrome-devtools://devtools'))
const name = await new Promise((resolve) => {
devtools.executeJavaScript('InspectorFrontendHost.constructor.name', (name) => {
resolve(name)
})
})
const name = await devtools.executeJavaScript('InspectorFrontendHost.constructor.name')
document.body.removeChild(webview2)
expect(name).to.be.equal('InspectorFrontendHostImpl')
@ -1001,6 +997,19 @@ describe('<webview> tag', function () {
const jsScript = "'4'+2"
const expectedResult = '42'
const result = await webview.executeJavaScript(jsScript)
assert.strictEqual(result, expectedResult)
})
// TODO(miniak): remove when promisification is complete
it('can return the result of the executed script (callback)', async () => {
await loadWebView(webview, {
src: 'about:blank'
})
const jsScript = "'4'+2"
const expectedResult = '42'
const result = await new Promise((resolve) => {
webview.executeJavaScript(jsScript, false, (result) => {
resolve(result)