mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
auto merge of #1074 : saneyuki/servo/macro, r=jdm
This commit is contained in:
commit
c539945401
2 changed files with 168 additions and 215 deletions
|
@ -11,89 +11,43 @@ use js::jsapi::{JSContext, JSObject, JSTracer};
|
||||||
// generate_cacheable_wrapper
|
// generate_cacheable_wrapper
|
||||||
macro_rules! generate_cacheable_wrapper(
|
macro_rules! generate_cacheable_wrapper(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, element)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.element.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.element.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmlelement(
|
macro_rules! generate_cacheable_wrapper_htmlelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmlelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmlelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmlelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmlmediaelement(
|
macro_rules! generate_cacheable_wrapper_htmlmediaelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmlmediaelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmlmediaelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmlmediaelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmltablecellelement(
|
macro_rules! generate_cacheable_wrapper_htmltablecellelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmltablecellelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmltablecellelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmltablecellelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_node(
|
macro_rules! generate_cacheable_wrapper_node(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
|
generate_cacheable_wrapper_base!($name, $wrap, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_cacheable_wrapper_base(
|
||||||
|
($name: path, $wrap: path, $parent: ident) => (
|
||||||
impl Reflectable for $name {
|
impl Reflectable for $name {
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||||
self.node.reflector()
|
self.$parent.reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.node.mut_reflector()
|
self.$parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
||||||
|
@ -108,49 +62,39 @@ macro_rules! generate_cacheable_wrapper_node(
|
||||||
// generate_binding_object
|
// generate_binding_object
|
||||||
macro_rules! generate_binding_object(
|
macro_rules! generate_binding_object(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, element)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.element.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmlelement(
|
macro_rules! generate_binding_object_htmlelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmlelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmlelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmlmediaelement(
|
macro_rules! generate_binding_object_htmlmediaelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmlmediaelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmlmediaelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmltablecellelement(
|
macro_rules! generate_binding_object_htmltablecellelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmltablecellelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmltablecellelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_node(
|
macro_rules! generate_binding_object_node(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
|
generate_binding_base!($name, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_binding_base(
|
||||||
|
($name: path, $parent: ident) => (
|
||||||
impl BindingObject for $name {
|
impl BindingObject for $name {
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||||
self.node.GetParentObject(cx)
|
self.$parent.GetParentObject(cx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -160,54 +104,45 @@ macro_rules! generate_binding_object_node(
|
||||||
// generate_traceable
|
// generate_traceable
|
||||||
macro_rules! generate_traceable(
|
macro_rules! generate_traceable(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, element)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.element.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmlelement(
|
macro_rules! generate_traceable_htmlelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmlelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmlelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmlmediaelement(
|
macro_rules! generate_traceable_htmlmediaelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmlmediaelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmlmediaelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmltablecellelement(
|
macro_rules! generate_traceable_htmltablecellelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmltablecellelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmltablecellelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_node(
|
macro_rules! generate_traceable_node(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
|
generate_traceable_base!($name, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_traceable_base(
|
||||||
|
($name: path, $parent: ident) => (
|
||||||
impl Traceable for $name {
|
impl Traceable for $name {
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
fn trace(&self, trc: *mut JSTracer) {
|
||||||
self.node.trace(trc);
|
self.$parent.trace(trc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
|
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
|
||||||
generate_binding_object!(Comment)
|
generate_binding_object!(Comment)
|
||||||
generate_traceable!(Comment)
|
generate_traceable!(Comment)
|
||||||
|
|
|
@ -33,51 +33,69 @@ use extra::future::{Future, from_port};
|
||||||
use geom::size::Size2D;
|
use geom::size::Size2D;
|
||||||
|
|
||||||
macro_rules! handle_element(
|
macro_rules! handle_element(
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident, [ $(($field:ident : $field_init:expr)),* ]) => (
|
($cx: expr,
|
||||||
|
$document: expr,
|
||||||
|
$tag: expr,
|
||||||
|
$string: expr,
|
||||||
|
$type_id: expr,
|
||||||
|
$ctor: ident,
|
||||||
|
[ $(($field:ident : $field_init:expr)),* ]) => (
|
||||||
|
handle_element_base!(htmlelement, HTMLElement,
|
||||||
|
$cx, $document, $tag, $string, $type_id, $ctor,
|
||||||
|
[$(($field:$field_init)),*]);
|
||||||
|
)
|
||||||
|
)
|
||||||
|
macro_rules! handle_htmlelement(
|
||||||
|
($cx: expr,
|
||||||
|
$document: expr,
|
||||||
|
$tag: expr,
|
||||||
|
$string: expr,
|
||||||
|
$type_id: expr,
|
||||||
|
$ctor: ident) => (
|
||||||
|
handle_element_base!(element, Element,
|
||||||
|
$cx, $document, $tag, $string, $type_id, $ctor, []);
|
||||||
|
)
|
||||||
|
)
|
||||||
|
macro_rules! handle_htmlmediaelement(
|
||||||
|
($cx: expr,
|
||||||
|
$document: expr,
|
||||||
|
$tag: expr,
|
||||||
|
$string: expr,
|
||||||
|
$type_id: expr,
|
||||||
|
$ctor: ident) => (
|
||||||
|
handle_element_base!(htmlmediaelement, HTMLMediaElement,
|
||||||
|
$cx, $document, $tag, $string, $type_id, $ctor, []);
|
||||||
|
)
|
||||||
|
)
|
||||||
|
macro_rules! handle_htmltablecellelement(
|
||||||
|
($cx: expr,
|
||||||
|
$document: expr,
|
||||||
|
$tag: expr,
|
||||||
|
$string: expr,
|
||||||
|
$type_id: expr,
|
||||||
|
$ctor: ident) => (
|
||||||
|
handle_element_base!(htmltablecellelement, HTMLTableCellElement,
|
||||||
|
$cx, $document, $tag, $string, $type_id, $ctor, []);
|
||||||
|
)
|
||||||
|
)
|
||||||
|
macro_rules! handle_element_base(
|
||||||
|
($parent: ident,
|
||||||
|
$parent_init: ident,
|
||||||
|
$cx: expr,
|
||||||
|
$document: expr,
|
||||||
|
$tag: expr,
|
||||||
|
$string: expr,
|
||||||
|
$type_id: expr,
|
||||||
|
$ctor: ident,
|
||||||
|
[ $(($field:ident : $field_init:expr)),* ]) => (
|
||||||
if eq_slice($tag, $string) {
|
if eq_slice($tag, $string) {
|
||||||
let _element = @$ctor {
|
let _element = @$ctor {
|
||||||
htmlelement: HTMLElement::new($type_id, ($tag).to_str(), document),
|
$parent: $parent_init::new($type_id, ($tag).to_str(), $document),
|
||||||
$(
|
$(
|
||||||
$field: $field_init,
|
$field: $field_init,
|
||||||
)*
|
)*
|
||||||
};
|
};
|
||||||
unsafe {
|
return unsafe { Node::as_abstract_node($cx, _element) };
|
||||||
return Node::as_abstract_node(cx, _element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
macro_rules! handle_htmlelement(
|
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
|
||||||
if eq_slice($tag, $string) {
|
|
||||||
let _element = @HTMLElement::new($type_id, ($tag).to_str(), document);
|
|
||||||
unsafe {
|
|
||||||
return Node::as_abstract_node(cx, _element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
macro_rules! handle_htmlmediaelement(
|
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
|
||||||
if eq_slice($tag, $string) {
|
|
||||||
let _element = @$ctor {
|
|
||||||
htmlmediaelement: HTMLMediaElement::new($type_id, ($tag).to_str(), document)
|
|
||||||
};
|
|
||||||
unsafe {
|
|
||||||
return Node::as_abstract_node(cx, _element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
macro_rules! handle_htmltablecellelement(
|
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
|
||||||
if eq_slice($tag, $string) {
|
|
||||||
let _element = @$ctor {
|
|
||||||
htmltablecellelement: HTMLTableCellElement::new($type_id, ($tag).to_str(), document)
|
|
||||||
};
|
|
||||||
unsafe {
|
|
||||||
return Node::as_abstract_node(cx, _element);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -224,92 +242,92 @@ fn js_script_listener(to_parent: SharedChan<HtmlDiscoveryMessage>,
|
||||||
|
|
||||||
pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocument) -> AbstractNode<ScriptView> {
|
pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocument) -> AbstractNode<ScriptView> {
|
||||||
// TODO (Issue #85): use atoms
|
// TODO (Issue #85): use atoms
|
||||||
handle_element!(cx, tag, "a", HTMLAnchorElementTypeId, HTMLAnchorElement, []);
|
handle_element!(cx, document, tag, "a", HTMLAnchorElementTypeId, HTMLAnchorElement, []);
|
||||||
handle_element!(cx, tag, "applet", HTMLAppletElementTypeId, HTMLAppletElement, []);
|
handle_element!(cx, document, tag, "applet", HTMLAppletElementTypeId, HTMLAppletElement, []);
|
||||||
handle_element!(cx, tag, "area", HTMLAreaElementTypeId, HTMLAreaElement, []);
|
handle_element!(cx, document, tag, "area", HTMLAreaElementTypeId, HTMLAreaElement, []);
|
||||||
handle_element!(cx, tag, "base", HTMLBaseElementTypeId, HTMLBaseElement, []);
|
handle_element!(cx, document, tag, "base", HTMLBaseElementTypeId, HTMLBaseElement, []);
|
||||||
handle_element!(cx, tag, "br", HTMLBRElementTypeId, HTMLBRElement, []);
|
handle_element!(cx, document, tag, "br", HTMLBRElementTypeId, HTMLBRElement, []);
|
||||||
handle_element!(cx, tag, "body", HTMLBodyElementTypeId, HTMLBodyElement, []);
|
handle_element!(cx, document, tag, "body", HTMLBodyElementTypeId, HTMLBodyElement, []);
|
||||||
handle_element!(cx, tag, "button", HTMLButtonElementTypeId, HTMLButtonElement, []);
|
handle_element!(cx, document, tag, "button", HTMLButtonElementTypeId, HTMLButtonElement, []);
|
||||||
handle_element!(cx, tag, "canvas", HTMLCanvasElementTypeId, HTMLCanvasElement, []);
|
handle_element!(cx, document, tag, "canvas", HTMLCanvasElementTypeId, HTMLCanvasElement, []);
|
||||||
handle_element!(cx, tag, "data", HTMLDataElementTypeId, HTMLDataElement, []);
|
handle_element!(cx, document, tag, "data", HTMLDataElementTypeId, HTMLDataElement, []);
|
||||||
handle_element!(cx, tag, "datalist",HTMLDataListElementTypeId, HTMLDataListElement, []);
|
handle_element!(cx, document, tag, "datalist",HTMLDataListElementTypeId, HTMLDataListElement, []);
|
||||||
handle_element!(cx, tag, "directory",HTMLDirectoryElementTypeId, HTMLDirectoryElement, []);
|
handle_element!(cx, document, tag, "directory",HTMLDirectoryElementTypeId, HTMLDirectoryElement, []);
|
||||||
handle_element!(cx, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []);
|
handle_element!(cx, document, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []);
|
||||||
handle_element!(cx, tag, "dl", HTMLDListElementTypeId, HTMLDListElement, []);
|
handle_element!(cx, document, tag, "dl", HTMLDListElementTypeId, HTMLDListElement, []);
|
||||||
handle_element!(cx, tag, "embed", HTMLEmbedElementTypeId, HTMLEmbedElement, []);
|
handle_element!(cx, document, tag, "embed", HTMLEmbedElementTypeId, HTMLEmbedElement, []);
|
||||||
handle_element!(cx, tag, "fieldset",HTMLFieldSetElementTypeId, HTMLFieldSetElement, []);
|
handle_element!(cx, document, tag, "fieldset",HTMLFieldSetElementTypeId, HTMLFieldSetElement, []);
|
||||||
handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []);
|
handle_element!(cx, document, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []);
|
||||||
handle_element!(cx, tag, "form", HTMLFormElementTypeId, HTMLFormElement, []);
|
handle_element!(cx, document, tag, "form", HTMLFormElementTypeId, HTMLFormElement, []);
|
||||||
handle_element!(cx, tag, "frame", HTMLFrameElementTypeId, HTMLFrameElement, []);
|
handle_element!(cx, document, tag, "frame", HTMLFrameElementTypeId, HTMLFrameElement, []);
|
||||||
handle_element!(cx, tag, "frameset",HTMLFrameSetElementTypeId, HTMLFrameSetElement, []);
|
handle_element!(cx, document, tag, "frameset",HTMLFrameSetElementTypeId, HTMLFrameSetElement, []);
|
||||||
handle_element!(cx, tag, "hr", HTMLHRElementTypeId, HTMLHRElement, []);
|
handle_element!(cx, document, tag, "hr", HTMLHRElementTypeId, HTMLHRElement, []);
|
||||||
handle_element!(cx, tag, "head", HTMLHeadElementTypeId, HTMLHeadElement, []);
|
handle_element!(cx, document, tag, "head", HTMLHeadElementTypeId, HTMLHeadElement, []);
|
||||||
handle_element!(cx, tag, "html", HTMLHtmlElementTypeId, HTMLHtmlElement, []);
|
handle_element!(cx, document, tag, "html", HTMLHtmlElementTypeId, HTMLHtmlElement, []);
|
||||||
handle_element!(cx, tag, "input", HTMLInputElementTypeId, HTMLInputElement, []);
|
handle_element!(cx, document, tag, "input", HTMLInputElementTypeId, HTMLInputElement, []);
|
||||||
handle_element!(cx, tag, "label", HTMLLabelElementTypeId, HTMLLabelElement, []);
|
handle_element!(cx, document, tag, "label", HTMLLabelElementTypeId, HTMLLabelElement, []);
|
||||||
handle_element!(cx, tag, "legend", HTMLLegendElementTypeId, HTMLLegendElement, []);
|
handle_element!(cx, document, tag, "legend", HTMLLegendElementTypeId, HTMLLegendElement, []);
|
||||||
handle_element!(cx, tag, "link", HTMLLinkElementTypeId, HTMLLinkElement, []);
|
handle_element!(cx, document, tag, "link", HTMLLinkElementTypeId, HTMLLinkElement, []);
|
||||||
handle_element!(cx, tag, "li", HTMLLIElementTypeId, HTMLLIElement, []);
|
handle_element!(cx, document, tag, "li", HTMLLIElementTypeId, HTMLLIElement, []);
|
||||||
handle_element!(cx, tag, "map", HTMLMapElementTypeId, HTMLMapElement, []);
|
handle_element!(cx, document, tag, "map", HTMLMapElementTypeId, HTMLMapElement, []);
|
||||||
handle_element!(cx, tag, "meta", HTMLMetaElementTypeId, HTMLMetaElement, []);
|
handle_element!(cx, document, tag, "meta", HTMLMetaElementTypeId, HTMLMetaElement, []);
|
||||||
handle_element!(cx, tag, "meter", HTMLMeterElementTypeId, HTMLMeterElement, []);
|
handle_element!(cx, document, tag, "meter", HTMLMeterElementTypeId, HTMLMeterElement, []);
|
||||||
handle_element!(cx, tag, "mod", HTMLModElementTypeId, HTMLModElement, []);
|
handle_element!(cx, document, tag, "mod", HTMLModElementTypeId, HTMLModElement, []);
|
||||||
handle_element!(cx, tag, "object", HTMLObjectElementTypeId, HTMLObjectElement, []);
|
handle_element!(cx, document, tag, "object", HTMLObjectElementTypeId, HTMLObjectElement, []);
|
||||||
handle_element!(cx, tag, "ol", HTMLOListElementTypeId, HTMLOListElement, []);
|
handle_element!(cx, document, tag, "ol", HTMLOListElementTypeId, HTMLOListElement, []);
|
||||||
handle_element!(cx, tag, "option", HTMLOptionElementTypeId, HTMLOptionElement, []);
|
handle_element!(cx, document, tag, "option", HTMLOptionElementTypeId, HTMLOptionElement, []);
|
||||||
handle_element!(cx, tag, "optgroup",HTMLOptGroupElementTypeId, HTMLOptGroupElement, []);
|
handle_element!(cx, document, tag, "optgroup",HTMLOptGroupElementTypeId, HTMLOptGroupElement, []);
|
||||||
handle_element!(cx, tag, "output", HTMLOutputElementTypeId, HTMLOutputElement, []);
|
handle_element!(cx, document, tag, "output", HTMLOutputElementTypeId, HTMLOutputElement, []);
|
||||||
handle_element!(cx, tag, "p", HTMLParagraphElementTypeId, HTMLParagraphElement, []);
|
handle_element!(cx, document, tag, "p", HTMLParagraphElementTypeId, HTMLParagraphElement, []);
|
||||||
handle_element!(cx, tag, "param", HTMLParamElementTypeId, HTMLParamElement, []);
|
handle_element!(cx, document, tag, "param", HTMLParamElementTypeId, HTMLParamElement, []);
|
||||||
handle_element!(cx, tag, "pre", HTMLPreElementTypeId, HTMLPreElement, []);
|
handle_element!(cx, document, tag, "pre", HTMLPreElementTypeId, HTMLPreElement, []);
|
||||||
handle_element!(cx, tag, "progress",HTMLProgressElementTypeId, HTMLProgressElement, []);
|
handle_element!(cx, document, tag, "progress",HTMLProgressElementTypeId, HTMLProgressElement, []);
|
||||||
handle_element!(cx, tag, "q", HTMLQuoteElementTypeId, HTMLQuoteElement, []);
|
handle_element!(cx, document, tag, "q", HTMLQuoteElementTypeId, HTMLQuoteElement, []);
|
||||||
handle_element!(cx, tag, "script", HTMLScriptElementTypeId, HTMLScriptElement, []);
|
handle_element!(cx, document, tag, "script", HTMLScriptElementTypeId, HTMLScriptElement, []);
|
||||||
handle_element!(cx, tag, "select", HTMLSelectElementTypeId, HTMLSelectElement, []);
|
handle_element!(cx, document, tag, "select", HTMLSelectElementTypeId, HTMLSelectElement, []);
|
||||||
handle_element!(cx, tag, "source", HTMLSourceElementTypeId, HTMLSourceElement, []);
|
handle_element!(cx, document, tag, "source", HTMLSourceElementTypeId, HTMLSourceElement, []);
|
||||||
handle_element!(cx, tag, "span", HTMLSpanElementTypeId, HTMLSpanElement, []);
|
handle_element!(cx, document, tag, "span", HTMLSpanElementTypeId, HTMLSpanElement, []);
|
||||||
handle_element!(cx, tag, "style", HTMLStyleElementTypeId, HTMLStyleElement, []);
|
handle_element!(cx, document, tag, "style", HTMLStyleElementTypeId, HTMLStyleElement, []);
|
||||||
handle_element!(cx, tag, "table", HTMLTableElementTypeId, HTMLTableElement, []);
|
handle_element!(cx, document, tag, "table", HTMLTableElementTypeId, HTMLTableElement, []);
|
||||||
handle_element!(cx, tag, "caption", HTMLTableCaptionElementTypeId, HTMLTableCaptionElement, []);
|
handle_element!(cx, document, tag, "caption", HTMLTableCaptionElementTypeId, HTMLTableCaptionElement, []);
|
||||||
handle_element!(cx, tag, "col", HTMLTableColElementTypeId, HTMLTableColElement, []);
|
handle_element!(cx, document, tag, "col", HTMLTableColElementTypeId, HTMLTableColElement, []);
|
||||||
handle_element!(cx, tag, "colgroup",HTMLTableColElementTypeId, HTMLTableColElement, []);
|
handle_element!(cx, document, tag, "colgroup",HTMLTableColElementTypeId, HTMLTableColElement, []);
|
||||||
handle_element!(cx, tag, "tbody", HTMLTableSectionElementTypeId, HTMLTableSectionElement, []);
|
handle_element!(cx, document, tag, "tbody", HTMLTableSectionElementTypeId, HTMLTableSectionElement, []);
|
||||||
handle_element!(cx, tag, "template",HTMLTemplateElementTypeId, HTMLTemplateElement, []);
|
handle_element!(cx, document, tag, "template",HTMLTemplateElementTypeId, HTMLTemplateElement, []);
|
||||||
handle_element!(cx, tag, "textarea",HTMLTextAreaElementTypeId, HTMLTextAreaElement, []);
|
handle_element!(cx, document, tag, "textarea",HTMLTextAreaElementTypeId, HTMLTextAreaElement, []);
|
||||||
handle_element!(cx, tag, "time", HTMLTimeElementTypeId, HTMLTimeElement, []);
|
handle_element!(cx, document, tag, "time", HTMLTimeElementTypeId, HTMLTimeElement, []);
|
||||||
handle_element!(cx, tag, "title", HTMLTitleElementTypeId, HTMLTitleElement, []);
|
handle_element!(cx, document, tag, "title", HTMLTitleElementTypeId, HTMLTitleElement, []);
|
||||||
handle_element!(cx, tag, "tr", HTMLTableRowElementTypeId, HTMLTableRowElement, []);
|
handle_element!(cx, document, tag, "tr", HTMLTableRowElementTypeId, HTMLTableRowElement, []);
|
||||||
handle_element!(cx, tag, "track", HTMLTrackElementTypeId, HTMLTrackElement, []);
|
handle_element!(cx, document, tag, "track", HTMLTrackElementTypeId, HTMLTrackElement, []);
|
||||||
handle_element!(cx, tag, "ul", HTMLUListElementTypeId, HTMLUListElement, []);
|
handle_element!(cx, document, tag, "ul", HTMLUListElementTypeId, HTMLUListElement, []);
|
||||||
|
|
||||||
handle_element!(cx, tag, "img", HTMLImageElementTypeId, HTMLImageElement, [(image: None)]);
|
handle_element!(cx, document, tag, "img", HTMLImageElementTypeId, HTMLImageElement, [(image: None)]);
|
||||||
handle_element!(cx, tag, "iframe", HTMLIframeElementTypeId, HTMLIFrameElement, [(frame: None), (size: None), (sandbox: None)]);
|
handle_element!(cx, document, tag, "iframe", HTMLIframeElementTypeId, HTMLIFrameElement, [(frame: None), (size: None), (sandbox: None)]);
|
||||||
|
|
||||||
handle_element!(cx, tag, "h1", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading1)]);
|
handle_element!(cx, document, tag, "h1", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading1)]);
|
||||||
handle_element!(cx, tag, "h2", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading2)]);
|
handle_element!(cx, document, tag, "h2", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading2)]);
|
||||||
handle_element!(cx, tag, "h3", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading3)]);
|
handle_element!(cx, document, tag, "h3", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading3)]);
|
||||||
handle_element!(cx, tag, "h4", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading4)]);
|
handle_element!(cx, document, tag, "h4", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading4)]);
|
||||||
handle_element!(cx, tag, "h5", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading5)]);
|
handle_element!(cx, document, tag, "h5", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading5)]);
|
||||||
handle_element!(cx, tag, "h6", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading6)]);
|
handle_element!(cx, document, tag, "h6", HTMLHeadingElementTypeId, HTMLHeadingElement, [(level: Heading6)]);
|
||||||
|
|
||||||
|
|
||||||
handle_htmlelement!(cx, tag, "aside", HTMLElementTypeId, HTMLElement);
|
handle_htmlelement!(cx, document, tag, "aside", HTMLElementTypeId, HTMLElement);
|
||||||
handle_htmlelement!(cx, tag, "b", HTMLElementTypeId, HTMLElement);
|
handle_htmlelement!(cx, document, tag, "b", HTMLElementTypeId, HTMLElement);
|
||||||
handle_htmlelement!(cx, tag, "i", HTMLElementTypeId, HTMLElement);
|
handle_htmlelement!(cx, document, tag, "i", HTMLElementTypeId, HTMLElement);
|
||||||
handle_htmlelement!(cx, tag, "section", HTMLElementTypeId, HTMLElement);
|
handle_htmlelement!(cx, document, tag, "section", HTMLElementTypeId, HTMLElement);
|
||||||
handle_htmlelement!(cx, tag, "small", HTMLElementTypeId, HTMLElement);
|
handle_htmlelement!(cx, document, tag, "small", HTMLElementTypeId, HTMLElement);
|
||||||
|
|
||||||
handle_htmlmediaelement!(cx, tag, "audio", HTMLAudioElementTypeId, HTMLAudioElement);
|
handle_htmlmediaelement!(cx, document, tag, "audio", HTMLAudioElementTypeId, HTMLAudioElement);
|
||||||
handle_htmlmediaelement!(cx, tag, "video", HTMLVideoElementTypeId, HTMLVideoElement);
|
handle_htmlmediaelement!(cx, document, tag, "video", HTMLVideoElementTypeId, HTMLVideoElement);
|
||||||
|
|
||||||
handle_htmltablecellelement!(cx, tag, "td", HTMLTableDataCellElementTypeId, HTMLTableDataCellElement);
|
handle_htmltablecellelement!(cx, document, tag, "td", HTMLTableDataCellElementTypeId, HTMLTableDataCellElement);
|
||||||
handle_htmltablecellelement!(cx, tag, "th", HTMLTableHeaderCellElementTypeId, HTMLTableHeaderCellElement);
|
handle_htmltablecellelement!(cx, document, tag, "th", HTMLTableHeaderCellElementTypeId, HTMLTableHeaderCellElement);
|
||||||
|
|
||||||
let element = @HTMLUnknownElement {
|
let element = @HTMLUnknownElement {
|
||||||
htmlelement: HTMLElement::new(HTMLUnknownElementTypeId, tag.to_str(), document)
|
htmlelement: HTMLElement::new(HTMLUnknownElementTypeId, tag.to_str(), document)
|
||||||
};
|
};
|
||||||
unsafe { Node::as_abstract_node(cx, element) }
|
return unsafe { Node::as_abstract_node(cx, element) };
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_html(cx: *JSContext,
|
pub fn parse_html(cx: *JSContext,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue