Bug 1287007 - Do not neuter error messages from the same principal
With an upcoming change that introduces another ProxyContext,
errors from a different scope may bubble up. These messages should
be reported, not replaced with "An unexpected error occurred".
MozReview-Commit-ID: ByUktVkhDyx
--- a/toolkit/components/extensions/ExtensionUtils.jsm
+++ b/toolkit/components/extensions/ExtensionUtils.jsm
@@ -360,21 +360,27 @@ class BaseContext {
*
* @param {Error|object} error
* @returns {Error}
*/
normalizeError(error) {
if (error instanceof this.cloneScope.Error) {
return error;
}
- if (!instanceOf(error, "Object")) {
+ let message;
+ if (instanceOf(error, "Object")) {
+ message = error.message;
+ } else if (typeof error == "object" &&
+ this.principal.subsumes(Cu.getObjectPrincipal(error))) {
+ message = error.message;
+ } else {
Cu.reportError(error);
- error = {message: "An unexpected error occurred"};
}
- return new this.cloneScope.Error(error.message);
+ message = message || "An unexpected error occurred";
+ return new this.cloneScope.Error(message);
}
/**
* Sets the value of `.lastError` to `error`, calls the given
* callback, and reports an error if the value has not been checked
* when the callback returns.
*
* @param {object} error An object with a `message` property. May