Small clean-up of the PDFDocumentProxy.destroy
method and related code
Note how `PDFDocumentProxy.destroy` is a nothing more than an alias for `PDFDocumentLoadingTask.destroy`. While removing the latter method would be a breaking API change, there's still room for at least some clean-up here. The main changes in this patch are: - Stop providing a `PDFDocumentLoadingTask` instance *separately* when creating a `PDFDocumentProxy`, since the loadingTask is already available through the `WorkerTransport` instance. - Stop tracking the `PDFDocumentProxy` instance on the `WorkerTransport`, since that property is completely unused. - Simplify the 'Multiple `getDocument` instances' unit-tests by only destroying *once*, rather than twice, for each document.
This commit is contained in:
parent
d587abbceb
commit
24fc4f83ca
@ -574,9 +574,7 @@ class PDFDataRangeTransport {
|
|||||||
* properties that can be read synchronously.
|
* properties that can be read synchronously.
|
||||||
*/
|
*/
|
||||||
class PDFDocumentProxy {
|
class PDFDocumentProxy {
|
||||||
constructor(pdfInfo, transport, loadingTask) {
|
constructor(pdfInfo, transport) {
|
||||||
this.loadingTask = loadingTask;
|
|
||||||
|
|
||||||
this._pdfInfo = pdfInfo;
|
this._pdfInfo = pdfInfo;
|
||||||
this._transport = transport;
|
this._transport = transport;
|
||||||
}
|
}
|
||||||
@ -761,6 +759,13 @@ class PDFDocumentProxy {
|
|||||||
get loadingParams() {
|
get loadingParams() {
|
||||||
return this._transport.loadingParams;
|
return this._transport.loadingParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {PDFDocumentLoadingTask} The loadingTask for the current document.
|
||||||
|
*/
|
||||||
|
get loadingTask() {
|
||||||
|
return this._transport.loadingTask;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1827,9 +1832,8 @@ class WorkerTransport {
|
|||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
messageHandler.on('GetDoc', function({ pdfInfo, }) {
|
messageHandler.on('GetDoc', function({ pdfInfo, }) {
|
||||||
this.numPages = pdfInfo.numPages;
|
this._numPages = pdfInfo.numPages;
|
||||||
this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
|
loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
|
||||||
loadingTask._capability.resolve(this.pdfDocument);
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
messageHandler.on('PasswordRequest', function(exception) {
|
messageHandler.on('PasswordRequest', function(exception) {
|
||||||
@ -2130,7 +2134,7 @@ class WorkerTransport {
|
|||||||
|
|
||||||
getPage(pageNumber) {
|
getPage(pageNumber) {
|
||||||
if (!Number.isInteger(pageNumber) ||
|
if (!Number.isInteger(pageNumber) ||
|
||||||
pageNumber <= 0 || pageNumber > this.numPages) {
|
pageNumber <= 0 || pageNumber > this._numPages) {
|
||||||
return Promise.reject(new Error('Invalid page request'));
|
return Promise.reject(new Error('Invalid page request'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -954,7 +954,7 @@ describe('api', function() {
|
|||||||
return _checkCanLoad(false, filename, options);
|
return _checkCanLoad(false, filename, options);
|
||||||
}
|
}
|
||||||
afterEach(function(done) {
|
afterEach(function(done) {
|
||||||
if (loadingTask) {
|
if (loadingTask && !loadingTask.destroyed) {
|
||||||
loadingTask.destroy().then(done);
|
loadingTask.destroy().then(done);
|
||||||
} else {
|
} else {
|
||||||
done();
|
done();
|
||||||
@ -1385,7 +1385,6 @@ describe('api', function() {
|
|||||||
// A PDF using the Arial font.
|
// A PDF using the Arial font.
|
||||||
var pdf3 = buildGetDocumentParams('issue6068.pdf');
|
var pdf3 = buildGetDocumentParams('issue6068.pdf');
|
||||||
var loadingTasks = [];
|
var loadingTasks = [];
|
||||||
var pdfDocuments = [];
|
|
||||||
|
|
||||||
// Render the first page of the given PDF file.
|
// Render the first page of the given PDF file.
|
||||||
// Fulfills the promise with the base64-encoded version of the PDF.
|
// Fulfills the promise with the base64-encoded version of the PDF.
|
||||||
@ -1393,7 +1392,6 @@ describe('api', function() {
|
|||||||
const loadingTask = getDocument(filename);
|
const loadingTask = getDocument(filename);
|
||||||
loadingTasks.push(loadingTask);
|
loadingTasks.push(loadingTask);
|
||||||
const pdf = await loadingTask.promise;
|
const pdf = await loadingTask.promise;
|
||||||
pdfDocuments.push(pdf);
|
|
||||||
const page = await pdf.getPage(1);
|
const page = await pdf.getPage(1);
|
||||||
const viewport = page.getViewport({ scale: 1.2, });
|
const viewport = page.getViewport({ scale: 1.2, });
|
||||||
const canvasAndCtx = CanvasFactory.create(viewport.width,
|
const canvasAndCtx = CanvasFactory.create(viewport.width,
|
||||||
@ -1413,18 +1411,10 @@ describe('api', function() {
|
|||||||
// Issue 6205 reported an issue with font rendering, so clear the loaded
|
// Issue 6205 reported an issue with font rendering, so clear the loaded
|
||||||
// fonts so that we can see whether loading PDFs in parallel does not
|
// fonts so that we can see whether loading PDFs in parallel does not
|
||||||
// cause any issues with the rendered fonts.
|
// cause any issues with the rendered fonts.
|
||||||
var destroyPromises = pdfDocuments.map(function(pdfDocument) {
|
const destroyPromises = loadingTasks.map(function(loadingTask) {
|
||||||
return pdfDocument.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Destroy the workers.
|
|
||||||
var destroyPromises2 = loadingTasks.map(function(loadingTask) {
|
|
||||||
return loadingTask.destroy();
|
return loadingTask.destroy();
|
||||||
});
|
});
|
||||||
|
Promise.all(destroyPromises).then(done);
|
||||||
Promise.all(destroyPromises.concat(destroyPromises2)).then(function() {
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should correctly render PDFs in parallel', function(done) {
|
it('should correctly render PDFs in parallel', function(done) {
|
||||||
|
Loading…
Reference in New Issue
Block a user