From ce8ac6d96a46ad6602d61882c29be745e995ebd1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 29 Jan 2023 18:20:53 +0100 Subject: [PATCH] Only pass the necessary parameters to `_fetchDocument` and `WorkerTransport` Currently we're passing all available parameters to this function respectively class, despite that not actually being necessary. By splitting the parameters we not only improve the structure, and basically "document" the code a little bit, but we can also simplify the `_fetchDocument` function considerably. --- src/display/api.js | 71 +++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 2a84f2972..d9b59e059 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -361,28 +361,45 @@ function getDocument(src) { } const docId = task.docId; - const params = { + const fetchDocParams = { + docId, + apiVersion: + typeof PDFJSDev !== "undefined" && !PDFJSDev.test("TESTING") + ? PDFJSDev.eval("BUNDLE_VERSION") + : null, data, password, + disableAutoFetch, rangeChunkSize, length, docBaseUrl, + enableXfa, + evaluatorOptions: { + maxImageSize, + disableFontFace, + ignoreErrors, + isEvalSupported, + isOffscreenCanvasSupported, + fontExtraProperties, + useSystemFonts, + cMapUrl: useWorkerFetch ? cMapUrl : null, + standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null, + }, + }; + const transportParams = { cMapUrl, cMapPacked, CMapReaderFactory, standardFontDataUrl, StandardFontDataFactory, ignoreErrors, - maxImageSize, isEvalSupported, - isOffscreenCanvasSupported, disableFontFace, fontExtraProperties, enableXfa, ownerDocument, disableAutoFetch, pdfBug, - useSystemFonts, useWorkerFetch, styleElement, }; @@ -393,7 +410,7 @@ function getDocument(src) { throw new Error("Loading aborted"); } - const workerIdPromise = _fetchDocument(worker, params, docId); + const workerIdPromise = _fetchDocument(worker, fetchDocParams); const networkStreamPromise = new Promise(function (resolve) { let networkStream; if (rangeTransport) { @@ -441,7 +458,7 @@ function getDocument(src) { messageHandler, task, networkStream, - params + transportParams ); task._transport = transport; messageHandler.send("Ready", null); @@ -458,48 +475,18 @@ function getDocument(src) { * * @param {PDFWorker} worker * @param {Object} source - * @param {string} docId - Unique document ID, used in `MessageHandler`. * @returns {Promise} A promise that is resolved when the worker ID of * the `MessageHandler` is known. * @private */ -async function _fetchDocument(worker, source, docId) { +async function _fetchDocument(worker, source) { if (worker.destroyed) { throw new Error("Worker was destroyed"); } - const transfers = source.data ? [source.data.buffer] : null; - const workerId = await worker.messageHandler.sendWithPromise( "GetDocRequest", - // Only send the required properties, and *not* the entire `source` object. - { - docId, - apiVersion: - typeof PDFJSDev !== "undefined" && !PDFJSDev.test("TESTING") - ? PDFJSDev.eval("BUNDLE_VERSION") - : null, - data: source.data, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length, - docBaseUrl: source.docBaseUrl, - enableXfa: source.enableXfa, - evaluatorOptions: { - maxImageSize: source.maxImageSize, - disableFontFace: source.disableFontFace, - ignoreErrors: source.ignoreErrors, - isEvalSupported: source.isEvalSupported, - isOffscreenCanvasSupported: source.isOffscreenCanvasSupported, - fontExtraProperties: source.fontExtraProperties, - useSystemFonts: source.useSystemFonts, - cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, - standardFontDataUrl: source.useWorkerFetch - ? source.standardFontDataUrl - : null, - }, - }, - transfers + source, + source.data ? [source.data.buffer] : null ); if (worker.destroyed) { @@ -3075,10 +3062,10 @@ class WorkerTransport { } get loadingParams() { - const params = this._params; + const { disableAutoFetch, enableXfa } = this._params; return shadow(this, "loadingParams", { - disableAutoFetch: params.disableAutoFetch, - enableXfa: params.enableXfa, + disableAutoFetch, + enableXfa, }); } }