diff --git a/src/api.js b/src/api.js index 88cc6e288..1d166f066 100644 --- a/src/api.js +++ b/src/api.js @@ -18,7 +18,9 @@ * @return {Promise} A promise that is resolved with {PDFDocumentProxy} object. */ PDFJS.getDocument = function getDocument(source) { - var url, data, headers, password, parameters = {}, workerInitializedPromise, workerReadyPromise, transport; + var url, data, headers, password, parameters = {}, workerInitializedPromise, + workerReadyPromise, transport; + if (typeof source === 'string') { url = source; } else if (isArrayBuffer(source)) { @@ -49,23 +51,27 @@ PDFJS.getDocument = function getDocument(source) { { url: url, progress: function getPDFProgress(evt) { - if (evt.lengthComputable) - workerReadyPromise.progress({ + if (evt.lengthComputable) { + workerReadyPromise.progress({ loaded: evt.loaded, total: evt.total }); + } }, error: function getPDFError(e) { - workerReadyPromise.reject('Unexpected server response of ' + + workerReadyPromise.reject('Unexpected server response of ' + e.target.status + '.'); }, headers: headers }, function getPDFLoad(data) { - //we have to wait for the WorkerTransport to finalize worker-support detection! This may take a while... - workerInitializedPromise.then(function () { - transport.sendData(data, parameters); - }); + // sometimes the pdf has finished downloading before the web worker-test + // has finished. In that case the rendering of the final pdf would cause + // errors. We have to wait for the WorkerTransport to finalize worker- + // support detection + workerInitializedPromise.then(function workerInitialized() { + transport.sendData(data, parameters); + }); }); } @@ -479,7 +485,7 @@ var WorkerTransport = (function WorkerTransportClosure() { // Thus, we fallback to a faked worker. globalScope.PDFJS.disableWorker = true; this.setupFakeWorker(); - workerInitializedPromise.resolve(); + workerInitializedPromise.resolve(); } WorkerTransport.prototype = { destroy: function WorkerTransport_destroy() { diff --git a/src/worker.js b/src/worker.js index 161814f69..c1dfa79af 100644 --- a/src/worker.js +++ b/src/worker.js @@ -20,10 +20,6 @@ function MessageHandler(name, comObj) { warn(data); }]; - comObj.onerror = function(event){ - throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")"); - }; - comObj.onmessage = function messageHandlerComObjOnMessage(event) { var data = event.data; if (data.isReply) { diff --git a/web/compatibility.js b/web/compatibility.js index 39580ef2a..ed4fae338 100644 --- a/web/compatibility.js +++ b/web/compatibility.js @@ -6,7 +6,7 @@ // Checking if the typed arrays are supported (function checkTypedArrayCompatibility() { if (typeof Uint8Array !== 'undefined') { - // some mobile versions do not support subarray (e.g. safari 5 / iPhone / iPad) + // some mobile versions do not support subarray (e.g. safari 5 / iOS) if (typeof Uint8Array.prototype.subarray === 'undefined') { Uint8Array.prototype.subarray = function subarray(start, end) { return new Uint8Array(this.slice(start, end)); @@ -79,9 +79,10 @@ // Object.defineProperty() ? (function checkObjectDefinePropertyCompatibility() { - // safari 5 cannot use this on DOM objects and thus is unusable, see http://kangax.github.com/es5-compat-table/ - if ((typeof Object.defineProperty !== 'undefined') && /Safari\/5/.test(navigator.userAgent)) - return; + // safari 5 cannot use this on DOM objects and thus is unusable, + // see http://kangax.github.com/es5-compat-table/ + if ((typeof Object.defineProperty !== 'undefined') && + /Safari\/5/.test(navigator.userAgent)) return; Object.defineProperty = function objectDefineProperty(obj, name, def) { delete obj[name];