diff options
Diffstat (limited to 'components/script/dom/domimplementation.rs')
-rw-r--r-- | components/script/dom/domimplementation.rs | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 8171db316ac..28b5dccfd40 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -10,8 +10,7 @@ use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::codegen::InheritTypes::NodeCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JS, JSRef, OptionalRootable, Root, Rootable}; -use dom::bindings::js::Temporary; +use dom::bindings::js::{JS, Root}; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::bindings::utils::validate_qualified_name; use dom::document::{Document, DocumentHelpers, IsHTMLDocument}; @@ -21,7 +20,6 @@ use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlheadelement::HTMLHeadElement; use dom::htmlhtmlelement::HTMLHtmlElement; use dom::htmltitleelement::HTMLTitleElement; -use dom::node::Node; use dom::text::Text; use util::str::DOMString; @@ -35,15 +33,15 @@ pub struct DOMImplementation { } impl DOMImplementation { - fn new_inherited(document: JSRef<Document>) -> DOMImplementation { + fn new_inherited(document: &Document) -> DOMImplementation { DOMImplementation { reflector_: Reflector::new(), - document: JS::from_rooted(document), + document: JS::from_ref(document), } } - pub fn new(document: JSRef<Document>) -> Temporary<DOMImplementation> { - let window = document.window().root(); + pub fn new(document: &Document) -> Root<DOMImplementation> { + let window = document.window(); reflect_dom_object(box DOMImplementation::new_inherited(document), GlobalRef::Window(window.r()), DOMImplementationBinding::Wrap) @@ -51,10 +49,10 @@ impl DOMImplementation { } // https://dom.spec.whatwg.org/#domimplementation -impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { +impl<'a> DOMImplementationMethods for &'a DOMImplementation { // https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype fn CreateDocumentType(self, qualified_name: DOMString, pubid: DOMString, sysid: DOMString) - -> Fallible<Temporary<DocumentType>> { + -> Fallible<Root<DocumentType>> { try!(validate_qualified_name(&qualified_name)); let document = self.document.root(); Ok(DocumentType::new(qualified_name, Some(pubid), Some(sysid), document.r())) @@ -62,15 +60,15 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { // https://dom.spec.whatwg.org/#dom-domimplementation-createdocument fn CreateDocument(self, namespace: Option<DOMString>, qname: DOMString, - maybe_doctype: Option<JSRef<DocumentType>>) -> Fallible<Temporary<Document>> { + maybe_doctype: Option<&DocumentType>) -> Fallible<Root<Document>> { let doc = self.document.root(); let doc = doc.r(); - let win = doc.window().root(); + let win = doc.window(); let loader = DocumentLoader::new(&*doc.loader()); // Step 1. let doc = Document::new(win.r(), None, IsHTMLDocument::NonHTMLDocument, - None, None, DocumentSource::NotFromParser, loader).root(); + None, None, DocumentSource::NotFromParser, loader); // Step 2-3. let maybe_elem = if qname.is_empty() { None @@ -82,19 +80,19 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { }; { - let doc_node: JSRef<Node> = NodeCast::from_ref(doc.r()); + let doc_node = NodeCast::from_ref(doc.r()); // Step 4. match maybe_doctype { None => (), Some(ref doctype) => { - let doc_type: JSRef<Node> = NodeCast::from_ref(*doctype); + let doc_type = NodeCast::from_ref(*doctype); assert!(doc_node.AppendChild(doc_type).is_ok()) } } // Step 5. - match maybe_elem.root() { + match maybe_elem { None => (), Some(ref elem) => { assert!(doc_node.AppendChild(NodeCast::from_ref(elem.r())).is_ok()) @@ -106,37 +104,38 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { // FIXME: https://github.com/mozilla/servo/issues/1522 // Step 7. - Ok(Temporary::from_rooted(doc.r())) + Ok(doc) } // https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument - fn CreateHTMLDocument(self, title: Option<DOMString>) -> Temporary<Document> { + fn CreateHTMLDocument(self, title: Option<DOMString>) -> Root<Document> { let document = self.document.root(); let document = document.r(); - let win = document.window().root(); + let win = document.window(); let loader = DocumentLoader::new(&*document.loader()); // Step 1-2. let doc = Document::new(win.r(), None, IsHTMLDocument::HTMLDocument, None, None, - DocumentSource::NotFromParser, loader).root(); - let doc_node: JSRef<Node> = NodeCast::from_ref(doc.r()); + DocumentSource::NotFromParser, loader); { // Step 3. - let doc_type = DocumentType::new("html".to_owned(), None, None, doc.r()).root(); + let doc_node = NodeCast::from_ref(doc.r()); + let doc_type = DocumentType::new("html".to_owned(), None, None, doc.r()); assert!(doc_node.AppendChild(NodeCast::from_ref(doc_type.r())).is_ok()); } { // Step 4. - let doc_html: Root<Node> = NodeCast::from_temporary( - HTMLHtmlElement::new("html".to_owned(), None, doc.r())).root(); + let doc_node = NodeCast::from_ref(doc.r()); + let doc_html = NodeCast::from_root( + HTMLHtmlElement::new("html".to_owned(), None, doc.r())); assert!(doc_node.AppendChild(doc_html.r()).is_ok()); { // Step 5. - let doc_head: Root<Node> = NodeCast::from_temporary( - HTMLHeadElement::new("head".to_owned(), None, doc.r())).root(); + let doc_head = NodeCast::from_root( + HTMLHeadElement::new("head".to_owned(), None, doc.r())); assert!(doc_html.r().AppendChild(doc_head.r()).is_ok()); // Step 6. @@ -144,19 +143,19 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { None => (), Some(title_str) => { // Step 6.1. - let doc_title: Root<Node> = NodeCast::from_temporary( - HTMLTitleElement::new("title".to_owned(), None, doc.r())).root(); + let doc_title = NodeCast::from_root( + HTMLTitleElement::new("title".to_owned(), None, doc.r())); assert!(doc_head.r().AppendChild(doc_title.r()).is_ok()); // Step 6.2. - let title_text: Root<Text> = Text::new(title_str, doc.r()).root(); + let title_text = Text::new(title_str, doc.r()); assert!(doc_title.r().AppendChild(NodeCast::from_ref(title_text.r())).is_ok()); } } } // Step 7. - let doc_body: Root<HTMLBodyElement> = HTMLBodyElement::new("body".to_owned(), None, doc.r()).root(); + let doc_body = HTMLBodyElement::new("body".to_owned(), None, doc.r()); assert!(doc_html.r().AppendChild(NodeCast::from_ref(doc_body.r())).is_ok()); } @@ -164,7 +163,7 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { // FIXME: https://github.com/mozilla/servo/issues/1522 // Step 9. - Temporary::from_rooted(doc.r()) + doc } // https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature |