Add sync executeJavaScript test
authorSamuel Attard <samuel.r.attard@gmail.com>
Mon, 10 Oct 2016 23:40:05 +0000 (10:40 +1100)
committerKevin Sawicki <kevinsawicki@gmail.com>
Thu, 3 Nov 2016 16:33:47 +0000 (09:33 -0700)
lib/renderer/init.js
spec/api-browser-window-spec.js

index de5bf35..50250e1 100644 (file)
@@ -48,7 +48,7 @@ electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', (ev
       })
   }
   args.push(responseCallback)
-  electron.webFrame[method].apply(electron.webFrame, args)
+  electron.webFrame[method](...args)
 })
 
 // Process command line arguments.
index e268af9..0ee01e9 100644 (file)
@@ -1463,6 +1463,7 @@ describe('browser-window module', function () {
   describe('window.webContents.executeJavaScript', function () {
     var expected = 'hello, world!'
     var code = '(() => "' + expected + '")()'
+    var asyncCode = '(() => new Promise(r => setTimeout(() => r("' + expected + '"), 500)))()'
 
     it('doesnt throw when no calback is provided', function () {
       const result = ipcRenderer.sendSync('executeJavaScript', code, false)
@@ -1477,6 +1478,14 @@ describe('browser-window module', function () {
       })
     })
 
+    it('returns result if the code returns an asyncronous promise', function (done) {
+      ipcRenderer.send('executeJavaScript', asyncCode, true)
+      ipcRenderer.once('executeJavaScript-response', function (event, result) {
+        assert.equal(result, expected)
+        done()
+      })
+    })
+
     it('works after page load and during subframe load', function (done) {
       w.webContents.once('did-finish-load', function () {
         // initiate a sub-frame load, then try and execute script during it