Wrap remote value being set as an arg
authorKevin Sawicki <kevinsawicki@gmail.com>
Mon, 3 Apr 2017 21:18:04 +0000 (14:18 -0700)
committerKevin Sawicki <kevinsawicki@gmail.com>
Tue, 4 Apr 2017 18:18:16 +0000 (11:18 -0700)
lib/browser/rpc-server.js
lib/renderer/api/remote.js

index 13d6f88..3da0590 100644 (file)
@@ -360,9 +360,10 @@ ipcMain.on('ELECTRON_BROWSER_MEMBER_CALL', function (event, id, method, args) {
   }
 })
 
-ipcMain.on('ELECTRON_BROWSER_MEMBER_SET', function (event, id, name, value) {
+ipcMain.on('ELECTRON_BROWSER_MEMBER_SET', function (event, id, name, args) {
   try {
-    let obj = objectsRegistry.get(id)
+    const [value] = unwrapArgs(event.sender, args)
+    const obj = objectsRegistry.get(id)
 
     if (obj == null) {
       throwRPCError(`Cannot set property '${name}' on missing remote object ${id}`)
index f65d617..5e79013 100644 (file)
@@ -139,7 +139,8 @@ const setObjectMembers = function (ref, object, metaId, members) {
       // Only set setter when it is writable.
       if (member.writable) {
         descriptor.set = function (value) {
-          const meta = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_SET', metaId, member.name, value)
+          const args = wrapArgs([value])
+          const meta = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_SET', metaId, member.name, args)
           // Meta will be non-null when a setter error occurred so parse it
           // to a value so it gets re-thrown.
           if (meta != null) {