diff options
author | Jack Moffitt <jack@metajack.im> | 2014-08-28 09:34:23 -0600 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2014-09-08 20:21:42 -0600 |
commit | c6ab60dbfc6da7b4f800c9e40893c8b58413960c (patch) | |
tree | d1d74076cf7fa20e4f77ec7cb82cae98b67362cb /components/script/dom/domparser.rs | |
parent | db2f642c32fc5bed445bb6f2e45b0f6f0b4342cf (diff) | |
download | servo-c6ab60dbfc6da7b4f800c9e40893c8b58413960c.tar.gz servo-c6ab60dbfc6da7b4f800c9e40893c8b58413960c.zip |
Cargoify servo
Diffstat (limited to 'components/script/dom/domparser.rs')
-rw-r--r-- | components/script/dom/domparser.rs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs new file mode 100644 index 00000000000..65273cab756 --- /dev/null +++ b/components/script/dom/domparser.rs @@ -0,0 +1,64 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use dom::bindings::codegen::Bindings::DOMParserBinding; +use dom::bindings::codegen::Bindings::DOMParserBinding::DOMParserMethods; +use dom::bindings::codegen::Bindings::DOMParserBinding::SupportedTypeValues::{Text_html, Text_xml}; +use dom::bindings::error::{Fallible, FailureUnknown}; +use dom::bindings::global::{GlobalRef, Window}; +use dom::bindings::js::{JS, JSRef, Temporary}; +use dom::bindings::utils::{Reflector, Reflectable, reflect_dom_object}; +use dom::document::{Document, HTMLDocument, NonHTMLDocument}; +use dom::window::Window; +use servo_util::str::DOMString; + +#[deriving(Encodable)] +pub struct DOMParser { + window: JS<Window>, //XXXjdm Document instead? + reflector_: Reflector +} + +impl DOMParser { + pub fn new_inherited(window: &JSRef<Window>) -> DOMParser { + DOMParser { + window: JS::from_rooted(window), + reflector_: Reflector::new() + } + } + + pub fn new(window: &JSRef<Window>) -> Temporary<DOMParser> { + reflect_dom_object(box DOMParser::new_inherited(window), &Window(*window), + DOMParserBinding::Wrap) + } + + pub fn Constructor(global: &GlobalRef) -> Fallible<Temporary<DOMParser>> { + Ok(DOMParser::new(global.as_window())) + } +} + +impl<'a> DOMParserMethods for JSRef<'a, DOMParser> { + fn ParseFromString(&self, + _s: DOMString, + ty: DOMParserBinding::SupportedType) + -> Fallible<Temporary<Document>> { + let window = self.window.root(); + match ty { + Text_html => { + Ok(Document::new(&window.root_ref(), None, HTMLDocument, Some("text/html".to_string()))) + } + Text_xml => { + Ok(Document::new(&window.root_ref(), None, NonHTMLDocument, Some("text/xml".to_string()))) + } + _ => { + Err(FailureUnknown) + } + } + } +} + +impl Reflectable for DOMParser { + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } +} |