mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-10 02:05:37 +02:00
Use createPromiseCapability
in /web
files
In various viewer files, there's a number of cases where we basically duplicate the functionality of `createPromiseCapability` manually. As far as I can tell, a couple of these cases have existed for a very long time, and notable even before the `createPromiseCapability` utility function existed. Also, since we can write ES6 code now, the patch also replaces a couple of `bind` usages with arrow functions in code that's touched in the patch.
This commit is contained in:
parent
c6e8ca863e
commit
b0a4f6de8f
6 changed files with 62 additions and 83 deletions
|
@ -13,17 +13,15 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { createPromiseCapability, PDFJS } from './pdfjs';
|
||||
import {
|
||||
CSS_UNITS, DEFAULT_SCALE, DEFAULT_SCALE_VALUE, getVisibleElements,
|
||||
MAX_AUTO_SCALE, RendererType, SCROLLBAR_PADDING, scrollIntoView,
|
||||
UNKNOWN_SCALE, VERTICAL_PADDING, watchScroll
|
||||
} from './ui_utils';
|
||||
import {
|
||||
PDFRenderingQueue, RenderingStates,
|
||||
} from './pdf_rendering_queue';
|
||||
import { PDFRenderingQueue, RenderingStates } from './pdf_rendering_queue';
|
||||
import { AnnotationLayerBuilder } from './annotation_layer_builder';
|
||||
import { domEvents } from './dom_events';
|
||||
import { PDFJS } from './pdfjs';
|
||||
import { PDFPageView } from './pdf_page_view';
|
||||
import { SimpleLinkService } from './pdf_link_service';
|
||||
import { TextLayerBuilder } from './text_layer_builder';
|
||||
|
@ -313,41 +311,34 @@ var PDFViewer = (function pdfViewer() {
|
|||
if (!pdfDocument) {
|
||||
return;
|
||||
}
|
||||
|
||||
var pagesCount = pdfDocument.numPages;
|
||||
var self = this;
|
||||
|
||||
var resolvePagesPromise;
|
||||
var pagesPromise = new Promise(function (resolve) {
|
||||
resolvePagesPromise = resolve;
|
||||
});
|
||||
this.pagesPromise = pagesPromise;
|
||||
pagesPromise.then(function () {
|
||||
self._pageViewsReady = true;
|
||||
self.eventBus.dispatch('pagesloaded', {
|
||||
source: self,
|
||||
pagesCount: pagesCount
|
||||
var pagesCapability = createPromiseCapability();
|
||||
this.pagesPromise = pagesCapability.promise;
|
||||
|
||||
pagesCapability.promise.then(() => {
|
||||
this._pageViewsReady = true;
|
||||
this.eventBus.dispatch('pagesloaded', {
|
||||
source: this,
|
||||
pagesCount,
|
||||
});
|
||||
});
|
||||
|
||||
var isOnePageRenderedResolved = false;
|
||||
var resolveOnePageRendered = null;
|
||||
var onePageRendered = new Promise(function (resolve) {
|
||||
resolveOnePageRendered = resolve;
|
||||
});
|
||||
this.onePageRendered = onePageRendered;
|
||||
var onePageRenderedCapability = createPromiseCapability();
|
||||
this.onePageRendered = onePageRenderedCapability.promise;
|
||||
|
||||
var bindOnAfterAndBeforeDraw = function (pageView) {
|
||||
pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() {
|
||||
var bindOnAfterAndBeforeDraw = (pageView) => {
|
||||
pageView.onBeforeDraw = () => {
|
||||
// Add the page to the buffer at the start of drawing. That way it can
|
||||
// be evicted from the buffer and destroyed even if we pause its
|
||||
// rendering.
|
||||
self._buffer.push(this);
|
||||
this._buffer.push(pageView);
|
||||
};
|
||||
pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() {
|
||||
pageView.onAfterDraw = () => {
|
||||
if (!isOnePageRenderedResolved) {
|
||||
isOnePageRenderedResolved = true;
|
||||
resolveOnePageRendered();
|
||||
onePageRenderedCapability.resolve();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -357,7 +348,7 @@ var PDFViewer = (function pdfViewer() {
|
|||
|
||||
// Fetch a single page so we can get a viewport that will be the default
|
||||
// viewport for all pages
|
||||
return firstPagePromise.then(function(pdfPage) {
|
||||
return firstPagePromise.then((pdfPage) => {
|
||||
var scale = this.currentScale;
|
||||
var viewport = pdfPage.getViewport(scale * CSS_UNITS);
|
||||
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
|
||||
|
@ -382,34 +373,31 @@ var PDFViewer = (function pdfViewer() {
|
|||
this._pages.push(pageView);
|
||||
}
|
||||
|
||||
var linkService = this.linkService;
|
||||
|
||||
// Fetch all the pages since the viewport is needed before printing
|
||||
// starts to create the correct size canvas. Wait until one page is
|
||||
// rendered so we don't tie up too many resources early on.
|
||||
onePageRendered.then(function () {
|
||||
if (!PDFJS.disableAutoFetch) {
|
||||
var getPagesLeft = pagesCount;
|
||||
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
|
||||
pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) {
|
||||
var pageView = self._pages[pageNum - 1];
|
||||
if (!pageView.pdfPage) {
|
||||
pageView.setPdfPage(pdfPage);
|
||||
}
|
||||
linkService.cachePageRef(pageNum, pdfPage.ref);
|
||||
getPagesLeft--;
|
||||
if (!getPagesLeft) {
|
||||
resolvePagesPromise();
|
||||
}
|
||||
}.bind(null, pageNum));
|
||||
}
|
||||
} else {
|
||||
onePageRenderedCapability.promise.then(() => {
|
||||
if (PDFJS.disableAutoFetch) {
|
||||
// XXX: Printing is semi-broken with auto fetch disabled.
|
||||
resolvePagesPromise();
|
||||
pagesCapability.resolve();
|
||||
return;
|
||||
}
|
||||
var getPagesLeft = pagesCount;
|
||||
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
|
||||
pdfDocument.getPage(pageNum).then(function(pageNum, pdfPage) {
|
||||
var pageView = this._pages[pageNum - 1];
|
||||
if (!pageView.pdfPage) {
|
||||
pageView.setPdfPage(pdfPage);
|
||||
}
|
||||
this.linkService.cachePageRef(pageNum, pdfPage.ref);
|
||||
if (--getPagesLeft === 0) {
|
||||
pagesCapability.resolve();
|
||||
}
|
||||
}.bind(this, pageNum));
|
||||
}
|
||||
});
|
||||
|
||||
self.eventBus.dispatch('pagesinit', {source: self});
|
||||
this.eventBus.dispatch('pagesinit', { source: this });
|
||||
|
||||
if (this.defaultRenderingQueue) {
|
||||
this.update();
|
||||
|
@ -418,7 +406,7 @@ var PDFViewer = (function pdfViewer() {
|
|||
if (this.findController) {
|
||||
this.findController.resolveFirstPage();
|
||||
}
|
||||
}.bind(this));
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue