mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-23 08:38:06 +02:00
Inline the flushChunks
helper function, used in getPdfManager
on the worker-thread
- This helper function has only a single call-site, and the function is fairly short. - It'll only be invoked if range requests are *disabled*, or if the entire PDF manages to load *before* the headers are resolved (which is very unlikely). Hence, by default, this helper function is not invoked. - By inlining the code we're able to utilize the existing error-handling at the call-site, rather than having to duplicate it, which further reduces the size of this code. Finally, while slightly unrelated, this patch also adds optional chaining in one spot in the file (PR 16424 follow-up).
This commit is contained in:
parent
06f3b2d0a6
commit
196f7d7df1
1 changed files with 13 additions and 22 deletions
|
@ -227,7 +227,8 @@ class WorkerMessageHandler {
|
|||
}
|
||||
|
||||
let pdfStream,
|
||||
cachedChunks = [];
|
||||
cachedChunks = [],
|
||||
loaded = 0;
|
||||
try {
|
||||
pdfStream = new PDFWorkerStream(handler);
|
||||
} catch (ex) {
|
||||
|
@ -263,30 +264,22 @@ class WorkerMessageHandler {
|
|||
cancelXHRs = null;
|
||||
});
|
||||
|
||||
let loaded = 0;
|
||||
const flushChunks = function () {
|
||||
const pdfFile = arrayBuffersToBytes(cachedChunks);
|
||||
if (length && pdfFile.length !== length) {
|
||||
warn("reported HTTP length is different from actual");
|
||||
}
|
||||
// the data is array, instantiating directly from it
|
||||
try {
|
||||
pdfManagerArgs.source = pdfFile;
|
||||
|
||||
newPdfManager = new LocalPdfManager(pdfManagerArgs);
|
||||
pdfManagerCapability.resolve(newPdfManager);
|
||||
} catch (ex) {
|
||||
pdfManagerCapability.reject(ex);
|
||||
}
|
||||
cachedChunks = [];
|
||||
};
|
||||
new Promise(function (resolve, reject) {
|
||||
const readChunk = function ({ value, done }) {
|
||||
try {
|
||||
ensureNotTerminated();
|
||||
if (done) {
|
||||
if (!newPdfManager) {
|
||||
flushChunks();
|
||||
const pdfFile = arrayBuffersToBytes(cachedChunks);
|
||||
cachedChunks = [];
|
||||
|
||||
if (length && pdfFile.length !== length) {
|
||||
warn("reported HTTP length is different from actual");
|
||||
}
|
||||
pdfManagerArgs.source = pdfFile;
|
||||
|
||||
newPdfManager = new LocalPdfManager(pdfManagerArgs);
|
||||
pdfManagerCapability.resolve(newPdfManager);
|
||||
}
|
||||
cancelXHRs = null;
|
||||
return;
|
||||
|
@ -854,9 +847,7 @@ class WorkerMessageHandler {
|
|||
} else {
|
||||
clearGlobalCaches();
|
||||
}
|
||||
if (cancelXHRs) {
|
||||
cancelXHRs(new AbortException("Worker was terminated."));
|
||||
}
|
||||
cancelXHRs?.(new AbortException("Worker was terminated."));
|
||||
|
||||
for (const task of WorkerTasks) {
|
||||
waitOn.push(task.finished);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue