mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 01:58:06 +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
|
@ -15,7 +15,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
/* globals assert, MissingDataException, isInt, NetworkManager, Promise,
|
||||
isEmptyObj */
|
||||
isEmptyObj, LegacyPromise */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -258,7 +258,7 @@ var ChunkedStreamManager = (function ChunkedStreamManagerClosure() {
|
|||
this.requestsByChunk = {};
|
||||
this.callbacksByRequest = {};
|
||||
|
||||
this.loadedStream = new Promise();
|
||||
this.loadedStream = new LegacyPromise();
|
||||
if (args.initialData) {
|
||||
this.setInitialData(args.initialData);
|
||||
}
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
/* globals assertWellFormed, calculateMD5, Catalog, error, info, isArray,
|
||||
isArrayBuffer, isName, isStream, isString, Lexer,
|
||||
Linearization, NullStream, PartialEvaluator, shadow, Stream,
|
||||
isArrayBuffer, isName, isStream, isString, LegacyPromise,
|
||||
Linearization, NullStream, PartialEvaluator, shadow, Stream, Lexer,
|
||||
StreamsSequenceStream, stringToPDFString, stringToBytes, Util, XRef,
|
||||
MissingDataException, Promise, Annotation, ObjectLoader, OperatorList
|
||||
*/
|
||||
|
@ -123,7 +123,7 @@ var Page = (function PageClosure() {
|
|||
// TODO: add async inheritPageProp and remove this.
|
||||
this.resourcesPromise = this.pdfManager.ensure(this, 'resources');
|
||||
}
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
this.resourcesPromise.then(function resourceSuccess() {
|
||||
var objectLoader = new ObjectLoader(this.resources.map,
|
||||
keys,
|
||||
|
@ -136,13 +136,13 @@ var Page = (function PageClosure() {
|
|||
},
|
||||
getOperatorList: function Page_getOperatorList(handler) {
|
||||
var self = this;
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
|
||||
function reject(e) {
|
||||
promise.reject(e);
|
||||
}
|
||||
|
||||
var pageListPromise = new Promise();
|
||||
var pageListPromise = new LegacyPromise();
|
||||
|
||||
var pdfManager = this.pdfManager;
|
||||
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
||||
|
@ -208,7 +208,7 @@ var Page = (function PageClosure() {
|
|||
|
||||
var self = this;
|
||||
|
||||
var textContentPromise = new Promise();
|
||||
var textContentPromise = new LegacyPromise();
|
||||
|
||||
var pdfManager = this.pdfManager;
|
||||
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
info, isArray, isCmd, isDict, isEOF, isName, isNum,
|
||||
isStream, isString, JpegStream, Lexer, Metrics, Name, Parser,
|
||||
Pattern, PDFImage, PDFJS, serifFonts, stdFontMap, symbolsFonts,
|
||||
TilingPattern, warn, Util, Promise, UnsupportedManager,
|
||||
TilingPattern, warn, Util, Promise, LegacyPromise,
|
||||
RefSetCache, isRef, TextRenderingMode, CMapFactory, OPS,
|
||||
UNSUPPORTED_FEATURES */
|
||||
UNSUPPORTED_FEATURES, UnsupportedManager */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -548,7 +548,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
// dictionary
|
||||
var parser = new Parser(new Lexer(stream, OP_MAP), false, xref);
|
||||
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
var args = [];
|
||||
while (true) {
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
/* globals ColorSpace, error, isArray, isStream, JpegStream, Name, Promise,
|
||||
Stream, warn */
|
||||
Stream, warn, LegacyPromise */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -129,9 +129,9 @@ var PDFImage = (function PDFImageClosure() {
|
|||
*/
|
||||
PDFImage.buildImage = function PDFImage_buildImage(callback, handler, xref,
|
||||
res, image, inline) {
|
||||
var imageDataPromise = new Promise();
|
||||
var smaskPromise = new Promise();
|
||||
var maskPromise = new Promise();
|
||||
var imageDataPromise = new LegacyPromise();
|
||||
var smaskPromise = new LegacyPromise();
|
||||
var maskPromise = new LegacyPromise();
|
||||
// The image data and smask data may not be ready yet, wait till both are
|
||||
// resolved.
|
||||
Promise.all([imageDataPromise, smaskPromise, maskPromise]).then(
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
isStream, Lexer, log, Page, Parser, Promise, shadow,
|
||||
stringToPDFString, stringToUTF8String, warn, isString, assert,
|
||||
Promise, MissingDataException, XRefParseException, Stream,
|
||||
ChunkedStream */
|
||||
ChunkedStream, LegacyPromise */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -97,7 +97,7 @@ var Dict = (function DictClosure() {
|
|||
if (xref) {
|
||||
return xref.fetchIfRefAsync(value);
|
||||
}
|
||||
promise = new Promise();
|
||||
promise = new LegacyPromise();
|
||||
promise.resolve(value);
|
||||
return promise;
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ var Dict = (function DictClosure() {
|
|||
if (xref) {
|
||||
return xref.fetchIfRefAsync(value);
|
||||
}
|
||||
promise = new Promise();
|
||||
promise = new LegacyPromise();
|
||||
promise.resolve(value);
|
||||
return promise;
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ var Dict = (function DictClosure() {
|
|||
if (xref) {
|
||||
return xref.fetchIfRefAsync(value);
|
||||
}
|
||||
promise = new Promise();
|
||||
promise = new LegacyPromise();
|
||||
promise.resolve(value);
|
||||
return promise;
|
||||
},
|
||||
|
@ -434,7 +434,7 @@ var Catalog = (function CatalogClosure() {
|
|||
},
|
||||
|
||||
getPageDict: function Catalog_getPageDict(pageIndex) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
var nodesToVisit = [this.catDict.getRaw('Pages')];
|
||||
var currentPageIndex = 0;
|
||||
var xref = this.xref;
|
||||
|
@ -1120,14 +1120,14 @@ var XRef = (function XRefClosure() {
|
|||
},
|
||||
fetchIfRefAsync: function XRef_fetchIfRefAsync(obj) {
|
||||
if (!isRef(obj)) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
promise.resolve(obj);
|
||||
return promise;
|
||||
}
|
||||
return this.fetchAsync(obj);
|
||||
},
|
||||
fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
var tryFetch = function (promise) {
|
||||
try {
|
||||
promise.resolve(this.fetch(ref, suppressEncryption));
|
||||
|
@ -1254,7 +1254,7 @@ var ObjectLoader = (function() {
|
|||
|
||||
load: function ObjectLoader_load() {
|
||||
var keys = this.keys;
|
||||
this.promise = new Promise();
|
||||
this.promise = new LegacyPromise();
|
||||
// Don't walk the graph if all the data is already loaded.
|
||||
if (!(this.xref.stream instanceof ChunkedStream) ||
|
||||
this.xref.stream.getMissingChunks().length === 0) {
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
/* globals NotImplementedException, MissingDataException, Promise, Stream,
|
||||
PDFDocument, ChunkedStreamManager */
|
||||
PDFDocument, ChunkedStreamManager, LegacyPromise */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -81,7 +81,7 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||
function LocalPdfManager(data, password) {
|
||||
var stream = new Stream(data);
|
||||
this.pdfModel = new PDFDocument(this, stream, password);
|
||||
this.loadedStream = new Promise();
|
||||
this.loadedStream = new LegacyPromise();
|
||||
this.loadedStream.resolve(stream);
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||
|
||||
LocalPdfManager.prototype.ensure =
|
||||
function LocalPdfManager_ensure(obj, prop, args) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
try {
|
||||
var value = obj[prop];
|
||||
var result;
|
||||
|
@ -109,7 +109,7 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||
|
||||
LocalPdfManager.prototype.requestRange =
|
||||
function LocalPdfManager_requestRange(begin, end) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
promise.resolve();
|
||||
return promise;
|
||||
};
|
||||
|
@ -158,7 +158,7 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
|
|||
|
||||
NetworkPdfManager.prototype.ensure =
|
||||
function NetworkPdfManager_ensure(obj, prop, args) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
this.ensureHelper(promise, obj, prop, args);
|
||||
return promise;
|
||||
};
|
||||
|
@ -189,7 +189,7 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
|
|||
|
||||
NetworkPdfManager.prototype.requestRange =
|
||||
function NetworkPdfManager_requestRange(begin, end) {
|
||||
var promise = new Promise();
|
||||
var promise = new LegacyPromise();
|
||||
this.streamManager.requestRange(begin, end, function() {
|
||||
promise.resolve();
|
||||
});
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
/* globals error, globalScope, InvalidPDFException, log,
|
||||
MissingPDFException, PasswordException, PDFJS, Promise,
|
||||
UnknownErrorException, NetworkManager, LocalPdfManager,
|
||||
NetworkPdfManager, XRefParseException,
|
||||
NetworkPdfManager, XRefParseException, LegacyPromise,
|
||||
isInt, PasswordResponses, MessageHandler, Ref */
|
||||
|
||||
'use strict';
|
||||
|
@ -27,7 +27,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
var pdfManager;
|
||||
|
||||
function loadDocument(recoveryMode) {
|
||||
var loadDocumentPromise = new Promise();
|
||||
var loadDocumentPromise = new LegacyPromise();
|
||||
|
||||
var parseSuccess = function parseSuccess() {
|
||||
var numPagesPromise = pdfManager.ensureModel('numPages');
|
||||
|
@ -71,7 +71,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
}
|
||||
|
||||
function getPdfManager(data) {
|
||||
var pdfManagerPromise = new Promise();
|
||||
var pdfManagerPromise = new LegacyPromise();
|
||||
|
||||
var source = data.source;
|
||||
var disableRange = data.disableRange;
|
||||
|
@ -239,7 +239,8 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
if (ex instanceof PasswordException) {
|
||||
// after password exception prepare to receive a new password
|
||||
// to repeat loading
|
||||
pdfManager.passwordChangedPromise = new Promise();
|
||||
pdfManager.passwordChangedPromise =
|
||||
new LegacyPromise();
|
||||
pdfManager.passwordChangedPromise.then(pdfManagerReady);
|
||||
}
|
||||
|
||||
|
@ -276,31 +277,31 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
});
|
||||
});
|
||||
|
||||
handler.on('GetPageIndex', function wphSetupGetPageIndex(data, promise) {
|
||||
handler.on('GetPageIndex', function wphSetupGetPageIndex(data, deferred) {
|
||||
var ref = new Ref(data.ref.num, data.ref.gen);
|
||||
pdfManager.pdfModel.catalog.getPageIndex(ref).then(function (pageIndex) {
|
||||
promise.resolve(pageIndex);
|
||||
}, promise.reject.bind(promise));
|
||||
deferred.resolve(pageIndex);
|
||||
}, deferred.reject);
|
||||
});
|
||||
|
||||
handler.on('GetDestinations',
|
||||
function wphSetupGetDestinations(data, promise) {
|
||||
function wphSetupGetDestinations(data, deferred) {
|
||||
pdfManager.ensureCatalog('destinations').then(function(destinations) {
|
||||
promise.resolve(destinations);
|
||||
deferred.resolve(destinations);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
handler.on('GetData', function wphSetupGetData(data, promise) {
|
||||
handler.on('GetData', function wphSetupGetData(data, deferred) {
|
||||
pdfManager.requestLoadedStream();
|
||||
pdfManager.onLoadedStream().then(function(stream) {
|
||||
promise.resolve(stream.bytes);
|
||||
deferred.resolve(stream.bytes);
|
||||
});
|
||||
});
|
||||
|
||||
handler.on('DataLoaded', function wphSetupDataLoaded(data, promise) {
|
||||
handler.on('DataLoaded', function wphSetupDataLoaded(data, deferred) {
|
||||
pdfManager.onLoadedStream().then(function(stream) {
|
||||
promise.resolve({ length: stream.bytes.byteLength });
|
||||
deferred.resolve({ length: stream.bytes.byteLength });
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -365,29 +366,29 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
});
|
||||
}, this);
|
||||
|
||||
handler.on('GetTextContent', function wphExtractText(data, promise) {
|
||||
handler.on('GetTextContent', function wphExtractText(data, deferred) {
|
||||
pdfManager.getPage(data.pageIndex).then(function(page) {
|
||||
var pageNum = data.pageIndex + 1;
|
||||
var start = Date.now();
|
||||
page.extractTextContent().then(function(textContent) {
|
||||
promise.resolve(textContent);
|
||||
deferred.resolve(textContent);
|
||||
log('text indexing: page=%d - time=%dms', pageNum,
|
||||
Date.now() - start);
|
||||
}, function (e) {
|
||||
// Skip errored pages
|
||||
promise.reject(e);
|
||||
deferred.reject(e);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
handler.on('Cleanup', function wphCleanup(data, promise) {
|
||||
handler.on('Cleanup', function wphCleanup(data, deferred) {
|
||||
pdfManager.cleanup();
|
||||
promise.resolve(true);
|
||||
deferred.resolve(true);
|
||||
});
|
||||
|
||||
handler.on('Terminate', function wphTerminate(data, promise) {
|
||||
handler.on('Terminate', function wphTerminate(data, deferred) {
|
||||
pdfManager.terminate();
|
||||
promise.resolve();
|
||||
deferred.resolve();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue