mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Fixes a number of issues with third party libraries that use `Blob#arrayBuffer` or `FileReader#readAsArrayBuffer`, including https://github.com/facebook/react-native/issues/30769 #34402 https://github.com/facebook/react-native/issues/20091 #21209 ## Changelog [INTERNAL] [FIXED] - Implemented FileReader#readAsArrayBuffer Pull Request resolved: https://github.com/facebook/react-native/pull/36332 Test Plan: Added a test which fails against current release but passes after code changes. Reviewed By: christophpurrer Differential Revision: D43907171 Pulled By: javache fbshipit-source-id: 73d622ec569a282b6394732b9a0dc687b447fb62
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
* @oncall react_native
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
jest.unmock('event-target-shim').setMock('../../BatchedBridge/NativeModules', {
|
|
BlobModule: require('../__mocks__/BlobModule'),
|
|
FileReaderModule: require('../__mocks__/FileReaderModule'),
|
|
});
|
|
|
|
const Blob = require('../Blob');
|
|
const FileReader = require('../FileReader');
|
|
|
|
describe('FileReader', function () {
|
|
it('should read blob as text', async () => {
|
|
const e = await new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.onload = resolve;
|
|
reader.onerror = reject;
|
|
reader.readAsText(new Blob());
|
|
});
|
|
expect(e.target.result).toBe('');
|
|
});
|
|
|
|
it('should read blob as data URL', async () => {
|
|
const e = await new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.onload = resolve;
|
|
reader.onerror = reject;
|
|
reader.readAsDataURL(new Blob());
|
|
});
|
|
expect(e.target.result).toBe('data:text/plain;base64,NDI=');
|
|
});
|
|
|
|
it('should read blob as ArrayBuffer', async () => {
|
|
const e = await new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.onload = resolve;
|
|
reader.onerror = reject;
|
|
reader.readAsArrayBuffer(new Blob());
|
|
});
|
|
const ab = e.target.result;
|
|
expect(ab.byteLength).toBe(2);
|
|
expect(new TextDecoder().decode(ab)).toBe('42');
|
|
});
|
|
});
|