diff --git a/l10n/en-US/viewer.properties b/l10n/en-US/viewer.properties index dadfe4143..c52020c5c 100644 --- a/l10n/en-US/viewer.properties +++ b/l10n/en-US/viewer.properties @@ -146,6 +146,7 @@ loading_error_indicator=Error loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in diff --git a/src/core/worker.js b/src/core/worker.js index 1e2450de9..7dca8f05d 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals error, globalScope, InvalidPDFException, info, - MissingPDFException, PasswordException, PDFJS, Promise, - UnknownErrorException, NetworkManager, LocalPdfManager, - NetworkPdfManager, XRefParseException, createPromiseCapability, - isInt, PasswordResponses, MessageHandler, Ref, RANGE_CHUNK_SIZE */ +/* globals PDFJS, createPromiseCapability, LocalPdfManager, NetworkPdfManager, + NetworkManager, isInt, RANGE_CHUNK_SIZE, MissingPDFException, + UnexpectedResponseException, PasswordException, Promise, + PasswordResponses, InvalidPDFException, UnknownErrorException, + XRefParseException, Ref, info, globalScope, error, MessageHandler */ 'use strict'; @@ -141,14 +141,16 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { }, onError: function onError(status) { + var exception; if (status === 404) { - var exception = new MissingPDFException('Missing PDF "' + - source.url + '".'); + exception = new MissingPDFException('Missing PDF "' + + source.url + '".'); handler.send('MissingPDF', exception); } else { - handler.send('DocError', 'Unexpected server response (' + - status + ') while retrieving PDF "' + - source.url + '".'); + exception = new UnexpectedResponseException( + 'Unexpected server response (' + status + + ') while retrieving PDF "' + source.url + '".', status); + handler.send('UnexpectedResponse', exception); } }, @@ -208,6 +210,8 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { handler.send('InvalidPDF', e); } else if (e instanceof MissingPDFException) { handler.send('MissingPDF', e); + } else if (e instanceof UnexpectedResponseException) { + handler.send('UnexpectedResponse', e); } else { handler.send('UnknownError', new UnknownErrorException(e.message, e.toString())); diff --git a/src/display/api.js b/src/display/api.js index 5d13921cc..a8840db98 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -16,9 +16,9 @@ */ /* globals PDFJS, isArrayBuffer, error, combineUrl, createPromiseCapability, StatTimer, globalScope, MessageHandler, info, FontLoader, Util, warn, - PasswordResponses, PasswordException, InvalidPDFException, + Promise, PasswordResponses, PasswordException, InvalidPDFException, MissingPDFException, UnknownErrorException, FontFace, loadJpegStream, - createScratchCanvas, Promise, CanvasGraphics */ + createScratchCanvas, CanvasGraphics, UnexpectedResponseException */ 'use strict'; @@ -895,6 +895,12 @@ var WorkerTransport = (function WorkerTransportClosure() { new MissingPDFException(exception.message)); }, this); + messageHandler.on('UnexpectedResponse', + function transportUnexpectedResponse(exception) { + this.workerReadyCapability.reject( + new UnexpectedResponseException(exception.message, exception.status)); + }, this); + messageHandler.on('UnknownError', function transportUnknownError(exception) { this.workerReadyCapability.reject( @@ -994,10 +1000,6 @@ var WorkerTransport = (function WorkerTransportClosure() { } }, this); - messageHandler.on('DocError', function transportDocError(data) { - this.workerReadyCapability.reject(data); - }, this); - messageHandler.on('PageError', function transportError(data) { var page = this.pageCache[data.pageNum - 1]; var intentState = page.intentStates[data.intent]; diff --git a/src/shared/util.js b/src/shared/util.js index 9d0d297eb..7deb99175 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -384,6 +384,21 @@ var MissingPDFException = (function MissingPDFExceptionClosure() { })(); PDFJS.MissingPDFException = MissingPDFException; +var UnexpectedResponseException = + (function UnexpectedResponseExceptionClosure() { + function UnexpectedResponseException(msg, status) { + this.name = 'UnexpectedResponseException'; + this.message = msg; + this.status = status; + } + + UnexpectedResponseException.prototype = new Error(); + UnexpectedResponseException.constructor = UnexpectedResponseException; + + return UnexpectedResponseException; +})(); +PDFJS.UnexpectedResponseException = UnexpectedResponseException; + var NotImplementedException = (function NotImplementedExceptionClosure() { function NotImplementedException(msg) { this.message = msg; diff --git a/web/viewer.js b/web/viewer.js index d332a5e1a..04f0bb512 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -681,19 +681,18 @@ var PDFView = { // change error message also for other builds loadingErrorMessage = mozL10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.'); -//#if B2G -// window.alert(loadingErrorMessage); -// return window.close(); -//#endif } else if (exception instanceof PDFJS.MissingPDFException) { // special message for missing PDF's loadingErrorMessage = mozL10n.get('missing_file_error', null, 'Missing PDF file.'); -//#if B2G -// window.alert(loadingErrorMessage); -// return window.close(); -//#endif + } else if (exception instanceof PDFJS.UnexpectedResponseException) { + loadingErrorMessage = mozL10n.get('unexpected_response_error', null, + 'Unexpected server response.'); } +//#if B2G +// window.alert(loadingErrorMessage); +// return window.close(); +//#endif var moreInfo = { message: message