aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/domparser.rs
diff options
context:
space:
mode:
authorJack Moffitt <jack@metajack.im>2014-08-28 09:34:23 -0600
committerJack Moffitt <jack@metajack.im>2014-09-08 20:21:42 -0600
commitc6ab60dbfc6da7b4f800c9e40893c8b58413960c (patch)
treed1d74076cf7fa20e4f77ec7cb82cae98b67362cb /components/script/dom/domparser.rs
parentdb2f642c32fc5bed445bb6f2e45b0f6f0b4342cf (diff)
downloadservo-c6ab60dbfc6da7b4f800c9e40893c8b58413960c.tar.gz
servo-c6ab60dbfc6da7b4f800c9e40893c8b58413960c.zip
Cargoify servo
Diffstat (limited to 'components/script/dom/domparser.rs')
-rw-r--r--components/script/dom/domparser.rs64
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_
+ }
+}