Merge pull request #11261 from Snuffleupagus/DocException

Re-factor sending of various Exceptions from the worker to the API
This commit is contained in:
Tim van der Meij 2019-10-19 15:31:12 +02:00 committed by GitHub
commit 3c23ac212e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 40 deletions

View File

@ -270,30 +270,29 @@ var WorkerMessageHandler = {
handler.send('GetDoc', { pdfInfo: doc, });
}
function onFailure(e) {
function onFailure(ex) {
ensureNotTerminated();
if (e instanceof PasswordException) {
var task = new WorkerTask('PasswordException: response ' + e.code);
if (ex instanceof PasswordException) {
var task = new WorkerTask(`PasswordException: response ${ex.code}`);
startWorkerTask(task);
handler.sendWithPromise('PasswordRequest', e).then(function (data) {
handler.sendWithPromise('PasswordRequest', ex).then(function(data) {
finishWorkerTask(task);
pdfManager.updatePassword(data.password);
pdfManagerReady();
}).catch(function (boundException) {
}).catch(function() {
finishWorkerTask(task);
handler.send('PasswordException', boundException);
}.bind(null, e));
} else if (e instanceof InvalidPDFException) {
handler.send('InvalidPDF', e);
} else if (e instanceof MissingPDFException) {
handler.send('MissingPDF', e);
} else if (e instanceof UnexpectedResponseException) {
handler.send('UnexpectedResponse', e);
handler.send('DocException', ex);
});
} else if (ex instanceof InvalidPDFException ||
ex instanceof MissingPDFException ||
ex instanceof UnexpectedResponseException ||
ex instanceof UnknownErrorException) {
handler.send('DocException', ex);
} else {
handler.send('UnknownError',
new UnknownErrorException(e.message, e.toString()));
handler.send('DocException',
new UnknownErrorException(ex.message, ex.toString()));
}
}

View File

@ -2001,6 +2001,32 @@ class WorkerTransport {
loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
});
messageHandler.on('DocException', function(ex) {
let reason;
switch (ex.name) {
case 'PasswordException':
reason = new PasswordException(ex.message, ex.code);
break;
case 'InvalidPDFException':
reason = new InvalidPDFException(ex.message);
break;
case 'MissingPDFException':
reason = new MissingPDFException(ex.message);
break;
case 'UnexpectedResponseException':
reason = new UnexpectedResponseException(ex.message, ex.status);
break;
case 'UnknownErrorException':
reason = new UnknownErrorException(ex.message, ex.details);
break;
}
if (typeof PDFJSDev === 'undefined' ||
PDFJSDev.test('!PRODUCTION || TESTING')) {
assert(reason instanceof Error, 'DocException: expected an Error.');
}
loadingTask._capability.reject(reason);
});
messageHandler.on('PasswordRequest', (exception) => {
this._passwordCapability = createPromiseCapability();
@ -2022,31 +2048,6 @@ class WorkerTransport {
return this._passwordCapability.promise;
});
messageHandler.on('PasswordException', function(exception) {
loadingTask._capability.reject(
new PasswordException(exception.message, exception.code));
});
messageHandler.on('InvalidPDF', function(exception) {
loadingTask._capability.reject(
new InvalidPDFException(exception.message));
});
messageHandler.on('MissingPDF', function(exception) {
loadingTask._capability.reject(
new MissingPDFException(exception.message));
});
messageHandler.on('UnexpectedResponse', function(exception) {
loadingTask._capability.reject(
new UnexpectedResponseException(exception.message, exception.status));
});
messageHandler.on('UnknownError', function(exception) {
loadingTask._capability.reject(
new UnknownErrorException(exception.message, exception.details));
});
messageHandler.on('DataLoaded', (data) => {
// For consistency: Ensure that progress is always reported when the
// entire PDF file has been loaded, regardless of how it was fetched.