Merge pull request #18898 from Snuffleupagus/PDFViewerApplication-bindEvents-opts

Create fewer Objects in `PDFViewerApplication.bindEvents`
This commit is contained in:
Tim van der Meij 2024-10-15 20:34:45 +02:00 committed by GitHub
commit e8149b3982
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1870,7 +1870,8 @@ const PDFViewerApplication = {
if (this._eventBusAbortController) { if (this._eventBusAbortController) {
return; return;
} }
this._eventBusAbortController = new AbortController(); const ac = (this._eventBusAbortController = new AbortController());
const opts = { signal: ac.signal };
const { const {
eventBus, eventBus,
@ -1878,109 +1879,114 @@ const PDFViewerApplication = {
pdfDocumentProperties, pdfDocumentProperties,
pdfViewer, pdfViewer,
preferences, preferences,
_eventBusAbortController: { signal },
} = this; } = this;
eventBus._on("resize", onResize.bind(this), { signal }); eventBus._on("resize", onResize.bind(this), opts);
eventBus._on("hashchange", onHashchange.bind(this), { signal }); eventBus._on("hashchange", onHashchange.bind(this), opts);
eventBus._on("beforeprint", this.beforePrint.bind(this), { signal }); eventBus._on("beforeprint", this.beforePrint.bind(this), opts);
eventBus._on("afterprint", this.afterPrint.bind(this), { signal }); eventBus._on("afterprint", this.afterPrint.bind(this), opts);
eventBus._on("pagerender", onPageRender.bind(this), { signal }); eventBus._on("pagerender", onPageRender.bind(this), opts);
eventBus._on("pagerendered", onPageRendered.bind(this), { signal }); eventBus._on("pagerendered", onPageRendered.bind(this), opts);
eventBus._on("updateviewarea", onUpdateViewarea.bind(this), { signal }); eventBus._on("updateviewarea", onUpdateViewarea.bind(this), opts);
eventBus._on("pagechanging", onPageChanging.bind(this), { signal }); eventBus._on("pagechanging", onPageChanging.bind(this), opts);
eventBus._on("scalechanging", onScaleChanging.bind(this), { signal }); eventBus._on("scalechanging", onScaleChanging.bind(this), opts);
eventBus._on("rotationchanging", onRotationChanging.bind(this), { signal }); eventBus._on("rotationchanging", onRotationChanging.bind(this), opts);
eventBus._on("sidebarviewchanged", onSidebarViewChanged.bind(this), { eventBus._on("sidebarviewchanged", onSidebarViewChanged.bind(this), opts);
signal, eventBus._on("pagemode", onPageMode.bind(this), opts);
}); eventBus._on("namedaction", onNamedAction.bind(this), opts);
eventBus._on("pagemode", onPageMode.bind(this), { signal });
eventBus._on("namedaction", onNamedAction.bind(this), { signal });
eventBus._on( eventBus._on(
"presentationmodechanged", "presentationmodechanged",
evt => (pdfViewer.presentationModeState = evt.state), evt => (pdfViewer.presentationModeState = evt.state),
{ signal } opts
);
eventBus._on(
"presentationmode",
this.requestPresentationMode.bind(this),
opts
); );
eventBus._on("presentationmode", this.requestPresentationMode.bind(this), {
signal,
});
eventBus._on( eventBus._on(
"switchannotationeditormode", "switchannotationeditormode",
evt => (pdfViewer.annotationEditorMode = evt), evt => (pdfViewer.annotationEditorMode = evt),
{ signal } opts
); );
eventBus._on("print", this.triggerPrinting.bind(this), { signal }); eventBus._on("print", this.triggerPrinting.bind(this), opts);
eventBus._on("download", this.downloadOrSave.bind(this), { signal }); eventBus._on("download", this.downloadOrSave.bind(this), opts);
eventBus._on("firstpage", () => (this.page = 1), { signal }); eventBus._on("firstpage", () => (this.page = 1), opts);
eventBus._on("lastpage", () => (this.page = this.pagesCount), { signal }); eventBus._on("lastpage", () => (this.page = this.pagesCount), opts);
eventBus._on("nextpage", () => pdfViewer.nextPage(), { signal }); eventBus._on("nextpage", () => pdfViewer.nextPage(), opts);
eventBus._on("previouspage", () => pdfViewer.previousPage(), { signal }); eventBus._on("previouspage", () => pdfViewer.previousPage(), opts);
eventBus._on("zoomin", this.zoomIn.bind(this), { signal }); eventBus._on("zoomin", this.zoomIn.bind(this), opts);
eventBus._on("zoomout", this.zoomOut.bind(this), { signal }); eventBus._on("zoomout", this.zoomOut.bind(this), opts);
eventBus._on("zoomreset", this.zoomReset.bind(this), { signal }); eventBus._on("zoomreset", this.zoomReset.bind(this), opts);
eventBus._on("pagenumberchanged", onPageNumberChanged.bind(this), { eventBus._on("pagenumberchanged", onPageNumberChanged.bind(this), opts);
signal,
});
eventBus._on( eventBus._on(
"scalechanged", "scalechanged",
evt => (pdfViewer.currentScaleValue = evt.value), evt => (pdfViewer.currentScaleValue = evt.value),
{ signal } opts
); );
eventBus._on("rotatecw", this.rotatePages.bind(this, 90), { signal }); eventBus._on("rotatecw", this.rotatePages.bind(this, 90), opts);
eventBus._on("rotateccw", this.rotatePages.bind(this, -90), { signal }); eventBus._on("rotateccw", this.rotatePages.bind(this, -90), opts);
eventBus._on( eventBus._on(
"optionalcontentconfig", "optionalcontentconfig",
evt => (pdfViewer.optionalContentConfigPromise = evt.promise), evt => (pdfViewer.optionalContentConfigPromise = evt.promise),
{ signal } opts
);
eventBus._on(
"switchscrollmode",
evt => (pdfViewer.scrollMode = evt.mode),
opts
); );
eventBus._on("switchscrollmode", evt => (pdfViewer.scrollMode = evt.mode), {
signal,
});
eventBus._on( eventBus._on(
"scrollmodechanged", "scrollmodechanged",
onViewerModesChanged.bind(this, "scrollMode"), onViewerModesChanged.bind(this, "scrollMode"),
{ signal } opts
);
eventBus._on(
"switchspreadmode",
evt => (pdfViewer.spreadMode = evt.mode),
opts
); );
eventBus._on("switchspreadmode", evt => (pdfViewer.spreadMode = evt.mode), {
signal,
});
eventBus._on( eventBus._on(
"spreadmodechanged", "spreadmodechanged",
onViewerModesChanged.bind(this, "spreadMode"), onViewerModesChanged.bind(this, "spreadMode"),
{ signal } opts
); );
eventBus._on("imagealttextsettings", onImageAltTextSettings.bind(this), { eventBus._on(
signal, "imagealttextsettings",
}); onImageAltTextSettings.bind(this),
eventBus._on("documentproperties", () => pdfDocumentProperties?.open(), { opts
signal, );
}); eventBus._on(
eventBus._on("findfromurlhash", onFindFromUrlHash.bind(this), { signal }); "documentproperties",
() => pdfDocumentProperties?.open(),
opts
);
eventBus._on("findfromurlhash", onFindFromUrlHash.bind(this), opts);
eventBus._on( eventBus._on(
"updatefindmatchescount", "updatefindmatchescount",
onUpdateFindMatchesCount.bind(this), onUpdateFindMatchesCount.bind(this),
{ signal } opts
); );
eventBus._on( eventBus._on(
"updatefindcontrolstate", "updatefindcontrolstate",
onUpdateFindControlState.bind(this), onUpdateFindControlState.bind(this),
{ signal } opts
); );
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
eventBus._on("fileinputchange", onFileInputChange.bind(this), { signal }); eventBus._on("fileinputchange", onFileInputChange.bind(this), opts);
eventBus._on("openfile", onOpenFile.bind(this), { signal }); eventBus._on("openfile", onOpenFile.bind(this), opts);
} }
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
eventBus._on( eventBus._on(
"annotationeditorstateschanged", "annotationeditorstateschanged",
evt => externalServices.updateEditorStates(evt), evt => externalServices.updateEditorStates(evt),
{ signal } opts
); );
eventBus._on( eventBus._on(
"reporttelemetry", "reporttelemetry",
evt => externalServices.reportTelemetry(evt.details), evt => externalServices.reportTelemetry(evt.details),
{ signal } opts
); );
} }
if ( if (
@ -1990,7 +1996,7 @@ const PDFViewerApplication = {
eventBus._on( eventBus._on(
"setpreference", "setpreference",
evt => preferences.set(evt.name, evt.value), evt => preferences.set(evt.name, evt.value),
{ signal } opts
); );
} }
}, },