mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-07-24 16:07:22 +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 {
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user