feat: add safer nativeImage.createFromBitmap(), which does not decode PNG/JPEG (#17337)

This commit is contained in:
Milan Burda 2019-03-14 19:00:38 +01:00 committed by Jeremy Apthorp
parent aa8b66aae1
commit 878538f2e8
4 changed files with 91 additions and 1 deletions

View file

@ -127,6 +127,30 @@ describe('nativeImage module', () => {
})
})
describe('createFromBitmap(buffer, options)', () => {
it('returns an empty image when the buffer is empty', () => {
expect(nativeImage.createFromBitmap(Buffer.from([]), { width: 0, height: 0 }).isEmpty())
})
it('returns an image created from the given buffer', () => {
const imageA = nativeImage.createFromPath(path.join(__dirname, 'fixtures', 'assets', 'logo.png'))
const imageB = nativeImage.createFromBitmap(imageA.toBitmap(), imageA.getSize())
expect(imageB.getSize()).to.deep.equal({ width: 538, height: 190 })
const imageC = nativeImage.createFromBuffer(imageA.toBitmap(), { ...imageA.getSize(), scaleFactor: 2.0 })
expect(imageC.getSize()).to.deep.equal({ width: 269, height: 95 })
})
it('throws on invalid arguments', () => {
expect(() => nativeImage.createFromBitmap(null, {})).to.throw('buffer must be a node Buffer')
expect(() => nativeImage.createFromBitmap([12, 14, 124, 12], {})).to.throw('buffer must be a node Buffer')
expect(() => nativeImage.createFromBitmap(Buffer.from([]), {})).to.throw('width is required')
expect(() => nativeImage.createFromBitmap(Buffer.from([]), { width: 1 })).to.throw('height is required')
expect(() => nativeImage.createFromBitmap(Buffer.from([]), { width: 1, height: 1 })).to.throw('invalid buffer size')
})
})
describe('createFromBuffer(buffer, options)', () => {
it('returns an empty image when the buffer is empty', () => {
expect(nativeImage.createFromBuffer(Buffer.from([])).isEmpty())