mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-10 02:05:37 +02:00
Introduces LegacyPromise; polyfills DOM Promise
This commit is contained in:
parent
122cd150d4
commit
5bf3e44e30
20 changed files with 263 additions and 156 deletions
|
@ -19,7 +19,7 @@
|
|||
getFileName, scrollIntoView, getPDFFileNameFromURL, PDFHistory,
|
||||
Preferences, ViewHistory, PageView, ThumbnailView,
|
||||
noContextMenuHandler, SecondaryToolbar, PasswordPrompt,
|
||||
PresentationMode, HandTool */
|
||||
PresentationMode, HandTool, Promise */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -787,12 +787,17 @@ var PDFView = {
|
|||
|
||||
load: function pdfViewLoad(pdfDocument, scale) {
|
||||
var self = this;
|
||||
var onePageRendered = new PDFJS.Promise();
|
||||
var isOnePageRenderedResolved = false;
|
||||
var resolveOnePageRendered = null;
|
||||
var onePageRendered = new Promise(function (resolve) {
|
||||
resolveOnePageRendered = resolve;
|
||||
});
|
||||
function bindOnAfterDraw(pageView, thumbnailView) {
|
||||
// when page is painted, using the image as thumbnail base
|
||||
pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() {
|
||||
if (!onePageRendered.isResolved) {
|
||||
onePageRendered.resolve();
|
||||
if (!isOnePageRenderedResolved) {
|
||||
isOnePageRenderedResolved = true;
|
||||
resolveOnePageRendered();
|
||||
}
|
||||
thumbnailView.setImage(pageView.canvas);
|
||||
};
|
||||
|
@ -841,7 +846,11 @@ var PDFView = {
|
|||
var pagesRefMap = this.pagesRefMap = {};
|
||||
var thumbnails = this.thumbnails = [];
|
||||
|
||||
var pagesPromise = this.pagesPromise = new PDFJS.Promise();
|
||||
var resolvePagesPromise;
|
||||
var pagesPromise = new Promise(function (resolve) {
|
||||
resolvePagesPromise = resolve;
|
||||
});
|
||||
this.pagesPromise = pagesPromise;
|
||||
|
||||
var firstPagePromise = pdfDocument.getPage(1);
|
||||
|
||||
|
@ -877,13 +886,13 @@ var PDFView = {
|
|||
pagesRefMap[refStr] = pageNum;
|
||||
getPagesLeft--;
|
||||
if (!getPagesLeft) {
|
||||
pagesPromise.resolve();
|
||||
resolvePagesPromise();
|
||||
}
|
||||
}.bind(null, pageNum));
|
||||
}
|
||||
} else {
|
||||
// XXX: Printing is semi-broken with auto fetch disabled.
|
||||
pagesPromise.resolve();
|
||||
resolvePagesPromise();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -893,12 +902,12 @@ var PDFView = {
|
|||
|
||||
PDFView.loadingBar.setWidth(container);
|
||||
|
||||
PDFFindController.firstPagePromise.resolve();
|
||||
PDFFindController.resolveFirstPage();
|
||||
});
|
||||
|
||||
var prefsPromise = prefs.initializedPromise;
|
||||
var storePromise = store.initializedPromise;
|
||||
PDFJS.Promise.all([firstPagePromise, prefsPromise, storePromise]).
|
||||
Promise.all([firstPagePromise, prefsPromise, storePromise]).
|
||||
then(function() {
|
||||
var showPreviousViewOnLoad = prefs.get('showPreviousViewOnLoad');
|
||||
var defaultZoomValue = prefs.get('defaultZoomValue');
|
||||
|
@ -961,7 +970,7 @@ var PDFView = {
|
|||
// outline depends on destinations and pagesRefMap
|
||||
var promises = [pagesPromise, destinationsPromise,
|
||||
PDFView.animationStartedPromise];
|
||||
PDFJS.Promise.all(promises).then(function() {
|
||||
Promise.all(promises).then(function() {
|
||||
pdfDocument.getOutline().then(function(outline) {
|
||||
self.outline = new DocumentOutlineView(outline);
|
||||
document.getElementById('viewOutline').disabled = !outline;
|
||||
|
@ -2212,9 +2221,10 @@ window.addEventListener('afterprint', function afterPrint(evt) {
|
|||
window.oRequestAnimationFrame ||
|
||||
window.msRequestAnimationFrame ||
|
||||
function startAtOnce(callback) { callback(); };
|
||||
PDFView.animationStartedPromise = new PDFJS.Promise();
|
||||
requestAnimationFrame(function onAnimationFrame() {
|
||||
PDFView.animationStartedPromise.resolve();
|
||||
PDFView.animationStartedPromise = new Promise(function (resolve) {
|
||||
requestAnimationFrame(function onAnimationFrame() {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue