diff options
author | Ms2ger <ms2ger@gmail.com> | 2013-10-31 15:22:15 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2013-10-31 15:41:30 +0100 |
commit | 618447445f8af2be4a4f2aaed5e586d9c02c3137 (patch) | |
tree | abc1723ce061648edf90a93e21de5d134e1a1863 /src/components/script | |
parent | cc76a2188e38034f853aecd5365857adcda8e401 (diff) | |
download | servo-618447445f8af2be4a4f2aaed5e586d9c02c3137.tar.gz servo-618447445f8af2be4a4f2aaed5e586d9c02c3137.zip |
Introduce HTML{Audio,Video}Element::new.
Diffstat (limited to 'src/components/script')
-rw-r--r-- | src/components/script/dom/htmlaudioelement.rs | 14 | ||||
-rw-r--r-- | src/components/script/dom/htmlmediaelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmlvideoelement.rs | 17 | ||||
-rw-r--r-- | src/components/script/html/hubbub_html_parser.rs | 20 |
4 files changed, 42 insertions, 11 deletions
diff --git a/src/components/script/dom/htmlaudioelement.rs b/src/components/script/dom/htmlaudioelement.rs index dbb33a42331..6ece4235c7c 100644 --- a/src/components/script/dom/htmlaudioelement.rs +++ b/src/components/script/dom/htmlaudioelement.rs @@ -2,11 +2,25 @@ * 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::codegen::HTMLAudioElementBinding; +use dom::document::AbstractDocument; +use dom::element::HTMLAudioElementTypeId; use dom::htmlmediaelement::HTMLMediaElement; +use dom::node::{AbstractNode, Node, ScriptView}; pub struct HTMLAudioElement { htmlmediaelement: HTMLMediaElement } impl HTMLAudioElement { + pub fn new_inherited(localName: ~str, document: AbstractDocument) -> HTMLAudioElement { + HTMLAudioElement { + htmlmediaelement: HTMLMediaElement::new_inherited(HTMLAudioElementTypeId, localName, document) + } + } + + pub fn new(localName: ~str, document: AbstractDocument) -> AbstractNode<ScriptView> { + let element = HTMLAudioElement::new_inherited(localName, document); + Node::reflect_node(@mut element, document, HTMLAudioElementBinding::Wrap) + } } diff --git a/src/components/script/dom/htmlmediaelement.rs b/src/components/script/dom/htmlmediaelement.rs index 39c45a3585d..683ae7bf2e1 100644 --- a/src/components/script/dom/htmlmediaelement.rs +++ b/src/components/script/dom/htmlmediaelement.rs @@ -12,7 +12,7 @@ pub struct HTMLMediaElement { } impl HTMLMediaElement { - pub fn new(type_id: ElementTypeId, tag_name: ~str, document: AbstractDocument) -> HTMLMediaElement { + pub fn new_inherited(type_id: ElementTypeId, tag_name: ~str, document: AbstractDocument) -> HTMLMediaElement { HTMLMediaElement { htmlelement: HTMLElement::new(type_id, tag_name, document) } diff --git a/src/components/script/dom/htmlvideoelement.rs b/src/components/script/dom/htmlvideoelement.rs index a485480ad04..b78e13947e8 100644 --- a/src/components/script/dom/htmlvideoelement.rs +++ b/src/components/script/dom/htmlvideoelement.rs @@ -2,14 +2,31 @@ * 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::codegen::HTMLVideoElementBinding; use dom::bindings::utils::{DOMString, ErrorResult}; +use dom::document::AbstractDocument; +use dom::element::HTMLVideoElementTypeId; use dom::htmlmediaelement::HTMLMediaElement; +use dom::node::{AbstractNode, Node, ScriptView}; pub struct HTMLVideoElement { htmlmediaelement: HTMLMediaElement } impl HTMLVideoElement { + pub fn new_inherited(localName: ~str, document: AbstractDocument) -> HTMLVideoElement { + HTMLVideoElement { + htmlmediaelement: HTMLMediaElement::new_inherited(HTMLVideoElementTypeId, localName, document) + } + } + + pub fn new(localName: ~str, document: AbstractDocument) -> AbstractNode<ScriptView> { + let element = HTMLVideoElement::new_inherited(localName, document); + Node::reflect_node(@mut element, document, HTMLVideoElementBinding::Wrap) + } +} + +impl HTMLVideoElement { pub fn Width(&self) -> u32 { 0 } diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index d6883cb8acc..a8587de354e 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -56,15 +56,15 @@ macro_rules! handle_htmlelement( $cx, $document, $tag, $string, $type_id, $ctor, []); ) ) -macro_rules! handle_htmlmediaelement( - ($cx: expr, - $document: expr, - $tag: expr, +macro_rules! handle_newable_element( + ($document: expr, + $localName: expr, $string: expr, - $type_id: expr, - $ctor: ident) => ( - handle_element_base!(htmlmediaelement, HTMLMediaElement, - $cx, $document, $tag, $string, $type_id, $ctor, []); + $ctor: ident + $(, $arg:expr )*) => ( + if eq_slice($localName, $string) { + return $ctor::new(($localName).to_str(), $document $(, $arg)*); + } ) ) macro_rules! handle_htmltablecellelement( @@ -298,8 +298,8 @@ pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocum handle_htmlelement!(cx, document, tag, "section", HTMLElementTypeId, HTMLElement); handle_htmlelement!(cx, document, tag, "small", HTMLElementTypeId, HTMLElement); - handle_htmlmediaelement!(cx, document, tag, "audio", HTMLAudioElementTypeId, HTMLAudioElement); - handle_htmlmediaelement!(cx, document, tag, "video", HTMLVideoElementTypeId, HTMLVideoElement); + handle_newable_element!(document, tag, "audio", HTMLAudioElement); + handle_newable_element!(document, tag, "video", HTMLVideoElement); handle_htmltablecellelement!(cx, document, tag, "td", HTMLTableDataCellElementTypeId, HTMLTableDataCellElement); handle_htmltablecellelement!(cx, document, tag, "th", HTMLTableHeaderCellElementTypeId, HTMLTableHeaderCellElement); |