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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user