blob: 77c8e0e212183eed3f52a5e15180571579c8e134 [file] [edit]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
/**
* @fileoverview Polyfills for ES2019+ features we want to use.
* @suppress {duplicate} This file redefines many functions.
*/
/** @const */
lib.polyfill = {};
/**
* https://developer.mozilla.org/en-US/docs/Web/API/Blob/arrayBuffer
*
* @return {!Promise<!ArrayBuffer>}
*/
lib.polyfill.BlobArrayBuffer = function() {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onabort = reader.onerror = () => reject(reader);
reader.readAsArrayBuffer(this);
});
};
if (typeof Blob.prototype.arrayBuffer != 'function') {
Blob.prototype.arrayBuffer = lib.polyfill.BlobArrayBuffer;
}
/**
* https://developer.mozilla.org/en-US/docs/Web/API/Blob/text
*
* @return {!Promise<string>}
*/
lib.polyfill.BlobText = function() {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onabort = reader.onerror = () => reject(reader);
reader.readAsText(this);
});
};
if (typeof Blob.prototype.arrayBuffer != 'function') {
Blob.prototype.text = lib.polyfill.BlobText;
}