Skip to content

Commit b3ccc55

Browse files
Merge pull request #19936 from Snuffleupagus/workerPort-firefox
Allow using the `workerPort` option in Firefox
2 parents be463f0 + e5e9d18 commit b3ccc55

1 file changed

Lines changed: 14 additions & 27 deletions

File tree

src/display/api.js

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -688,20 +688,16 @@ class PDFDocumentLoadingTask {
688688
async destroy() {
689689
this.destroyed = true;
690690

691-
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
691+
try {
692+
if (this._worker?.port) {
693+
this._worker._pendingDestroy = true;
694+
}
692695
await this._transport?.destroy();
693-
} else {
694-
try {
695-
if (this._worker?.port) {
696-
this._worker._pendingDestroy = true;
697-
}
698-
await this._transport?.destroy();
699-
} catch (ex) {
700-
if (this._worker?.port) {
701-
delete this._worker._pendingDestroy;
702-
}
703-
throw ex;
696+
} catch (ex) {
697+
if (this._worker?.port) {
698+
delete this._worker._pendingDestroy;
704699
}
700+
throw ex;
705701
}
706702
this._transport = null;
707703

@@ -2101,7 +2097,7 @@ class PDFWorker {
21012097

21022098
static #isWorkerDisabled = false;
21032099

2104-
static #workerPorts;
2100+
static #workerPorts = new WeakMap();
21052101

21062102
static {
21072103
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
@@ -2159,14 +2155,11 @@ class PDFWorker {
21592155
this._webWorker = null;
21602156
this._messageHandler = null;
21612157

2162-
if (
2163-
(typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) &&
2164-
port
2165-
) {
2166-
if (PDFWorker.#workerPorts?.has(port)) {
2158+
if (port) {
2159+
if (PDFWorker.#workerPorts.has(port)) {
21672160
throw new Error("Cannot use more than one PDFWorker per port.");
21682161
}
2169-
(PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);
2162+
PDFWorker.#workerPorts.set(port, this);
21702163
this._initializeFromPort(port);
21712164
return;
21722165
}
@@ -2206,9 +2199,6 @@ class PDFWorker {
22062199
}
22072200

22082201
_initializeFromPort(port) {
2209-
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
2210-
throw new Error("Not implemented: _initializeFromPort");
2211-
}
22122202
this._port = port;
22132203
this._messageHandler = new MessageHandler("main", "worker", port);
22142204
this._messageHandler.on("ready", function () {
@@ -2363,7 +2353,7 @@ class PDFWorker {
23632353
this._webWorker?.terminate();
23642354
this._webWorker = null;
23652355

2366-
PDFWorker.#workerPorts?.delete(this._port);
2356+
PDFWorker.#workerPorts.delete(this._port);
23672357
this._port = null;
23682358

23692359
this._messageHandler?.destroy();
@@ -2375,13 +2365,10 @@ class PDFWorker {
23752365
* @returns {PDFWorker}
23762366
*/
23772367
static fromPort(params) {
2378-
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
2379-
throw new Error("Not implemented: fromPort");
2380-
}
23812368
if (!params?.port) {
23822369
throw new Error("PDFWorker.fromPort - invalid method signature.");
23832370
}
2384-
const cachedPort = this.#workerPorts?.get(params.port);
2371+
const cachedPort = this.#workerPorts.get(params.port);
23852372
if (cachedPort) {
23862373
if (cachedPort._pendingDestroy) {
23872374
throw new Error(

0 commit comments

Comments
 (0)