Skip to content

Commit cddb5ea

Browse files
committed
Merge branch 'fallback-fix'
Conflicts: src/core.js
2 parents d92c3f8 + 3dadde5 commit cddb5ea

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

src/core.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ var Page = (function PageClosure() {
137137
var self = this;
138138
var promise = new Promise();
139139

140+
function reject(e) {
141+
promise.reject(e);
142+
}
143+
140144
var pageListPromise = new Promise();
141145

142146
var pdfManager = this.pdfManager;
@@ -150,7 +154,7 @@ var Page = (function PageClosure() {
150154
this.idCounters);
151155

152156
var dataPromises = Promise.all(
153-
[contentStreamPromise, resourcesPromise]);
157+
[contentStreamPromise, resourcesPromise], reject);
154158
dataPromises.then(function(data) {
155159
var contentStream = data[0];
156160
var resources = data[1];
@@ -161,7 +165,8 @@ var Page = (function PageClosure() {
161165
opListPromise.then(function(data) {
162166
pageListPromise.resolve(data);
163167
});
164-
}
168+
},
169+
reject
165170
);
166171
});
167172

@@ -195,9 +200,9 @@ var Page = (function PageClosure() {
195200
PartialEvaluator.optimizeQueue(pageQueue);
196201

197202
promise.resolve(pageData);
198-
});
199-
});
200-
});
203+
}, reject);
204+
}, reject);
205+
}, reject);
201206

202207
return promise;
203208
},

src/util.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -694,16 +694,26 @@ var Promise = PDFJS.Promise = (function PromiseClosure() {
694694
deferred.resolve(results);
695695
return deferred;
696696
}
697+
function reject(reason) {
698+
if (deferred.isRejected) {
699+
return;
700+
}
701+
results = [];
702+
deferred.reject(reason);
703+
}
697704
for (var i = 0, ii = promises.length; i < ii; ++i) {
698705
var promise = promises[i];
699706
promise.then((function(i) {
700707
return function(value) {
708+
if (deferred.isRejected) {
709+
return;
710+
}
701711
results[i] = value;
702712
unresolved--;
703713
if (unresolved === 0)
704714
deferred.resolve(results);
705715
};
706-
})(i));
716+
})(i), reject);
707717
}
708718
return deferred;
709719
};
@@ -784,22 +794,21 @@ var Promise = PDFJS.Promise = (function PromiseClosure() {
784794
},
785795

786796
then: function Promise_then(callback, errback, progressback) {
787-
if (!callback) {
788-
error('Requiring callback' + this.name);
789-
}
790-
791797
// If the promise is already resolved, call the callback directly.
792-
if (this.isResolved) {
798+
if (this.isResolved && callback) {
793799
var data = this.data;
794800
callback.call(null, data);
795801
} else if (this.isRejected && errback) {
796802
var error = this.error;
797803
var exception = this.exception;
798804
errback.call(null, error, exception);
799805
} else {
800-
this.callbacks.push(callback);
801-
if (errback)
806+
if (callback) {
807+
this.callbacks.push(callback);
808+
}
809+
if (errback) {
802810
this.errbacks.push(errback);
811+
}
803812
}
804813

805814
if (progressback)

src/worker.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ var WorkerMessageHandler = {
137137
javaScript: results[6]
138138
};
139139
loadDocumentPromise.resolve(doc);
140-
});
140+
},
141+
parseFailure);
141142
};
142143

143144
var parseFailure = function parseFailure(e) {
@@ -261,7 +262,7 @@ var WorkerMessageHandler = {
261262

262263
var onSuccess = function(doc) {
263264
handler.send('GetDoc', { pdfInfo: doc });
264-
pdfManager.ensureModel('traversePages', []);
265+
pdfManager.ensureModel('traversePages', []).then(null, onFailure);
265266
};
266267

267268
var onFailure = function(e) {

0 commit comments

Comments
 (0)