diff options
Diffstat (limited to 'src/components/script/dom/domparser.rs')
-rw-r--r-- | src/components/script/dom/domparser.rs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/components/script/dom/domparser.rs b/src/components/script/dom/domparser.rs index a29cdfb32ff..ea9666c7c1d 100644 --- a/src/components/script/dom/domparser.rs +++ b/src/components/script/dom/domparser.rs @@ -4,28 +4,29 @@ use dom::bindings::codegen::DOMParserBinding; use dom::bindings::codegen::DOMParserBinding::SupportedTypeValues::{Text_html, Text_xml}; -use dom::bindings::utils::{DOMString, Fallible, Reflector, Reflectable, FailureUnknown}; +use dom::bindings::utils::{DOMString, Fallible, Reflector, Reflectable, FailureUnknown, reflect_dom_object}; use dom::document::{AbstractDocument, Document, XML}; use dom::htmldocument::HTMLDocument; use dom::window::Window; +use js::jsapi::{JSContext, JSObject}; + pub struct DOMParser { owner: @mut Window, //XXXjdm Document instead? reflector_: Reflector } impl DOMParser { - pub fn new(owner: @mut Window) -> @mut DOMParser { - let parser = @mut DOMParser { + pub fn new_inherited(owner: @mut Window) -> DOMParser { + DOMParser { owner: owner, reflector_: Reflector::new() - }; + } + } - // TODO(tkuehn): This just handles the top-level page. Need to handle subframes. - let cx = owner.get_cx(); - let scope = owner.reflector().get_jsobject(); - parser.wrap_object_shared(cx, scope); - parser + pub fn new(owner: @mut Window) -> @mut DOMParser { + reflect_dom_object(@mut DOMParser::new_inherited(owner), owner, + DOMParserBinding::Wrap) } pub fn Constructor(owner: @mut Window) -> Fallible<@mut DOMParser> { @@ -51,3 +52,20 @@ impl DOMParser { } } +impl Reflectable for DOMParser { + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ + } + + fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { + unreachable!(); + } + + fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { + Some(self.owner as @mut Reflectable) + } +} |