Restore the btoa/atob polyfills for Node.js

These were removed in PR 9170, since they were unused in the browsers that we'll support in PDF.js version `2.0`.
However looking at the output of Travis, where a subset of the unit-tests are run using Node.js, there's warnings about `btoa` being undefined. This doesn't appear to cause any errors, which probably explains why we didn't notice this before (despite PR 9201).
This commit is contained in:
Jonas Jenwald 2018-01-06 13:10:58 +01:00
parent ba0a3aebd0
commit 0e1b5589e7
16 changed files with 73 additions and 28 deletions

View file

@ -22,6 +22,7 @@ if ((typeof PDFJSDev === 'undefined' ||
(typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked)) {
var globalScope = require('./global_scope');
const isNodeJS = require('./is_node');
var userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';
var isAndroid = /Android/.test(userAgent);
@ -41,6 +42,28 @@ if (typeof PDFJS === 'undefined') {
PDFJS.compatibilityChecked = true;
// Support: Node.js
(function checkNodeBtoa() {
if (globalScope.btoa || !isNodeJS()) {
return;
}
globalScope.btoa = function(chars) {
// eslint-disable-next-line no-undef
return Buffer.from(chars, 'binary').toString('base64');
};
})();
// Support: Node.js
(function checkNodeAtob() {
if (globalScope.atob || !isNodeJS()) {
return;
}
globalScope.atob = function(input) {
// eslint-disable-next-line no-undef
return Buffer.from(input, 'base64').toString('binary');
};
})();
// Checks if possible to use URL.createObjectURL()
// Support: IE, Chrome on iOS
(function checkOnBlobSupport() {