fix for #2219, "provide a better error message when file= not found/accessible"
summary: create a new Exception class for missing PDF's, use it in place of generic add new MissingPDFException to util.js handle MissingPDF in api.js handle MissingPDF in viewer.js, using new missing_file_error message add new missing_file_error to l10n/en-US/viewer.properties send MissingPDF from WorkerMessageHandler's loadDocument send MissingPDF from GetDocRequest handler
This commit is contained in:
parent
7bd8887860
commit
12af2f9431
@ -111,6 +111,7 @@ page_scale_actual=Actual Size
|
|||||||
loading_error_indicator=Error
|
loading_error_indicator=Error
|
||||||
loading_error=An error occurred while loading the PDF.
|
loading_error=An error occurred while loading the PDF.
|
||||||
invalid_file_error=Invalid or corrupted PDF file.
|
invalid_file_error=Invalid or corrupted PDF file.
|
||||||
|
missing_file_error=Missing PDF file.
|
||||||
|
|
||||||
# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
|
# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
|
||||||
# "{{type}}" will be replaced with an annotation type from a list defined in
|
# "{{type}}" will be replaced with an annotation type from a list defined in
|
||||||
|
@ -547,6 +547,10 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
this.workerReadyPromise.reject(data.exception.name, data.exception);
|
this.workerReadyPromise.reject(data.exception.name, data.exception);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
messageHandler.on('MissingPDF', function transportMissingPDF(data) {
|
||||||
|
this.workerReadyPromise.reject(data.exception.message, data.exception);
|
||||||
|
}, this);
|
||||||
|
|
||||||
messageHandler.on('UnknownError', function transportUnknownError(data) {
|
messageHandler.on('UnknownError', function transportUnknownError(data) {
|
||||||
this.workerReadyPromise.reject(data.exception.message, data.exception);
|
this.workerReadyPromise.reject(data.exception.message, data.exception);
|
||||||
}, this);
|
}, this);
|
||||||
|
12
src/util.js
12
src/util.js
@ -175,6 +175,18 @@ var InvalidPDFException = (function InvalidPDFExceptionClosure() {
|
|||||||
return InvalidPDFException;
|
return InvalidPDFException;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
var MissingPDFException = (function MissingPDFExceptionClosure() {
|
||||||
|
function MissingPDFException(msg) {
|
||||||
|
this.name = 'MissingPDFException';
|
||||||
|
this.message = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
MissingPDFException.prototype = new Error();
|
||||||
|
MissingPDFException.constructor = MissingPDFException;
|
||||||
|
|
||||||
|
return MissingPDFException;
|
||||||
|
})();
|
||||||
|
|
||||||
function bytesToString(bytes) {
|
function bytesToString(bytes) {
|
||||||
var str = '';
|
var str = '';
|
||||||
var length = bytes.length;
|
var length = bytes.length;
|
||||||
|
@ -130,6 +130,12 @@ var WorkerMessageHandler = {
|
|||||||
exception: e
|
exception: e
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
} else if (e instanceof MissingPDFException) {
|
||||||
|
handler.send('MissingPDF', {
|
||||||
|
exception: e
|
||||||
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
handler.send('UnknownError', {
|
handler.send('UnknownError', {
|
||||||
@ -185,8 +191,15 @@ var WorkerMessageHandler = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
error: function getPDFError(e) {
|
error: function getPDFError(e) {
|
||||||
handler.send('DocError', 'Unexpected server response of ' +
|
if (e.target.status == 404) {
|
||||||
e.target.status + '.');
|
handler.send('MissingPDF', {
|
||||||
|
exception: new MissingPDFException(
|
||||||
|
'Missing PDF \"' + source.url + '\".')});
|
||||||
|
} else {
|
||||||
|
handler.send('DocError', 'Unexpected server response (' +
|
||||||
|
e.target.status + ') while retrieving PDF \"' +
|
||||||
|
source.url + '\".');
|
||||||
|
}
|
||||||
},
|
},
|
||||||
headers: source.httpHeaders
|
headers: source.httpHeaders
|
||||||
},
|
},
|
||||||
|
@ -1000,6 +1000,17 @@ var PDFView = {
|
|||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (exception && exception.name === 'MissingPDFException') {
|
||||||
|
// special message for missing PDF's
|
||||||
|
var loadingErrorMessage = mozL10n.get('missing_file_error', null,
|
||||||
|
'Missing PDF file.');
|
||||||
|
|
||||||
|
//#if B2G
|
||||||
|
// window.alert(loadingErrorMessage);
|
||||||
|
// return window.close();
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
|
|
||||||
var loadingIndicator = document.getElementById('loading');
|
var loadingIndicator = document.getElementById('loading');
|
||||||
loadingIndicator.textContent = mozL10n.get('loading_error_indicator',
|
loadingIndicator.textContent = mozL10n.get('loading_error_indicator',
|
||||||
null, 'Error');
|
null, 'Error');
|
||||||
|
Loading…
Reference in New Issue
Block a user