Use ArrayBuffer.isView to detect Buffer and ArrayBuffer

This commit is contained in:
Cheng Zhao 2016-07-25 16:39:09 +09:00
parent eb51e080e5
commit 1c9421bc89
5 changed files with 4 additions and 38 deletions

View file

@ -44,7 +44,6 @@
'lib/common/api/deprecate.js', 'lib/common/api/deprecate.js',
'lib/common/api/deprecations.js', 'lib/common/api/deprecations.js',
'lib/common/api/is-promise.js', 'lib/common/api/is-promise.js',
'lib/common/api/is-typed-array.js',
'lib/common/api/exports/electron.js', 'lib/common/api/exports/electron.js',
'lib/common/api/native-image.js', 'lib/common/api/native-image.js',
'lib/common/api/shell.js', 'lib/common/api/shell.js',

View file

@ -2,7 +2,7 @@
const electron = require('electron') const electron = require('electron')
const v8Util = process.atomBinding('v8_util') const v8Util = process.atomBinding('v8_util')
const {ipcMain, isPromise, isTypedArray, webContents} = electron const {ipcMain, isPromise, webContents} = electron
const objectsRegistry = require('./objects-registry') const objectsRegistry = require('./objects-registry')
@ -59,12 +59,10 @@ let valueToMeta = function (sender, value, optimizeSimpleObject = false) {
// Recognize certain types of objects. // Recognize certain types of objects.
if (value === null) { if (value === null) {
meta.type = 'value' meta.type = 'value'
} else if (Buffer.isBuffer(value)) { } else if (ArrayBuffer.isView(value)) {
meta.type = 'buffer' meta.type = 'buffer'
} else if (Array.isArray(value)) { } else if (Array.isArray(value)) {
meta.type = 'array' meta.type = 'array'
} else if (isTypedArray(value)) {
meta.type = 'typed-array'
} else if (value instanceof Error) { } else if (value instanceof Error) {
meta.type = 'error' meta.type = 'error'
} else if (value instanceof Date) { } else if (value instanceof Date) {
@ -151,8 +149,6 @@ const unwrapArgs = function (sender, args) {
return unwrapArgs(sender, meta.value) return unwrapArgs(sender, meta.value)
case 'buffer': case 'buffer':
return new Buffer(meta.value) return new Buffer(meta.value)
case 'typed-array':
return Buffer.from(meta.value)
case 'date': case 'date':
return new Date(meta.value) return new Date(meta.value)
case 'promise': case 'promise':

View file

@ -48,11 +48,6 @@ exports.defineProperties = function (exports) {
get: function () { get: function () {
return require('../is-promise') return require('../is-promise')
} }
},
isTypedArray: {
get: function () {
return require('../is-typed-array')
}
} }
}) })
} }

View file

@ -1,17 +0,0 @@
'use strict'
module.exports = function isTypedArray (val) {
return (
val &&
(val instanceof Int8Array ||
val instanceof Int16Array ||
val instanceof Int32Array ||
val instanceof Uint8Array ||
val instanceof Uint8ClampedArray ||
val instanceof Uint16Array ||
val instanceof Uint32Array ||
val instanceof Float32Array ||
val instanceof Float64Array) ||
(Object.prototype.toString.call(val).substr(-6, 5) === 'Array')
)
}

View file

@ -1,7 +1,7 @@
'use strict' 'use strict'
const v8Util = process.atomBinding('v8_util') const v8Util = process.atomBinding('v8_util')
const {ipcRenderer, isPromise, isTypedArray, CallbacksRegistry} = require('electron') const {ipcRenderer, isPromise, CallbacksRegistry} = require('electron')
const callbacksRegistry = new CallbacksRegistry() const callbacksRegistry = new CallbacksRegistry()
@ -30,16 +30,11 @@ const wrapArgs = function (args, visited) {
} }
visited.delete(value) visited.delete(value)
return meta return meta
} else if (Buffer.isBuffer(value)) { } else if (ArrayBuffer.isView(value)) {
return { return {
type: 'buffer', type: 'buffer',
value: Array.prototype.slice.call(value, 0) value: Array.prototype.slice.call(value, 0)
} }
} else if (isTypedArray(value)) {
return {
type: 'typed-array',
value: Array.prototype.slice.call(value)
}
} else if (value instanceof Date) { } else if (value instanceof Date) {
return { return {
type: 'date', type: 'date',
@ -169,8 +164,6 @@ const metaToValue = function (meta) {
return results return results
case 'buffer': case 'buffer':
return new Buffer(meta.value) return new Buffer(meta.value)
case 'typed-array':
return Buffer.from(meta.value)
case 'promise': case 'promise':
return Promise.resolve({ return Promise.resolve({
then: metaToValue(meta.then) then: metaToValue(meta.then)