mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
parent
fc9a3baa71
commit
776ab67905
8 changed files with 103 additions and 18 deletions
|
@ -8,6 +8,7 @@ use dom::bindings::utils::{BindingObject, Reflector, Reflectable, Traceable};
|
||||||
|
|
||||||
use js::jsapi::{JSContext, JSObject, JSTracer};
|
use js::jsapi::{JSContext, JSObject, JSTracer};
|
||||||
|
|
||||||
|
// 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 {
|
impl Reflectable for $name {
|
||||||
|
@ -46,6 +47,44 @@ macro_rules! generate_cacheable_wrapper_htmlelement(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_cacheable_wrapper_htmlmediaelement(
|
||||||
|
($name: path, $wrap: path) => (
|
||||||
|
impl Reflectable for $name {
|
||||||
|
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(
|
||||||
|
($name: path, $wrap: path) => (
|
||||||
|
impl Reflectable for $name {
|
||||||
|
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) => (
|
||||||
impl Reflectable for $name {
|
impl Reflectable for $name {
|
||||||
|
@ -65,6 +104,8 @@ macro_rules! generate_cacheable_wrapper_node(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// generate_binding_object
|
||||||
macro_rules! generate_binding_object(
|
macro_rules! generate_binding_object(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
impl BindingObject for $name {
|
||||||
|
@ -85,6 +126,26 @@ macro_rules! generate_binding_object_htmlelement(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_binding_object_htmlmediaelement(
|
||||||
|
($name: path) => (
|
||||||
|
impl BindingObject for $name {
|
||||||
|
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||||
|
self.htmlmediaelement.GetParentObject(cx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_binding_object_htmltablecellelement(
|
||||||
|
($name: path) => (
|
||||||
|
impl BindingObject for $name {
|
||||||
|
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) => (
|
||||||
impl BindingObject for $name {
|
impl BindingObject for $name {
|
||||||
|
@ -95,6 +156,8 @@ macro_rules! generate_binding_object_node(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// generate_traceable
|
||||||
macro_rules! generate_traceable(
|
macro_rules! generate_traceable(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
impl Traceable for $name {
|
||||||
|
@ -115,6 +178,26 @@ macro_rules! generate_traceable_htmlelement(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_traceable_htmlmediaelement(
|
||||||
|
($name: path) => (
|
||||||
|
impl Traceable for $name {
|
||||||
|
fn trace(&self, trc: *mut JSTracer) {
|
||||||
|
self.htmlmediaelement.trace(trc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_traceable_htmltablecellelement(
|
||||||
|
($name: path) => (
|
||||||
|
impl Traceable for $name {
|
||||||
|
fn trace(&self, trc: *mut JSTracer) {
|
||||||
|
self.htmltablecellelement.trace(trc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_node(
|
macro_rules! generate_traceable_node(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
impl Traceable for $name {
|
||||||
|
@ -157,9 +240,9 @@ generate_cacheable_wrapper_htmlelement!(HTMLAreaElement, HTMLAreaElementBinding:
|
||||||
generate_binding_object_htmlelement!(HTMLAreaElement)
|
generate_binding_object_htmlelement!(HTMLAreaElement)
|
||||||
generate_traceable_htmlelement!(HTMLAreaElement)
|
generate_traceable_htmlelement!(HTMLAreaElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLAudioElement, HTMLAudioElementBinding::Wrap)
|
generate_cacheable_wrapper_htmlmediaelement!(HTMLAudioElement, HTMLAudioElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLAudioElement)
|
generate_binding_object_htmlmediaelement!(HTMLAudioElement)
|
||||||
generate_traceable_htmlelement!(HTMLAudioElement)
|
generate_traceable_htmlmediaelement!(HTMLAudioElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLBaseElement, HTMLBaseElementBinding::Wrap)
|
generate_cacheable_wrapper_htmlelement!(HTMLBaseElement, HTMLBaseElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLBaseElement)
|
generate_binding_object_htmlelement!(HTMLBaseElement)
|
||||||
|
@ -357,13 +440,13 @@ generate_cacheable_wrapper_htmlelement!(HTMLTableCellElement, HTMLTableCellEleme
|
||||||
generate_binding_object_htmlelement!(HTMLTableCellElement)
|
generate_binding_object_htmlelement!(HTMLTableCellElement)
|
||||||
generate_traceable_htmlelement!(HTMLTableCellElement)
|
generate_traceable_htmlelement!(HTMLTableCellElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap)
|
generate_cacheable_wrapper_htmltablecellelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLTableDataCellElement)
|
generate_binding_object_htmltablecellelement!(HTMLTableDataCellElement)
|
||||||
generate_traceable_htmlelement!(HTMLTableDataCellElement)
|
generate_traceable_htmltablecellelement!(HTMLTableDataCellElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap)
|
generate_cacheable_wrapper_htmltablecellelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLTableHeaderCellElement)
|
generate_binding_object_htmltablecellelement!(HTMLTableHeaderCellElement)
|
||||||
generate_traceable_htmlelement!(HTMLTableHeaderCellElement)
|
generate_traceable_htmltablecellelement!(HTMLTableHeaderCellElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap)
|
generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLTableColElement)
|
generate_binding_object_htmlelement!(HTMLTableColElement)
|
||||||
|
@ -405,9 +488,9 @@ generate_cacheable_wrapper_htmlelement!(HTMLUnknownElement, HTMLUnknownElementBi
|
||||||
generate_binding_object_htmlelement!(HTMLUnknownElement)
|
generate_binding_object_htmlelement!(HTMLUnknownElement)
|
||||||
generate_traceable_htmlelement!(HTMLUnknownElement)
|
generate_traceable_htmlelement!(HTMLUnknownElement)
|
||||||
|
|
||||||
generate_cacheable_wrapper_htmlelement!(HTMLVideoElement, HTMLVideoElementBinding::Wrap)
|
generate_cacheable_wrapper_htmlmediaelement!(HTMLVideoElement, HTMLVideoElementBinding::Wrap)
|
||||||
generate_binding_object_htmlelement!(HTMLVideoElement)
|
generate_binding_object_htmlmediaelement!(HTMLVideoElement)
|
||||||
generate_traceable_htmlelement!(HTMLVideoElement)
|
generate_traceable_htmlmediaelement!(HTMLVideoElement)
|
||||||
|
|
||||||
generate_traceable!(HTMLElement)
|
generate_traceable!(HTMLElement)
|
||||||
generate_traceable_node!(Element)
|
generate_traceable_node!(Element)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
use dom::htmlmediaelement::HTMLMediaElement;
|
use dom::htmlmediaelement::HTMLMediaElement;
|
||||||
|
|
||||||
pub struct HTMLAudioElement {
|
pub struct HTMLAudioElement {
|
||||||
htmlelement: HTMLMediaElement
|
htmlmediaelement: HTMLMediaElement
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HTMLAudioElement {
|
impl HTMLAudioElement {
|
||||||
|
|
|
@ -154,3 +154,4 @@ impl HTMLMediaElement {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,3 +140,4 @@ impl HTMLTableCellElement {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||||
|
|
||||||
pub struct HTMLTableDataCellElement {
|
pub struct HTMLTableDataCellElement {
|
||||||
htmlelement: HTMLTableCellElement,
|
htmltablecellelement: HTMLTableCellElement,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||||
|
|
||||||
pub struct HTMLTableHeaderCellElement {
|
pub struct HTMLTableHeaderCellElement {
|
||||||
htmlelement: HTMLTableCellElement,
|
htmltablecellelement: HTMLTableCellElement,
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::utils::{DOMString, ErrorResult};
|
||||||
use dom::htmlmediaelement::HTMLMediaElement;
|
use dom::htmlmediaelement::HTMLMediaElement;
|
||||||
|
|
||||||
pub struct HTMLVideoElement {
|
pub struct HTMLVideoElement {
|
||||||
htmlelement: HTMLMediaElement
|
htmlmediaelement: HTMLMediaElement
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HTMLVideoElement {
|
impl HTMLVideoElement {
|
||||||
|
|
|
@ -61,7 +61,7 @@ macro_rules! handle_htmlmediaelement(
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
||||||
if eq_slice($tag, $string) {
|
if eq_slice($tag, $string) {
|
||||||
let _element = @$ctor {
|
let _element = @$ctor {
|
||||||
htmlelement: HTMLMediaElement::new($type_id, ($tag).to_str(), document)
|
htmlmediaelement: HTMLMediaElement::new($type_id, ($tag).to_str(), document)
|
||||||
};
|
};
|
||||||
unsafe {
|
unsafe {
|
||||||
return Node::as_abstract_node(cx, _element);
|
return Node::as_abstract_node(cx, _element);
|
||||||
|
@ -73,7 +73,7 @@ macro_rules! handle_htmltablecellelement(
|
||||||
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => (
|
||||||
if eq_slice($tag, $string) {
|
if eq_slice($tag, $string) {
|
||||||
let _element = @$ctor {
|
let _element = @$ctor {
|
||||||
htmlelement: HTMLTableCellElement::new($type_id, ($tag).to_str(), document)
|
htmltablecellelement: HTMLTableCellElement::new($type_id, ($tag).to_str(), document)
|
||||||
};
|
};
|
||||||
unsafe {
|
unsafe {
|
||||||
return Node::as_abstract_node(cx, _element);
|
return Node::as_abstract_node(cx, _element);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue