mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-20 15:18:08 +02:00
Move the error message localization into PDFViewerApplication._otherError
When reporting errors in the viewer we currently localize the error messages "manually" at every call-site, which seems like unnecessary repetition.
This commit is contained in:
parent
0022310b9c
commit
b5e00e1fae
2 changed files with 27 additions and 26 deletions
44
web/app.js
44
web/app.js
|
@ -838,9 +838,7 @@ const PDFViewerApplication = {
|
|||
this.open({ url, length, originalUrl });
|
||||
},
|
||||
onError: err => {
|
||||
this.l10n.get("pdfjs-loading-error").then(msg => {
|
||||
this._documentError(msg, err);
|
||||
});
|
||||
this._documentError("pdfjs-loading-error", err);
|
||||
},
|
||||
onProgress: (loaded, total) => {
|
||||
this.progress(loaded / total);
|
||||
|
@ -1050,10 +1048,11 @@ const PDFViewerApplication = {
|
|||
} else if (reason instanceof UnexpectedResponseException) {
|
||||
key = "pdfjs-unexpected-response-error";
|
||||
}
|
||||
return this.l10n.get(key).then(msg => {
|
||||
this._documentError(msg, { message: reason?.message });
|
||||
throw reason;
|
||||
});
|
||||
return this._documentError(key, { message: reason.message }).then(
|
||||
() => {
|
||||
throw reason;
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
@ -1134,10 +1133,13 @@ const PDFViewerApplication = {
|
|||
* Report the error; used for errors affecting loading and/or parsing of
|
||||
* the entire PDF document.
|
||||
*/
|
||||
_documentError(message, moreInfo = null) {
|
||||
async _documentError(key, moreInfo = null) {
|
||||
this._unblockDocumentLoadEvent();
|
||||
|
||||
this._otherError(message, moreInfo);
|
||||
const message = await this._otherError(
|
||||
key || "pdfjs-loading-error",
|
||||
moreInfo
|
||||
);
|
||||
|
||||
this.eventBus.dispatch("documenterror", {
|
||||
source: this,
|
||||
|
@ -1148,12 +1150,15 @@ const PDFViewerApplication = {
|
|||
|
||||
/**
|
||||
* Report the error; used for errors affecting e.g. only a single page.
|
||||
* @param {string} message - A message that is human readable.
|
||||
* @param {string} key - The localization key for the error.
|
||||
* @param {Object} [moreInfo] - Further information about the error that is
|
||||
* more technical. Should have a 'message' and
|
||||
* optionally a 'stack' property.
|
||||
* @returns {string} A (localized) error message that is human readable.
|
||||
*/
|
||||
_otherError(message, moreInfo = null) {
|
||||
async _otherError(key, moreInfo = null) {
|
||||
const message = await this.l10n.get(key);
|
||||
|
||||
const moreInfoText = [`PDF.js v${version || "?"} (build: ${build || "?"})`];
|
||||
if (moreInfo) {
|
||||
moreInfoText.push(`Message: ${moreInfo.message}`);
|
||||
|
@ -1171,6 +1176,7 @@ const PDFViewerApplication = {
|
|||
}
|
||||
|
||||
console.error(`${message}\n\n${moreInfoText.join("\n")}`);
|
||||
return message;
|
||||
},
|
||||
|
||||
progress(level) {
|
||||
|
@ -1387,9 +1393,7 @@ const PDFViewerApplication = {
|
|||
this._initializeAutoPrint(pdfDocument, openActionPromise);
|
||||
},
|
||||
reason => {
|
||||
this.l10n.get("pdfjs-loading-error").then(msg => {
|
||||
this._documentError(msg, { message: reason?.message });
|
||||
});
|
||||
this._documentError("pdfjs-loading-error", { message: reason.message });
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -1778,9 +1782,7 @@ const PDFViewerApplication = {
|
|||
}
|
||||
|
||||
if (!this.supportsPrinting) {
|
||||
this.l10n.get("pdfjs-printing-not-supported").then(msg => {
|
||||
this._otherError(msg);
|
||||
});
|
||||
this._otherError("pdfjs-printing-not-supported");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2242,8 +2244,8 @@ if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
|||
throw new Error("file origin does not match viewer's");
|
||||
}
|
||||
} catch (ex) {
|
||||
PDFViewerApplication.l10n.get("pdfjs-loading-error").then(msg => {
|
||||
PDFViewerApplication._documentError(msg, { message: ex?.message });
|
||||
PDFViewerApplication._documentError("pdfjs-loading-error", {
|
||||
message: ex.message,
|
||||
});
|
||||
throw ex;
|
||||
}
|
||||
|
@ -2308,9 +2310,7 @@ function webViewerPageRendered({ pageNumber, error }) {
|
|||
}
|
||||
|
||||
if (error) {
|
||||
PDFViewerApplication.l10n.get("pdfjs-rendering-error").then(msg => {
|
||||
PDFViewerApplication._otherError(msg, error);
|
||||
});
|
||||
PDFViewerApplication._otherError("pdfjs-rendering-error", error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -108,10 +108,11 @@ const ChromeCom = {
|
|||
// Even without this check, the file load in frames is still blocked,
|
||||
// but this may change in the future (https://crbug.com/550151).
|
||||
if (origin && !/^file:|^chrome-extension:/.test(origin)) {
|
||||
viewerApp._documentError(
|
||||
`Blocked ${origin} from loading ${file}. Refused to load ` +
|
||||
"a local file in a non-local page for security reasons."
|
||||
);
|
||||
viewerApp._documentError(null, {
|
||||
message:
|
||||
`Blocked ${origin} from loading ${file}. Refused to load ` +
|
||||
"a local file in a non-local page for security reasons.",
|
||||
});
|
||||
return;
|
||||
}
|
||||
isAllowedFileSchemeAccess(function (isAllowedAccess) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue