Remove the closure used with the PDFDocumentLoadingTask
class
This patch utilizes the same approach as used in lots of other parts of the code-base, which thus *slightly* reduces the size of this code. By removing some of the (current) indirection, we can also simplify the JSDocs a little bit. Looking at the `gulp jsdoc` output, this actually seem to *improve* the documentation for this class.
This commit is contained in:
parent
4ad5c5d52a
commit
b18620ac0f
@ -524,41 +524,12 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
|
||||
* The loading task controls the operations required to load a PDF document
|
||||
* (such as network requests) and provides a way to listen for completion,
|
||||
* after which individual pages can be rendered.
|
||||
*
|
||||
* @typedef {Object} PDFDocumentLoadingTask
|
||||
* @property {string} docId - Unique identifier for the document loading task.
|
||||
* @property {boolean} destroyed - Whether the loading task is destroyed or not.
|
||||
* @property {function} [onPassword] - Callback to request a password if a wrong
|
||||
* or no password was provided. The callback receives two parameters: a
|
||||
* function that should be called with the new password, and a reason (see
|
||||
* {@link PasswordResponses}).
|
||||
* @property {function} [onProgress] - Callback to be able to monitor the
|
||||
* loading progress of the PDF file (necessary to implement e.g. a loading
|
||||
* bar). The callback receives an {@link OnProgressParameters} argument.
|
||||
* @property {function} [onUnsupportedFeature] - Callback for when an
|
||||
* unsupported feature is used in the PDF document. The callback receives an
|
||||
* {@link UNSUPPORTED_FEATURES} argument.
|
||||
* @property {Promise<PDFDocumentProxy>} promise - Promise for document loading
|
||||
* task completion.
|
||||
* @property {function} destroy - Abort all network requests and destroy
|
||||
* the worker. Returns a promise that is resolved when destruction is
|
||||
* completed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @type {any}
|
||||
* @ignore
|
||||
*/
|
||||
const PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
|
||||
let nextDocumentId = 0;
|
||||
|
||||
/**
|
||||
* The loading task controls the operations required to load a PDF document
|
||||
* (such as network requests) and provides a way to listen for completion,
|
||||
* after which individual pages can be rendered.
|
||||
*/
|
||||
// eslint-disable-next-line no-shadow
|
||||
class PDFDocumentLoadingTask {
|
||||
static get idCounters() {
|
||||
return shadow(this, "idCounters", { doc: 0 });
|
||||
}
|
||||
|
||||
constructor() {
|
||||
this._capability = createPromiseCapability();
|
||||
this._transport = null;
|
||||
@ -568,7 +539,7 @@ const PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
|
||||
* Unique identifier for the document loading task.
|
||||
* @type {string}
|
||||
*/
|
||||
this.docId = "d" + nextDocumentId++;
|
||||
this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;
|
||||
|
||||
/**
|
||||
* Whether the loading task is destroyed or not.
|
||||
@ -609,6 +580,7 @@ const PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Abort all network requests and destroy the worker.
|
||||
* @returns {Promise<void>} A promise that is resolved when destruction is
|
||||
* completed.
|
||||
*/
|
||||
@ -627,8 +599,6 @@ const PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
|
||||
});
|
||||
}
|
||||
}
|
||||
return PDFDocumentLoadingTask;
|
||||
})();
|
||||
|
||||
/**
|
||||
* Abstract class to support range requests file loading.
|
||||
|
@ -385,6 +385,26 @@ describe("api", function () {
|
||||
|
||||
await loadingTask.destroy();
|
||||
});
|
||||
|
||||
it("checks that `docId`s are unique and increasing", async function () {
|
||||
const loadingTask1 = getDocument(basicApiGetDocumentParams);
|
||||
await loadingTask1.promise;
|
||||
const docId1 = loadingTask1.docId;
|
||||
|
||||
const loadingTask2 = getDocument(basicApiGetDocumentParams);
|
||||
await loadingTask2.promise;
|
||||
const docId2 = loadingTask2.docId;
|
||||
|
||||
expect(docId1).not.toEqual(docId2);
|
||||
|
||||
const docIdRegExp = /^d(\d)+$/,
|
||||
docNum1 = docIdRegExp.exec(docId1)?.[1],
|
||||
docNum2 = docIdRegExp.exec(docId2)?.[1];
|
||||
|
||||
expect(+docNum1).toBeLessThan(+docNum2);
|
||||
|
||||
await Promise.all([loadingTask1.destroy(), loadingTask2.destroy()]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("PDFWorker", function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user