Consistently remove the "visibilitychange" listener in PDFViewer (PR 14388 follow-up)

By always removing the "visibilitychange" listener in the `PDFViewer.#onePageRenderedOrForceFetch`-method we can (ever so slightly) reduce duplication in the code.
This commit is contained in:
Jonas Jenwald 2024-01-13 10:51:26 +01:00
parent 56ca2fd658
commit b168f71fde

View File

@ -619,7 +619,7 @@ class PDFViewer {
return params; return params;
} }
#onePageRenderedOrForceFetch() { async #onePageRenderedOrForceFetch() {
// Unless the viewer *and* its pages are visible, rendering won't start and // Unless the viewer *and* its pages are visible, rendering won't start and
// `this._onePageRenderedCapability` thus won't be resolved. // `this._onePageRenderedCapability` thus won't be resolved.
// To ensure that automatic printing, on document load, still works even in // To ensure that automatic printing, on document load, still works even in
@ -635,7 +635,7 @@ class PDFViewer {
!this.container.offsetParent || !this.container.offsetParent ||
this._getVisiblePages().views.length === 0 this._getVisiblePages().views.length === 0
) { ) {
return Promise.resolve(); return;
} }
// Handle the window/tab becoming inactive *after* rendering has started; // Handle the window/tab becoming inactive *after* rendering has started;
@ -646,20 +646,17 @@ class PDFViewer {
return; return;
} }
resolve(); resolve();
document.removeEventListener(
"visibilitychange",
this.#onVisibilityChange
);
this.#onVisibilityChange = null;
}; };
document.addEventListener("visibilitychange", this.#onVisibilityChange); document.addEventListener("visibilitychange", this.#onVisibilityChange);
}); });
return Promise.race([ await Promise.race([
this._onePageRenderedCapability.promise, this._onePageRenderedCapability.promise,
visibilityChangePromise, visibilityChangePromise,
]); ]);
// Ensure that the "visibilitychange" listener is always removed.
document.removeEventListener("visibilitychange", this.#onVisibilityChange);
this.#onVisibilityChange = null;
} }
async getAllText() { async getAllText() {
@ -821,14 +818,6 @@ class PDFViewer {
this.eventBus._off("pagerendered", this._onAfterDraw); this.eventBus._off("pagerendered", this._onAfterDraw);
this._onAfterDraw = null; this._onAfterDraw = null;
if (this.#onVisibilityChange) {
document.removeEventListener(
"visibilitychange",
this.#onVisibilityChange
);
this.#onVisibilityChange = null;
}
}; };
this.eventBus._on("pagerendered", this._onAfterDraw); this.eventBus._on("pagerendered", this._onAfterDraw);