Use MutNullableJS::or_init in Document.

This commit is contained in:
Ms2ger 2014-12-04 15:50:13 +01:00
parent d26283c065
commit c66cefa313

View file

@ -483,10 +483,7 @@ impl<'a> PrivateDocumentHelpers for JSRef<'a, Document> {
impl<'a> DocumentMethods for JSRef<'a, Document> { impl<'a> DocumentMethods for JSRef<'a, Document> {
// http://dom.spec.whatwg.org/#dom-document-implementation // http://dom.spec.whatwg.org/#dom-document-implementation
fn Implementation(self) -> Temporary<DOMImplementation> { fn Implementation(self) -> Temporary<DOMImplementation> {
if self.implementation.get().is_none() { self.implementation.or_init(|| DOMImplementation::new(self))
self.implementation.assign(Some(DOMImplementation::new(self)));
}
self.implementation.get().unwrap()
} }
// http://dom.spec.whatwg.org/#dom-document-url // http://dom.spec.whatwg.org/#dom-document-url
@ -874,23 +871,21 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
} }
fn Images(self) -> Temporary<HTMLCollection> { fn Images(self) -> Temporary<HTMLCollection> {
if self.images.get().is_none() { self.images.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box ImagesFilter; let filter = box ImagesFilter;
self.images.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.images.get().unwrap()
} }
fn Embeds(self) -> Temporary<HTMLCollection> { fn Embeds(self) -> Temporary<HTMLCollection> {
if self.embeds.get().is_none() { self.embeds.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box EmbedsFilter; let filter = box EmbedsFilter;
self.embeds.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.embeds.get().unwrap()
} }
fn Plugins(self) -> Temporary<HTMLCollection> { fn Plugins(self) -> Temporary<HTMLCollection> {
@ -898,54 +893,49 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
} }
fn Links(self) -> Temporary<HTMLCollection> { fn Links(self) -> Temporary<HTMLCollection> {
if self.links.get().is_none() { self.links.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box LinksFilter; let filter = box LinksFilter;
self.links.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.links.get().unwrap()
} }
fn Forms(self) -> Temporary<HTMLCollection> { fn Forms(self) -> Temporary<HTMLCollection> {
if self.forms.get().is_none() { self.forms.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box FormsFilter; let filter = box FormsFilter;
self.forms.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.forms.get().unwrap()
} }
fn Scripts(self) -> Temporary<HTMLCollection> { fn Scripts(self) -> Temporary<HTMLCollection> {
if self.scripts.get().is_none() { self.scripts.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box ScriptsFilter; let filter = box ScriptsFilter;
self.scripts.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.scripts.get().unwrap()
} }
fn Anchors(self) -> Temporary<HTMLCollection> { fn Anchors(self) -> Temporary<HTMLCollection> {
if self.anchors.get().is_none() { self.anchors.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box AnchorsFilter; let filter = box AnchorsFilter;
self.anchors.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.anchors.get().unwrap()
} }
fn Applets(self) -> Temporary<HTMLCollection> { fn Applets(self) -> Temporary<HTMLCollection> {
// FIXME: This should be return OBJECT elements containing applets. // FIXME: This should be return OBJECT elements containing applets.
if self.applets.get().is_none() { self.applets.or_init(|| {
let window = self.window.root(); let window = self.window.root();
let root = NodeCast::from_ref(self); let root = NodeCast::from_ref(self);
let filter = box AppletsFilter; let filter = box AppletsFilter;
self.applets.assign(Some(HTMLCollection::create(*window, root, filter))); HTMLCollection::create(*window, root, filter)
} })
self.applets.get().unwrap()
} }
fn Location(self) -> Temporary<Location> { fn Location(self) -> Temporary<Location> {