add proper support for typed arrays in remote (#13055)

This commit is contained in:
Milan Burda 2018-05-24 14:05:46 +02:00 committed by Cheng Zhao
parent a798a40026
commit 4cfe5ecaa4
6 changed files with 174 additions and 22 deletions

View file

@ -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':