Add tests for parallel rendering
This commit is contained in:
parent
c2dfe9e9a9
commit
07f2a43943
@ -1,7 +1,7 @@
|
|||||||
/* globals PDFJS, expect, it, describe, Promise, combineUrl, waitsFor,
|
/* globals PDFJS, expect, it, describe, Promise, combineUrl, waitsFor,
|
||||||
InvalidPDFException, MissingPDFException, StreamType, FontType,
|
InvalidPDFException, MissingPDFException, StreamType, FontType,
|
||||||
PDFDocumentProxy, PasswordException, PasswordResponses,
|
PDFDocumentProxy, PasswordException, PasswordResponses,
|
||||||
PDFPageProxy, createPromiseCapability */
|
PDFPageProxy, createPromiseCapability, afterEach */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ describe('api', function() {
|
|||||||
},
|
},
|
||||||
function(error) {
|
function(error) {
|
||||||
// Shouldn't get here.
|
// Shouldn't get here.
|
||||||
expect(false).toEqual(true);
|
expect(error).toEqual('the promise should not have been rejected');
|
||||||
});
|
});
|
||||||
waitsFor(function() {
|
waitsFor(function() {
|
||||||
return resolved;
|
return resolved;
|
||||||
@ -513,4 +513,69 @@ describe('api', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('Multiple PDFJS instances', function() {
|
||||||
|
// Regression test for https://github.com/mozilla/pdf.js/issues/6205
|
||||||
|
// A PDF using the Helvetica font.
|
||||||
|
var pdf1 = combineUrl(window.location.href, '../pdfs/tracemonkey.pdf');
|
||||||
|
// A PDF using the Times font.
|
||||||
|
var pdf2 = combineUrl(window.location.href, '../pdfs/TAMReview.pdf');
|
||||||
|
// A PDF using the Arial font.
|
||||||
|
var pdf3 = combineUrl(window.location.href, '../pdfs/issue6068.pdf');
|
||||||
|
var pdfDocuments = [];
|
||||||
|
|
||||||
|
// Render the first page of the given PDF file.
|
||||||
|
// Fulfills the promise with the base64-encoded version of the PDF.
|
||||||
|
function renderPDF(filename) {
|
||||||
|
return PDFJS.getDocument(filename)
|
||||||
|
.then(function(pdf) {
|
||||||
|
pdfDocuments.push(pdf);
|
||||||
|
return pdf.getPage(1);
|
||||||
|
}).then(function(page) {
|
||||||
|
var c = document.createElement('canvas');
|
||||||
|
var v = page.getViewport(1.2);
|
||||||
|
c.width = v.width;
|
||||||
|
c.height = v.height;
|
||||||
|
return page.render({
|
||||||
|
canvasContext: c.getContext('2d'),
|
||||||
|
viewport: v,
|
||||||
|
}).then(function() {
|
||||||
|
return c.toDataURL();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
afterEach(function() {
|
||||||
|
// 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
|
||||||
|
// cause any issues with the rendered fonts.
|
||||||
|
var destroyPromises = pdfDocuments.map(function(pdfDocument) {
|
||||||
|
return pdfDocument.destroy();
|
||||||
|
});
|
||||||
|
waitsForPromiseResolved(Promise.all(destroyPromises), function() {});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should correctly render PDFs in parallel', function() {
|
||||||
|
var baseline1, baseline2, baseline3;
|
||||||
|
var promiseDone = renderPDF(pdf1).then(function(data1) {
|
||||||
|
baseline1 = data1;
|
||||||
|
return renderPDF(pdf2);
|
||||||
|
}).then(function(data2) {
|
||||||
|
baseline2 = data2;
|
||||||
|
return renderPDF(pdf3);
|
||||||
|
}).then(function(data3) {
|
||||||
|
baseline3 = data3;
|
||||||
|
return Promise.all([
|
||||||
|
renderPDF(pdf1),
|
||||||
|
renderPDF(pdf2),
|
||||||
|
renderPDF(pdf3),
|
||||||
|
]);
|
||||||
|
}).then(function(dataUrls) {
|
||||||
|
expect(dataUrls[0]).toEqual(baseline1);
|
||||||
|
expect(dataUrls[1]).toEqual(baseline2);
|
||||||
|
expect(dataUrls[2]).toEqual(baseline3);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
waitsForPromiseResolved(promiseDone, function() {});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user