use dom_struct::dom_struct;
use js::rust::HandleObject;
use crate::dom::bindings::codegen::Bindings::CommentBinding::CommentMethods;
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::str::DOMString;
use crate::dom::characterdata::CharacterData;
use crate::dom::document::Document;
use crate::dom::node::Node;
use crate::dom::window::Window;
#[dom_struct]
pub(crate) struct Comment {
characterdata: CharacterData,
}
impl Comment {
fn new_inherited(text: DOMString, document: &Document) -> Comment {
Comment {
characterdata: CharacterData::new_inherited(text, document),
}
}
pub(crate) fn new(
cx: &mut js::context::JSContext,
text: DOMString,
document: &Document,
proto: Option<HandleObject>,
) -> DomRoot<Comment> {
Node::reflect_node_with_proto(
cx,
Box::new(Comment::new_inherited(text, document)),
document,
proto,
)
}
}
impl CommentMethods<crate::DomTypeHolder> for Comment {
fn Constructor(
cx: &mut js::context::JSContext,
window: &Window,
proto: Option<HandleObject>,
data: DOMString,
) -> Fallible<DomRoot<Comment>> {
let document = window.Document();
Ok(Comment::new(cx, data, &document, proto))
}
}