зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1253129 - Prevent a logged warning from keeping the extension global alive after being destroyed. r=mixedpuppy
Differential Revision: https://phabricator.services.mozilla.com/D80936
This commit is contained in:
Родитель
e2f81589ab
Коммит
7a233cc08a
|
@ -516,7 +516,21 @@ class Context {
|
|||
* @param {Error|string} error
|
||||
*/
|
||||
logError(error) {
|
||||
Cu.reportError(error);
|
||||
if (this.cloneScope) {
|
||||
Cu.reportError(
|
||||
// Error objects logged using Cu.reportError are not associated
|
||||
// to the related innerWindowID. This results in a leaked docshell
|
||||
// since consoleService cannot release the error object when the
|
||||
// extension global is destroyed.
|
||||
typeof error == "string" ? error : String(error),
|
||||
// Report the error with the appropriate stack trace when the
|
||||
// is related to an actual extension global (instead of being
|
||||
// related to a manifest validation).
|
||||
this.principal && ChromeUtils.getCallerLocation(this.principal)
|
||||
);
|
||||
} else {
|
||||
Cu.reportError(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче