[GeckoView] Avoid unused outline, attachments, and layers fetching

Currently there's no UI for this functionality in the GV-viewer, however we still call the API methods. This potentially leads to a bunch of worker-thread parsing, for PDF documents with these features, despite the result being completely unused.
Given that mobile devices are usually more resource constrained than desktop/laptop computers, not to mentioned battery life, we can avoid doing work that'll just be ignored anyway.
This commit is contained in:
Jonas Jenwald 2023-02-07 12:30:05 +01:00
parent 05d821e680
commit 0cf4fbd471

View File

@ -1336,26 +1336,32 @@ const PDFViewerApplication = {
timestamp: data.timestamp, timestamp: data.timestamp,
}); });
if (this.pdfOutlineViewer) {
pdfDocument.getOutline().then(outline => { pdfDocument.getOutline().then(outline => {
if (pdfDocument !== this.pdfDocument) { if (pdfDocument !== this.pdfDocument) {
return; // The document was closed while the outline resolved. return; // The document was closed while the outline resolved.
} }
this.pdfOutlineViewer?.render({ outline, pdfDocument }); this.pdfOutlineViewer.render({ outline, pdfDocument });
}); });
}
if (this.pdfAttachmentViewer) {
pdfDocument.getAttachments().then(attachments => { pdfDocument.getAttachments().then(attachments => {
if (pdfDocument !== this.pdfDocument) { if (pdfDocument !== this.pdfDocument) {
return; // The document was closed while the attachments resolved. return; // The document was closed while the attachments resolved.
} }
this.pdfAttachmentViewer?.render({ attachments }); this.pdfAttachmentViewer.render({ attachments });
}); });
}
if (this.pdfLayerViewer) {
// Ensure that the layers accurately reflects the current state in the // Ensure that the layers accurately reflects the current state in the
// viewer itself, rather than the default state provided by the API. // viewer itself, rather than the default state provided by the API.
pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {
if (pdfDocument !== this.pdfDocument) { if (pdfDocument !== this.pdfDocument) {
return; // The document was closed while the layers resolved. return; // The document was closed while the layers resolved.
} }
this.pdfLayerViewer?.render({ optionalContentConfig, pdfDocument }); this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });
}); });
}
}); });
this._initializePageLabels(pdfDocument); this._initializePageLabels(pdfDocument);