From ab672f0b778c898664edea8c45e0d6ab26a84900 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 17 May 2025 15:23:55 +0200 Subject: [PATCH] Replace `PDFWorker.fromPort` with a generic `PDFWorker.create` method This allows us to simply invoke `PDFWorker.create` unconditionally from the `getDocument` function, without having to manually check if a global `workerPort` is available first. --- src/display/api.js | 33 +++++++++++++++++++-------------- test/unit/api_spec.js | 2 +- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 83e79b2dd..81527051e 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -38,14 +38,15 @@ import { PrintAnnotationStorage, SerializableEmpty, } from "./annotation_storage.js"; -import { FontFaceObject, FontLoader } from "./font_loader.js"; import { + deprecated, isDataScheme, isValidFetchUrl, PageViewport, RenderingCancelledException, StatTimer, } from "./display_utils.js"; +import { FontFaceObject, FontLoader } from "./font_loader.js"; import { MessageHandler, wrapReason } from "../shared/message_handler.js"; import { NodeCanvasFactory, @@ -383,15 +384,12 @@ function getDocument(src = {}) { }; if (!worker) { - const workerParams = { - verbosity, - port: GlobalWorkerOptions.workerPort, - }; // Worker was not provided -- creating and owning our own. If message port // is specified in global worker options, using it. - worker = workerParams.port - ? PDFWorker.fromPort(workerParams) - : new PDFWorker(workerParams); + worker = PDFWorker.create({ + verbosity, + port: GlobalWorkerOptions.workerPort, + }); task._worker = worker; } @@ -2131,6 +2129,16 @@ class PDFWorker { new Blob([wrapper], { type: "text/javascript" }) ); }; + + this.fromPort = params => { + deprecated( + "`PDFWorker.fromPort` - please use `PDFWorker.create` instead." + ); + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + return this.create(params); + }; } if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { @@ -2364,15 +2372,12 @@ class PDFWorker { * @param {PDFWorkerParameters} params - The worker initialization parameters. * @returns {PDFWorker} */ - static fromPort(params) { - if (!params?.port) { - throw new Error("PDFWorker.fromPort - invalid method signature."); - } - const cachedPort = this.#workerPorts.get(params.port); + static create(params) { + const cachedPort = this.#workerPorts.get(params?.port); if (cachedPort) { if (cachedPort._pendingDestroy) { throw new Error( - "PDFWorker.fromPort - the worker is being destroyed.\n" + + "PDFWorker.create - the worker is being destroyed.\n" + "Please remember to await `PDFDocumentLoadingTask.destroy()`-calls." ); } diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index e9c84f7f3..6399961ea 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -1082,7 +1082,7 @@ describe("api", function () { getDocument(tracemonkeyGetDocumentParams); }).toThrow( new Error( - "PDFWorker.fromPort - the worker is being destroyed.\n" + + "PDFWorker.create - the worker is being destroyed.\n" + "Please remember to await `PDFDocumentLoadingTask.destroy()`-calls." ) );