Introduce HTML{Audio,Video}Element::new.

This commit is contained in:
Ms2ger 2013-10-31 15:22:15 +01:00
parent cc76a2188e
commit 618447445f
4 changed files with 42 additions and 11 deletions

View file

@ -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)
}
}

View file

@ -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)
}

View file

@ -2,13 +2,30 @@
* 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

View file

@ -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);