From 4b0900fdfab71d530f143eea1bf97fff9525dbae Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 30 Nov 2024 12:01:35 +0100 Subject: [PATCH] Use even more optional chaining in the `src/display/api.js` file This slightly shortens the code, in various `destroy`-methods, which cannot hurt. Also, use pre-processor checks to simplify `PDFDocumentLoadingTask.destroy` in the Firefox PDF Viewer since the `PDFWorker.fromPort`-method isn't used there. --- src/display/api.js | 53 +++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 012e45a6373b4..c8da40b15bdd1 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -655,23 +655,26 @@ class PDFDocumentLoadingTask { */ async destroy() { this.destroyed = true; - try { - if (this._worker?.port) { - this._worker._pendingDestroy = true; - } + + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { await this._transport?.destroy(); - } catch (ex) { - if (this._worker?.port) { - delete this._worker._pendingDestroy; + } else { + try { + if (this._worker?.port) { + this._worker._pendingDestroy = true; + } + await this._transport?.destroy(); + } catch (ex) { + if (this._worker?.port) { + delete this._worker._pendingDestroy; + } + throw ex; } - throw ex; } - this._transport = null; - if (this._worker) { - this._worker.destroy(); - this._worker = null; - } + + this._worker?.destroy(); + this._worker = null; } } @@ -2336,17 +2339,16 @@ class PDFWorker { */ destroy() { this.destroyed = true; - if (this._webWorker) { - // We need to terminate only web worker created resource. - this._webWorker.terminate(); - this._webWorker = null; - } + + // We need to terminate only web worker created resource. + this._webWorker?.terminate(); + this._webWorker = null; + PDFWorker.#workerPorts?.delete(this._port); this._port = null; - if (this._messageHandler) { - this._messageHandler.destroy(); - this._messageHandler = null; - } + + this._messageHandler?.destroy(); + this._messageHandler = null; } /** @@ -2600,10 +2602,9 @@ class WorkerTransport { new AbortException("Worker was terminated.") ); - if (this.messageHandler) { - this.messageHandler.destroy(); - this.messageHandler = null; - } + this.messageHandler?.destroy(); + this.messageHandler = null; + this.destroyCapability.resolve(); }, this.destroyCapability.reject); return this.destroyCapability.promise;