From 73e0daed6cfa51b80a8a04f225cb8e000c693052 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 18 Nov 2016 21:52:25 +0100 Subject: [PATCH] Let `finishPaintTask` in pdf_page_view.js return a promise instead, to avoid having to throw in the `paintTask.promise` rejection handler, and don't reject the `PDFPageView_draw` promise when rendering is `cancelled` As mentioned on IRC yesterday, we currently throw even when rendering is `cancelled`, which is annoying when the devtools are active. Furthermore, since `cancelled` isn't really an error, rejecting the `PDFPageView_draw` promise seems somewhat strange in that case. --- web/pdf_page_view.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 137f88432..d49d83746 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -423,7 +423,7 @@ var PDFPageView = (function PDFPageViewClosure() { if (error === 'cancelled') { self.error = null; - return; + return Promise.resolve(undefined); } self.renderingState = RenderingStates.FINISHED; @@ -459,6 +459,11 @@ var PDFPageView = (function PDFPageViewClosure() { pageNumber: self.id, cssTransform: false, }); + + if (error) { + return Promise.reject(error); + } + return Promise.resolve(undefined); }; var paintTask = this.renderer === RendererType.SVG ? @@ -468,18 +473,18 @@ var PDFPageView = (function PDFPageViewClosure() { this.paintTask = paintTask; var resultPromise = paintTask.promise.then(function () { - finishPaintTask(null); - if (textLayer) { - pdfPage.getTextContent({ - normalizeWhitespace: true, - }).then(function textContentResolved(textContent) { - textLayer.setTextContent(textContent); - textLayer.render(TEXT_LAYER_RENDER_DELAY); - }); - } + return finishPaintTask(null).then(function () { + if (textLayer) { + pdfPage.getTextContent({ + normalizeWhitespace: true, + }).then(function textContentResolved(textContent) { + textLayer.setTextContent(textContent); + textLayer.render(TEXT_LAYER_RENDER_DELAY); + }); + } + }); }, function (reason) { - finishPaintTask(reason); - throw reason; + return finishPaintTask(reason); }); if (this.annotationLayerFactory) {