Bug 1805288 - Part 2: Use ChromeUtils.defineLazyGetter from XPCOMUtils.defineLazyGetter. r=smaug,devtools-reviewers,ochameau

Also fix test_safe-getter.js not to use defineLazyGetter, given the
test expects the getter function be scripted function, while the getter
function created by ChromeUtils.defineLazyGetter is native.

Rewriting XPCOMUtils.defineLazyGetter consumers should be done in separate bugs.

Differential Revision: https://phabricator.services.mozilla.com/D171320
This commit is contained in:
Tooru Fujisawa 2023-03-08 07:11:02 +00:00
parent 3481eb931f
commit cd2121e7d8
2 changed files with 3 additions and 15 deletions

View File

@ -27,7 +27,8 @@ function run_test() {
);
// This is a CCW.
XPCOMUtils.defineLazyGetter(this, "foo", function() { return "foo"; });
XPCOMUtils.defineLazyScriptGetter(
this, "foo", "chrome://global/content/viewZoomOverlay.js");
`);
// Neither scripted getter should be considered safe.

View File

@ -44,20 +44,7 @@ export var XPCOMUtils = {
* only ever be called once.
*/
defineLazyGetter(aObject, aName, aLambda) {
let redefining = false;
Object.defineProperty(aObject, aName, {
get() {
if (!redefining) {
// Make sure we don't get into an infinite recursion loop if
// the getter lambda does something shady.
redefining = true;
return redefine(aObject, aName, aLambda.apply(aObject));
}
return undefined;
},
configurable: true,
enumerable: true,
});
ChromeUtils.defineLazyGetter(aObject, aName, aLambda);
},
/**