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,13 +1,11 @@
|
|||
'use strict'
|
||||
|
||||
// Note: Don't use destructuring assignment for `Buffer`, or we'll hit a
|
||||
// browserify bug that makes the statement invalid, throwing an error in
|
||||
// sandboxed renderer.
|
||||
const Buffer = require('buffer').Buffer
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
const {ipcRenderer, isPromise, CallbacksRegistry} = require('electron')
|
||||
const resolvePromise = Promise.resolve.bind(Promise)
|
||||
|
||||
const bufferUtils = require('../../common/buffer-utils')
|
||||
|
||||
const callbacksRegistry = new CallbacksRegistry()
|
||||
const remoteObjectCache = v8Util.createIDWeakMap()
|
||||
|
||||
|
@ -30,10 +28,10 @@ function wrapArgs (args, visited = new Set()) {
|
|||
}
|
||||
visited.delete(value)
|
||||
return meta
|
||||
} else if (ArrayBuffer.isView(value)) {
|
||||
} else if (bufferUtils.isBuffer(value)) {
|
||||
return {
|
||||
type: 'buffer',
|
||||
value: Buffer.from(value)
|
||||
value: bufferUtils.bufferToMeta(value)
|
||||
}
|
||||
} else if (value instanceof Date) {
|
||||
return {
|
||||
|
@ -202,7 +200,7 @@ function metaToValue (meta) {
|
|||
const types = {
|
||||
value: () => meta.value,
|
||||
array: () => meta.members.map((member) => metaToValue(member)),
|
||||
buffer: () => Buffer.from(meta.value),
|
||||
buffer: () => bufferUtils.metaToBuffer(meta.value),
|
||||
promise: () => resolvePromise({then: metaToValue(meta.then)}),
|
||||
error: () => metaToPlainObject(meta),
|
||||
date: () => new Date(meta.value),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue