Browse Source

fix: serialize messages being sent over chrome message ports (#19252)

Chrome appears to serialize these messages (see #19070) so we should as
well to be consistent and to avoid bugs with Uint8/16 arrays

Fixes #19070
trop[bot] 5 years ago
parent
commit
019e60517f
1 changed files with 4 additions and 4 deletions
  1. 4 4
      lib/renderer/chrome-api.ts

+ 4 - 4
lib/renderer/chrome-api.ts

@@ -41,10 +41,10 @@ class Port {
     })
 
     ipcRendererInternal.on(`CHROME_PORT_POSTMESSAGE_${portId}`, (
-      _event: Electron.Event, message: string
+      _event: Electron.Event, message: any
     ) => {
       const sendResponse = function () { console.error('sendResponse is not implemented') }
-      this.onMessage.emit(message, this.sender, sendResponse)
+      this.onMessage.emit(JSON.parse(message), this.sender, sendResponse)
     })
   }
 
@@ -55,8 +55,8 @@ class Port {
     this._onDisconnect()
   }
 
-  postMessage (message: string) {
-    ipcRendererInternal.sendToAll(this.tabId, `CHROME_PORT_POSTMESSAGE_${this.portId}`, message)
+  postMessage (message: any) {
+    ipcRendererInternal.sendToAll(this.tabId, `CHROME_PORT_POSTMESSAGE_${this.portId}`, JSON.stringify(message))
   }
 
   _onDisconnect () {