/* 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::utils::{DOMString, ErrorResult, null_string, CacheableWrapper}; use dom::bindings::utils::{BindingObject, WrapperCache}; use dom::bindings::codegen::TextBinding; use dom::characterdata::CharacterData; use dom::node::{AbstractNode, ScriptView, Node, TextNodeTypeId}; use dom::window::Window; use js::jsapi::{JSContext, JSObject}; /// An HTML text node. pub struct Text { parent: CharacterData, } impl Text { /// Creates a new HTML text node. pub fn new(text: ~str) -> Text { Text { parent: CharacterData::new(TextNodeTypeId, text) } } pub fn Constructor(owner: @mut Window, text: &DOMString, _rv: &mut ErrorResult) -> AbstractNode { let cx = unsafe {(*owner.page).js_info.get_ref().js_compartment.cx.ptr}; unsafe { Node::as_abstract_node(cx, @Text::new(text.to_str())) } } pub fn SplitText(&self, _offset: u32, _rv: &mut ErrorResult) -> AbstractNode { fail!("unimplemented") } pub fn GetWholeText(&self, _rv: &mut ErrorResult) -> DOMString { null_string } } impl CacheableWrapper for Text { fn get_wrappercache(&mut self) -> &mut WrapperCache { self.parent.get_wrappercache() } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; TextBinding::Wrap(cx, scope, self, &mut unused) } } impl BindingObject for Text { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { self.parent.GetParentObject(cx) } }