diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 17853287590..f24115a349a 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -248,6 +248,17 @@ impl MutNullableJS { pub unsafe fn get_inner(&self) -> Option> { self.ptr.get() } + + pub fn or_init(&self, cb: || -> Temporary) -> Temporary { + match self.get() { + Some(inner) => inner, + None => { + let inner = cb(); + self.assign(Some(inner)); + inner + }, + } + } } impl JS {