diff --git a/src/display/api.js b/src/display/api.js index f82b6f25e..dd0052bdb 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -36,7 +36,6 @@ var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 let isWorkerDisabled = false; let workerSrc; -var isPostMessageTransfersDisabled = false; const pdfjsFilePath = typeof PDFJSDev !== 'undefined' && @@ -127,6 +126,8 @@ function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { * 2^16 = 65536. * @property {PDFWorker} worker - (optional) The worker that will be used for * the loading and parsing of the PDF data. + * @property {boolean} postMessageTransfers - (optional) Enables transfer usage + * in postMessage for ArrayBuffers. The default value is `true`. * @property {string} docBaseUrl - (optional) The base URL of the document, * used when attempting to recover valid absolute URLs for annotations, and * outline items, that (incorrectly) only specify relative URLs. @@ -241,6 +242,7 @@ function getDocument(src) { if (!worker) { const workerParams = { + postMessageTransfers: params.postMessageTransfers, }; // Worker was not provided -- creating and owning our own. If message port // is specified in global worker options, using it. @@ -321,8 +323,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { maxImageSize: getDefaultSetting('maxImageSize'), disableFontFace: getDefaultSetting('disableFontFace'), disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'), - postMessageTransfers: getDefaultSetting('postMessageTransfers') && - !isPostMessageTransfersDisabled, + postMessageTransfers: worker.postMessageTransfers, docBaseUrl: source.docBaseUrl, nativeImageDecoderSupport: source.nativeImageDecoderSupport, ignoreErrors: source.ignoreErrors, @@ -1203,6 +1204,8 @@ class LoopbackPort { * @typedef {Object} PDFWorkerParameters * @property {string} name - (optional) The name of the worker. * @property {Object} port - (optional) The `workerPort`. + * @property {boolean} postMessageTransfers - (optional) Enables transfer usage + * in postMessage for ArrayBuffers. The default value is `true`. */ /** @@ -1296,14 +1299,15 @@ var PDFWorker = (function PDFWorkerClosure() { /** * @param {PDFWorkerParameters} params - The worker initialization parameters. */ - function PDFWorker({ name = null, port = null, } = {}) { + function PDFWorker({ name = null, port = null, + postMessageTransfers = true, } = {}) { if (port && pdfWorkerPorts.has(port)) { throw new Error('Cannot use more than one PDFWorker per port'); } this.name = name; this.destroyed = false; - this.postMessageTransfers = true; + this.postMessageTransfers = postMessageTransfers !== false; this._readyCapability = createPromiseCapability(); this._port = null; @@ -1400,7 +1404,6 @@ var PDFWorker = (function PDFWorkerClosure() { this._webWorker = worker; if (!data.supportTransfers) { this.postMessageTransfers = false; - isPostMessageTransfersDisabled = true; } this._readyCapability.resolve(); // Send global setting, e.g. verbosity level. @@ -1428,11 +1431,8 @@ var PDFWorker = (function PDFWorkerClosure() { } }); - var sendTest = function () { - var postMessageTransfers = - getDefaultSetting('postMessageTransfers') && - !isPostMessageTransfersDisabled; - var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); + const sendTest = () => { + let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]); // Some versions of Opera throw a DATA_CLONE_ERR on serializing the // typed array. Also, checking if we can use transfers. try { diff --git a/src/display/dom_utils.js b/src/display/dom_utils.js index 20cb5ec97..69a9e974c 100644 --- a/src/display/dom_utils.js +++ b/src/display/dom_utils.js @@ -349,8 +349,6 @@ function getDefaultSetting(id) { return globalSettings ? globalSettings.cMapUrl : null; case 'cMapPacked': return globalSettings ? globalSettings.cMapPacked : false; - case 'postMessageTransfers': - return globalSettings ? globalSettings.postMessageTransfers : true; case 'maxImageSize': return globalSettings ? globalSettings.maxImageSize : -1; case 'isEvalSupported': diff --git a/src/display/global.js b/src/display/global.js index 7c00d194f..5a087f02f 100644 --- a/src/display/global.js +++ b/src/display/global.js @@ -147,13 +147,6 @@ PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ? */ PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug); -/** - * Enables transfer usage in postMessage for ArrayBuffers. - * @var {boolean} - */ -PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ? - true : PDFJS.postMessageTransfers); - /** * Disables URL.createObjectURL usage. * @var {boolean}