Merge pull request #21028 from Snuffleupagus/PDFDataRangeTransport-listener

[api-minor] Change `PDFDataRangeTransport` to use a single (internal)  listener
This commit is contained in:
Tim van der Meij 2026-04-03 19:53:39 +02:00 committed by GitHub
commit 255c3e7c14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 50 deletions

View File

@ -607,11 +607,7 @@ class PDFDocumentLoadingTask {
class PDFDataRangeTransport { class PDFDataRangeTransport {
#capability = Promise.withResolvers(); #capability = Promise.withResolvers();
#progressiveDoneListeners = []; #listener = null;
#progressiveReadListeners = [];
#rangeListeners = [];
/** /**
* @param {number} length * @param {number} length
@ -643,35 +639,12 @@ class PDFDataRangeTransport {
} }
} }
/**
* @param {function} listener
*/
addRangeListener(listener) {
this.#rangeListeners.push(listener);
}
/**
* @param {function} listener
*/
addProgressiveReadListener(listener) {
this.#progressiveReadListeners.push(listener);
}
/**
* @param {function} listener
*/
addProgressiveDoneListener(listener) {
this.#progressiveDoneListeners.push(listener);
}
/** /**
* @param {number} begin * @param {number} begin
* @param {Uint8Array|null} chunk * @param {Uint8Array|null} chunk
*/ */
onDataRange(begin, chunk) { onDataRange(begin, chunk) {
for (const listener of this.#rangeListeners) { this.#listener({ type: "range", begin, chunk });
listener(begin, chunk);
}
} }
/** /**
@ -679,21 +652,18 @@ class PDFDataRangeTransport {
*/ */
onDataProgressiveRead(chunk) { onDataProgressiveRead(chunk) {
this.#capability.promise.then(() => { this.#capability.promise.then(() => {
for (const listener of this.#progressiveReadListeners) { this.#listener({ type: "progressiveRead", chunk });
listener(chunk);
}
}); });
} }
onDataProgressiveDone() { onDataProgressiveDone() {
this.#capability.promise.then(() => { this.#capability.promise.then(() => {
for (const listener of this.#progressiveDoneListeners) { this.#listener({ type: "progressiveDone" });
listener();
}
}); });
} }
transportReady() { transportReady(listener) {
this.#listener = listener;
this.#capability.resolve(); this.#capability.resolve();
} }

View File

@ -56,20 +56,19 @@ class PDFDataTransportStream extends BasePDFStream {
} }
this._progressiveDone = progressiveDone; this._progressiveDone = progressiveDone;
pdfDataRangeTransport.addRangeListener((begin, chunk) => { const listener = args => {
this.#onReceiveData(begin, chunk); switch (args.type) {
}); case "range":
case "progressiveRead":
pdfDataRangeTransport.addProgressiveReadListener(chunk => { this.#onReceiveData(args.begin, args.chunk);
this.#onReceiveData(/* begin = */ undefined, chunk); break;
}); case "progressiveDone":
this._fullReader?.progressiveDone();
pdfDataRangeTransport.addProgressiveDoneListener(() => { this._progressiveDone = true;
this._fullReader?.progressiveDone(); break;
this._progressiveDone = true; }
}); };
pdfDataRangeTransport.transportReady(listener);
pdfDataRangeTransport.transportReady();
} }
#onReceiveData(begin, chunk) { #onReceiveData(begin, chunk) {