diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 15c1fad3297..39f19bf9df1 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -613,6 +613,7 @@ addHTMLElement('HTMLTemplateElement') addHTMLElement('HTMLTextAreaElement') addHTMLElement('HTMLTimeElement') addHTMLElement('HTMLTitleElement') +addHTMLElement('HTMLTrackElement') addHTMLElement('HTMLUListElement') addHTMLElement('HTMLUnknownElement') diff --git a/src/components/script/dom/bindings/codegen/HTMLTrackElement.webidl b/src/components/script/dom/bindings/codegen/HTMLTrackElement.webidl new file mode 100644 index 00000000000..2cf06ea0d00 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLTrackElement.webidl @@ -0,0 +1,36 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-track-element + */ + +// import from http://mxr.mozilla.org/mozilla-central/source/dom/webidl/ + +/* +[Pref="media.webvtt.enabled"] +*/ +interface HTMLTrackElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString kind; + [SetterThrows, Pure] + attribute DOMString src; + [SetterThrows, Pure] + attribute DOMString srclang; + [SetterThrows, Pure] + attribute DOMString label; + [SetterThrows, Pure] + attribute boolean default; + + const unsigned short NONE = 0; + const unsigned short LOADING = 1; + const unsigned short LOADED = 2; + const unsigned short ERROR = 3; + readonly attribute unsigned short readyState; +/* + TODO: + readonly attribute TextTrack track; +*/ +}; diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 805dea3d2fe..6478f0289dc 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -158,6 +158,8 @@ generate_cacheable_wrapper!(HTMLTitleElement, HTMLTitleElementBinding::Wrap) generate_binding_object!(HTMLTitleElement) generate_cacheable_wrapper!(HTMLTimeElement, HTMLTimeElementBinding::Wrap) generate_binding_object!(HTMLTimeElement) +generate_cacheable_wrapper!(HTMLTrackElement, HTMLTrackElementBinding::Wrap) +generate_binding_object!(HTMLTrackElement) generate_cacheable_wrapper!(HTMLUListElement, HTMLUListElementBinding::Wrap) generate_binding_object!(HTMLUListElement) generate_cacheable_wrapper!(HTMLUnknownElement, HTMLUnknownElementBinding::Wrap) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 9e210bfee35..ef76c931ffc 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -82,6 +82,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLTextAreaElementTypeId) => generate_element!(HTMLTextAreaElement), ElementNodeTypeId(HTMLTimeElementTypeId) => generate_element!(HTMLTimeElement), ElementNodeTypeId(HTMLTitleElementTypeId) => generate_element!(HTMLTitleElement), + ElementNodeTypeId(HTMLTrackElementTypeId) => generate_element!(HTMLTrackElement), ElementNodeTypeId(HTMLUListElementTypeId) => generate_element!(HTMLUListElement), ElementNodeTypeId(HTMLUnknownElementTypeId) => generate_element!(HTMLUnknownElement), CommentNodeTypeId => generate_element!(Comment), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index aca3ae0df2b..4e66db145a2 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -106,6 +106,7 @@ pub enum ElementTypeId { HTMLTextAreaElementTypeId, HTMLTimeElementTypeId, HTMLTitleElementTypeId, + HTMLTrackElementTypeId, HTMLUListElementTypeId, HTMLUnknownElementTypeId, } diff --git a/src/components/script/dom/htmltrackelement.rs b/src/components/script/dom/htmltrackelement.rs new file mode 100644 index 00000000000..40ba4e0f4cb --- /dev/null +++ b/src/components/script/dom/htmltrackelement.rs @@ -0,0 +1,51 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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::utils::{DOMString, null_string, ErrorResult}; +use dom::htmlelement::HTMLElement; + +pub struct HTMLTrackElement { + parent: HTMLElement, +} + +impl HTMLTrackElement { + pub fn Kind(&self) -> DOMString { + null_string + } + + pub fn SetKind(&mut self, _kind: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Src(&self) -> DOMString { + null_string + } + + pub fn SetSrc(&mut self, _src: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Srclang(&self) -> DOMString { + null_string + } + + pub fn SetSrclang(&mut self, _srclang: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Label(&self) -> DOMString { + null_string + } + + pub fn SetLabel(&mut self, _label: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Default(&self) -> bool { + false + } + + pub fn SetDefault(&mut self, _default: bool, _rv: &mut ErrorResult) { + } + + pub fn ReadyState(&self) -> u16 { + 0 + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 4587a46e4f5..bfc205aa689 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -242,6 +242,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "time", HTMLTimeElementTypeId, HTMLTimeElement, []); handle_element!(cx, tag, "title", HTMLTitleElementTypeId, HTMLTitleElement, []); handle_element!(cx, tag, "tr", HTMLTableRowElementTypeId, HTMLTableRowElement, []); + handle_element!(cx, tag, "track", HTMLTrackElementTypeId, HTMLTrackElement, []); handle_element!(cx, tag, "ul", HTMLUListElementTypeId, HTMLUListElement, []); handle_element!(cx, tag, "img", HTMLImageElementTypeId, HTMLImageElement, [(image: None)]); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index b30cb5573d6..4e8f78d974f 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -117,6 +117,7 @@ pub mod dom { pub mod htmltextareaelement; pub mod htmltimeelement; pub mod htmltitleelement; + pub mod htmltrackelement; pub mod htmlulistelement; pub mod htmlunknownelement; pub mod mouseevent;