add proper support for typed arrays in remote (#13055)
This commit is contained in:
parent
a798a40026
commit
4cfe5ecaa4
6 changed files with 174 additions and 22 deletions
|
@ -1,6 +1,5 @@
|
|||
'use strict'
|
||||
|
||||
const {Buffer} = require('buffer')
|
||||
const electron = require('electron')
|
||||
const {EventEmitter} = require('events')
|
||||
const fs = require('fs')
|
||||
|
@ -9,6 +8,7 @@ const v8Util = process.atomBinding('v8_util')
|
|||
const {ipcMain, isPromise, webContents} = electron
|
||||
|
||||
const objectsRegistry = require('./objects-registry')
|
||||
const bufferUtils = require('../common/buffer-utils')
|
||||
|
||||
const hasProp = {}.hasOwnProperty
|
||||
|
||||
|
@ -63,7 +63,7 @@ let valueToMeta = function (sender, value, optimizeSimpleObject = false) {
|
|||
// Recognize certain types of objects.
|
||||
if (value === null) {
|
||||
meta.type = 'value'
|
||||
} else if (ArrayBuffer.isView(value)) {
|
||||
} else if (bufferUtils.isBuffer(value)) {
|
||||
meta.type = 'buffer'
|
||||
} else if (Array.isArray(value)) {
|
||||
meta.type = 'array'
|
||||
|
@ -95,7 +95,7 @@ let valueToMeta = function (sender, value, optimizeSimpleObject = false) {
|
|||
meta.members = getObjectMembers(value)
|
||||
meta.proto = getObjectPrototype(value)
|
||||
} else if (meta.type === 'buffer') {
|
||||
meta.value = Buffer.from(value)
|
||||
meta.value = bufferUtils.bufferToMeta(value)
|
||||
} else if (meta.type === 'promise') {
|
||||
// Add default handler to prevent unhandled rejections in main process
|
||||
// Instead they should appear in the renderer process
|
||||
|
@ -180,7 +180,7 @@ const unwrapArgs = function (sender, args) {
|
|||
case 'array':
|
||||
return unwrapArgs(sender, meta.value)
|
||||
case 'buffer':
|
||||
return Buffer.from(meta.value)
|
||||
return bufferUtils.metaToBuffer(meta.value)
|
||||
case 'date':
|
||||
return new Date(meta.value)
|
||||
case 'promise':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue