diff --git a/src/shared/util.js b/src/shared/util.js index 1c3f21ca0..77d8d4680 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1011,7 +1011,7 @@ PDFJS.createPromiseCapability = createPromiseCapability; /** * Polyfill for Promises: - * The following promise implementation tries to generally implment the + * The following promise implementation tries to generally implement the * Promise/A+ spec. Some notable differences from other promise libaries are: * - There currently isn't a seperate deferred and promise object. * - Unhandled rejections eventually show an error if they aren't handled. @@ -1057,6 +1057,11 @@ PDFJS.createPromiseCapability = createPromiseCapability; }); }; } + if (typeof globalScope.Promise.prototype.catch !== 'function') { + globalScope.Promise.prototype.catch = function (onReject) { + return globalScope.Promise.prototype.then(undefined, onReject); + }; + } return; } //#if !MOZCENTRAL @@ -1180,7 +1185,11 @@ PDFJS.createPromiseCapability = createPromiseCapability; function Promise(resolver) { this._status = STATUS_PENDING; this._handlers = []; - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); + try { + resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); + } catch (e) { + this._reject(e); + } } /** * Builds a promise that is resolved when all the passed in promises are @@ -1307,6 +1316,10 @@ PDFJS.createPromiseCapability = createPromiseCapability; }); HandlerManager.scheduleHandlers(this); return nextPromise; + }, + + catch: function Promise_catch(onReject) { + return this.then(undefined, onReject); } }; diff --git a/web/view_history.js b/web/view_history.js index c1992f2b6..6f2cce48c 100644 --- a/web/view_history.js +++ b/web/view_history.js @@ -101,7 +101,7 @@ var ViewHistory = (function ViewHistoryClosure() { return; } this.file[name] = val; - this._writeToStorage(); + return this._writeToStorage(); }, setMultiple: function ViewHistory_setMultiple(properties) { @@ -111,7 +111,7 @@ var ViewHistory = (function ViewHistoryClosure() { for (var name in properties) { this.file[name] = properties[name]; } - this._writeToStorage(); + return this._writeToStorage(); }, get: function ViewHistory_get(name, defaultValue) { diff --git a/web/viewer.js b/web/viewer.js index b9fad006d..6d92ad048 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1983,6 +1983,8 @@ function updateViewarea() { 'zoom': normalizedScaleValue, 'scrollLeft': intLeft, 'scrollTop': intTop + }).catch(function() { + // unable to write to storage }); }); var href = PDFView.getAnchorUrl(pdfOpenParams);