diff options
Diffstat (limited to 'src/components/script/dom/domparser.rs')
-rw-r--r-- | src/components/script/dom/domparser.rs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/components/script/dom/domparser.rs b/src/components/script/dom/domparser.rs index 0b8ba1f0326..1e37b081909 100644 --- a/src/components/script/dom/domparser.rs +++ b/src/components/script/dom/domparser.rs @@ -3,9 +3,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::DOMParserBinding; +use dom::bindings::codegen::DOMParserBinding::SupportedTypeValues::{Text_html, Text_xml}; use dom::bindings::utils::{DOMString, ErrorResult, WrapperCache, CacheableWrapper}; -use dom::document::Document; +use dom::document::{AbstractDocument, Document, XML}; use dom::element::{Element, HTMLHtmlElement, HTMLHtmlElementTypeId}; +use dom::htmldocument::HTMLDocument; use dom::node::Node; use dom::window::Window; @@ -34,17 +36,29 @@ impl DOMParser { } pub fn ParseFromString(&self, - _s: DOMString, - _type: DOMParserBinding::SupportedType, + _s: &DOMString, + ty: DOMParserBinding::SupportedType, _rv: &mut ErrorResult) - -> @mut Document { + -> AbstractDocument { unsafe { let root = ~HTMLHtmlElement { parent: Element::new(HTMLHtmlElementTypeId, ~"html") }; let root = Node::as_abstract_node((*self.owner.page).js_info.get_ref().js_compartment.cx.ptr, root); - Document(root, None) + let cx = (*self.owner.page).js_info.get_ref().js_compartment.cx.ptr; + + match ty { + Text_html => { + HTMLDocument::new(root, None) + } + Text_xml => { + AbstractDocument::as_abstract(cx, @mut Document::new(root, None, XML)) + } + _ => { + fail!("unsupported document type") + } + } } } } |