spec: ipcRenderer.sendTo sends message to WebContents
authorCheng Zhao <zcbenz@gmail.com>
Wed, 18 May 2016 13:14:51 +0000 (22:14 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Sat, 28 May 2016 11:50:30 +0000 (20:50 +0900)
spec/api-ipc-spec.js
spec/fixtures/pages/ping-pong.html [new file with mode: 0644]

index 102b23e..46aa847 100644 (file)
@@ -3,11 +3,8 @@
 const assert = require('assert')
 const path = require('path')
 
-const ipcRenderer = require('electron').ipcRenderer
-const remote = require('electron').remote
-
-const ipcMain = remote.require('electron').ipcMain
-const BrowserWindow = remote.require('electron').BrowserWindow
+const {ipcRenderer, remote} = require('electron')
+const {ipcMain, webContents, BrowserWindow} = remote
 
 const comparePaths = function (path1, path2) {
   if (process.platform === 'win32') {
@@ -237,6 +234,30 @@ describe('ipc module', function () {
     })
   })
 
+  describe('ipcRenderer.sendTo', function () {
+    let contents = null
+    beforeEach(function () {
+      contents = webContents.create({})
+    })
+    afterEach(function () {
+      ipcRenderer.removeAllListeners('pong')
+      contents.destroy()
+      contents = null
+    })
+
+    it('sends message to WebContents', function (done) {
+      const webContentsId = remote.getCurrentWebContents().id
+      ipcRenderer.once('pong', function (event, id) {
+        assert.equal(webContentsId, id)
+        done()
+      })
+      contents.once('did-finish-load', function () {
+        ipcRenderer.sendTo(contents.id, 'ping', webContentsId)
+      })
+      contents.loadURL('file://' + path.join(fixtures, 'pages', 'ping-pong.html'))
+    })
+  })
+
   describe('remote listeners', function () {
     var w = null
 
diff --git a/spec/fixtures/pages/ping-pong.html b/spec/fixtures/pages/ping-pong.html
new file mode 100644 (file)
index 0000000..d10e789
--- /dev/null
@@ -0,0 +1,11 @@
+<html>
+<body>
+<script type="text/javascript" charset="utf-8">
+  const {ipcRenderer} = require('electron')
+  ipcRenderer.on('ping', function (event, id) {
+    ipcRenderer.sendTo(id, 'pong', id)
+  })
+</script>
+</body>
+</html>
+