diff options
Diffstat (limited to 'src/components/script/dom/domparser.rs')
-rw-r--r-- | src/components/script/dom/domparser.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/components/script/dom/domparser.rs b/src/components/script/dom/domparser.rs new file mode 100644 index 00000000000..e5609e60f49 --- /dev/null +++ b/src/components/script/dom/domparser.rs @@ -0,0 +1,51 @@ +/* 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::DOMParserBinding; +use dom::bindings::utils::{DOMString, ErrorResult, WrapperCache, CacheableWrapper}; +use dom::document::Document; +use dom::element::{Element, HTMLHtmlElement, HTMLHtmlElementTypeId}; +use dom::node::Node; +use dom::window::Window; +use script_task::global_script_context; + +pub struct DOMParser { + owner: @mut Window, //XXXjdm Document instead? + wrapper: WrapperCache +} + +impl DOMParser { + pub fn new(owner: @mut Window) -> @mut DOMParser { + let parser = @mut DOMParser { + owner: owner, + wrapper: WrapperCache::new() + }; + + let cx = global_script_context().js_compartment.cx.ptr; + let cache = owner.get_wrappercache(); + let scope = cache.get_wrapper(); + parser.wrap_object_shared(cx, scope); + parser + } + + pub fn Constructor(owner: @mut Window, _rv: &mut ErrorResult) -> @mut DOMParser { + DOMParser::new(owner) + } + + pub fn ParseFromString(&self, + _s: DOMString, + _type: DOMParserBinding::SupportedType, + _rv: &mut ErrorResult) + -> @mut Document { + unsafe { + let root = ~HTMLHtmlElement { + parent: Element::new(HTMLHtmlElementTypeId, ~"html") + }; + + let root = Node::as_abstract_node(root); + Document(root, None) + } + } +} + |