mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-02 06:22:20 +00:00
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:
parent
3481eb931f
commit
cd2121e7d8
@ -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.
|
||||
|
@ -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);
|
||||
},
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user