mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-04-15 17:54:04 +02:00
Merge pull request #21028 from Snuffleupagus/PDFDataRangeTransport-listener
[api-minor] Change `PDFDataRangeTransport` to use a single (internal) listener
This commit is contained in:
commit
255c3e7c14
@ -607,11 +607,7 @@ class PDFDocumentLoadingTask {
|
||||
class PDFDataRangeTransport {
|
||||
#capability = Promise.withResolvers();
|
||||
|
||||
#progressiveDoneListeners = [];
|
||||
|
||||
#progressiveReadListeners = [];
|
||||
|
||||
#rangeListeners = [];
|
||||
#listener = null;
|
||||
|
||||
/**
|
||||
* @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 {Uint8Array|null} chunk
|
||||
*/
|
||||
onDataRange(begin, chunk) {
|
||||
for (const listener of this.#rangeListeners) {
|
||||
listener(begin, chunk);
|
||||
}
|
||||
this.#listener({ type: "range", begin, chunk });
|
||||
}
|
||||
|
||||
/**
|
||||
@ -679,21 +652,18 @@ class PDFDataRangeTransport {
|
||||
*/
|
||||
onDataProgressiveRead(chunk) {
|
||||
this.#capability.promise.then(() => {
|
||||
for (const listener of this.#progressiveReadListeners) {
|
||||
listener(chunk);
|
||||
}
|
||||
this.#listener({ type: "progressiveRead", chunk });
|
||||
});
|
||||
}
|
||||
|
||||
onDataProgressiveDone() {
|
||||
this.#capability.promise.then(() => {
|
||||
for (const listener of this.#progressiveDoneListeners) {
|
||||
listener();
|
||||
}
|
||||
this.#listener({ type: "progressiveDone" });
|
||||
});
|
||||
}
|
||||
|
||||
transportReady() {
|
||||
transportReady(listener) {
|
||||
this.#listener = listener;
|
||||
this.#capability.resolve();
|
||||
}
|
||||
|
||||
|
||||
@ -56,20 +56,19 @@ class PDFDataTransportStream extends BasePDFStream {
|
||||
}
|
||||
this._progressiveDone = progressiveDone;
|
||||
|
||||
pdfDataRangeTransport.addRangeListener((begin, chunk) => {
|
||||
this.#onReceiveData(begin, chunk);
|
||||
});
|
||||
|
||||
pdfDataRangeTransport.addProgressiveReadListener(chunk => {
|
||||
this.#onReceiveData(/* begin = */ undefined, chunk);
|
||||
});
|
||||
|
||||
pdfDataRangeTransport.addProgressiveDoneListener(() => {
|
||||
this._fullReader?.progressiveDone();
|
||||
this._progressiveDone = true;
|
||||
});
|
||||
|
||||
pdfDataRangeTransport.transportReady();
|
||||
const listener = args => {
|
||||
switch (args.type) {
|
||||
case "range":
|
||||
case "progressiveRead":
|
||||
this.#onReceiveData(args.begin, args.chunk);
|
||||
break;
|
||||
case "progressiveDone":
|
||||
this._fullReader?.progressiveDone();
|
||||
this._progressiveDone = true;
|
||||
break;
|
||||
}
|
||||
};
|
||||
pdfDataRangeTransport.transportReady(listener);
|
||||
}
|
||||
|
||||
#onReceiveData(begin, chunk) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user