From fe5b795f30fdf8d01d582ba29a24188772a7bda3 Mon Sep 17 00:00:00 2001 From: Youngsoo Son Date: Mon, 12 Aug 2013 14:09:25 +0900 Subject: [PATCH] Generate bindings for HTMLSourceElement --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../bindings/codegen/HTMLSourceElement.webidl | 21 ++++++++++++ src/components/script/dom/bindings/node.rs | 5 ++- src/components/script/dom/element.rs | 6 +++- .../script/dom/htmlsourceelement.rs | 33 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 4 ++- src/components/script/script.rc | 2 ++ src/test/html/test_bindings.html | 4 +++ src/test/html/test_bindings.js | 7 ++++ 10 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLSourceElement.webidl create mode 100644 src/components/script/dom/htmlsourceelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 0e97543b1d8a..8a6a89cfc43f 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -561,6 +561,7 @@ addHTMLElement('HTMLMetaElement') addHTMLElement('HTMLOListElement') addHTMLElement('HTMLParagraphElement') addHTMLElement('HTMLScriptElement') +addHTMLElement('HTMLSourceElement') addHTMLElement('HTMLSpanElement') addHTMLElement('HTMLStyleElement') addHTMLElement('HTMLTableCaptionElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 5b2a75a22c8c..3504b762e678 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4630,6 +4630,7 @@ def makeEnumTypedef(e): 'dom::htmlmetaelement::HTMLMetaElement', 'dom::htmlolistelement::HTMLOListElement', 'dom::htmlscriptelement::HTMLScriptElement', + 'dom::htmlsourceelement::HTMLSourceElement', 'dom::htmlstyleelement::HTMLStyleElement', 'dom::htmltablecaptionelement::HTMLTableCaptionElement', 'dom::htmltableelement::HTMLTableElement', diff --git a/src/components/script/dom/bindings/codegen/HTMLSourceElement.webidl b/src/components/script/dom/bindings/codegen/HTMLSourceElement.webidl new file mode 100644 index 000000000000..ae15e36646a6 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLSourceElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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-source-element + * + * ⓒ Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLSourceElement : HTMLElement { + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString type; + [SetterThrows] + attribute DOMString media; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 94fddc745d86..fea24c9929ca 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -13,7 +13,8 @@ use dom::element::{HTMLElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLParagraphElementTypeId, HTMLScriptElementTypeId, - HTMLSpanElementTypeId, HTMLStyleElementTypeId, HTMLTextAreaElementTypeId, + HTMLSpanElementTypeId, HTMLSourceElementTypeId, + HTMLStyleElementTypeId, HTMLTextAreaElementTypeId, HTMLTableCaptionElementTypeId, HTMLTableElementTypeId, HTMLTableRowElementTypeId, HTMLTableSectionElementTypeId, HTMLTimeElementTypeId, HTMLTitleElementTypeId, HTMLUListElementTypeId, HTMLDListElementTypeId}; @@ -30,6 +31,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlsourceelement::HTMLSourceElement; use dom::htmlstyleelement::HTMLStyleElement; use dom::htmltablecaptionelement::HTMLTableCaptionElement; use dom::htmltableelement::HTMLTableElement; @@ -119,6 +121,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), ElementNodeTypeId(HTMLParagraphElementTypeId) => generate_element!(HTMLParagraphElement), ElementNodeTypeId(HTMLScriptElementTypeId) => generate_element!(HTMLScriptElement), + ElementNodeTypeId(HTMLSourceElementTypeId) => generate_element!(HTMLSourceElement), ElementNodeTypeId(HTMLSpanElementTypeId) => generate_element!(HTMLSpanElement), ElementNodeTypeId(HTMLStyleElementTypeId) => generate_element!(HTMLStyleElement), ElementNodeTypeId(HTMLTableCaptionElementTypeId) => generate_element!(HTMLTableCaptionElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 56d2ac6f4212..fccc878a3a47 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -10,7 +10,7 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLBodyElementBinding, H HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLMetaElementBinding, HTMLOListElementBinding, HTMLParagraphElementBinding, - HTMLScriptElementBinding, HTMLSpanElementBinding, + HTMLScriptElementBinding, HTMLSourceElementBinding, HTMLSpanElementBinding, HTMLStyleElementBinding, HTMLTableCaptionElementBinding, HTMLTableElementBinding, HTMLTableRowElementBinding, HTMLTableSectionElementBinding, HTMLTextAreaElementBinding, @@ -32,6 +32,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlsourceelement::HTMLSourceElement; use dom::htmlstyleelement::HTMLStyleElement; use dom::htmltablecaptionelement::HTMLTableCaptionElement; use dom::htmltableelement::HTMLTableElement; @@ -103,6 +104,7 @@ pub enum ElementTypeId { HTMLScriptElementTypeId, HTMLSelectElementTypeId, HTMLSmallElementTypeId, + HTMLSourceElementTypeId, HTMLSpanElementTypeId, HTMLStyleElementTypeId, HTMLTableCaptionElementTypeId, @@ -219,6 +221,8 @@ generate_cacheable_wrapper!(HTMLParagraphElement, HTMLParagraphElementBinding::W generate_binding_object!(HTMLParagraphElement) generate_cacheable_wrapper!(HTMLScriptElement, HTMLScriptElementBinding::Wrap) generate_binding_object!(HTMLScriptElement) +generate_cacheable_wrapper!(HTMLSourceElement, HTMLSourceElementBinding::Wrap) +generate_binding_object!(HTMLSourceElement) generate_cacheable_wrapper!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) generate_binding_object!(HTMLSpanElement) generate_cacheable_wrapper!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) diff --git a/src/components/script/dom/htmlsourceelement.rs b/src/components/script/dom/htmlsourceelement.rs new file mode 100644 index 000000000000..8c57fb78256f --- /dev/null +++ b/src/components/script/dom/htmlsourceelement.rs @@ -0,0 +1,33 @@ +/* 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 HTMLSourceElement { + parent: HTMLElement +} + +impl HTMLSourceElement { + pub fn Src(&self) -> DOMString { + null_string + } + + pub fn SetSrc(&mut self, _src: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Type(&self) -> DOMString { + null_string + } + + pub fn SetType(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Media(&self) -> DOMString { + null_string + } + + pub fn SetMedia(&mut self, _media: &DOMString, _rv: &mut ErrorResult) { + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index a6b75b3f05f4..0342dabfbf6b 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -12,7 +12,7 @@ use dom::element::{HTMLElementTypeId, HTMLLinkElementTypeId, HTMLListItemElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, HTMLParagraphElementTypeId, HTMLScriptElementTypeId, - HTMLSelectElementTypeId, HTMLSmallElementTypeId, + HTMLSelectElementTypeId, HTMLSmallElementTypeId, HTMLSourceElementTypeId, HTMLSpanElementTypeId, HTMLStyleElementTypeId, HTMLTableSectionElementTypeId, HTMLTableCellElementTypeId, HTMLTableElementTypeId, HTMLTableCaptionElementTypeId, HTMLTableRowElementTypeId, HTMLTextAreaElementTypeId, @@ -37,6 +37,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlsourceelement::HTMLSourceElement; use dom::htmlstyleelement::HTMLStyleElement; use dom::htmltablecaptionelement::HTMLTableCaptionElement; use dom::htmltableelement::HTMLTableElement; @@ -247,6 +248,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "script", HTMLScriptElementTypeId, HTMLScriptElement, []); handle_element!(cx, tag, "select", HTMLSelectElementTypeId, HTMLSelectElement, []); handle_element!(cx, tag, "small", HTMLSmallElementTypeId, HTMLSmallElement, []); + handle_element!(cx, tag, "source", HTMLSourceElementTypeId, HTMLSourceElement, []); handle_element!(cx, tag, "span", HTMLSpanElementTypeId, HTMLSpanElement, []); handle_element!(cx, tag, "style", HTMLStyleElementTypeId, HTMLStyleElement, []); handle_element!(cx, tag, "caption", HTMLTableCaptionElementTypeId, HTMLTableCaptionElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 786f1cb3c154..6a7bb3a86291 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -60,6 +60,7 @@ pub mod dom { pub mod HTMLOListElementBinding; pub mod HTMLParagraphElementBinding; pub mod HTMLScriptElementBinding; + pub mod HTMLSourceElementBinding; pub mod HTMLSpanElementBinding; pub mod HTMLStyleElementBinding; pub mod HTMLTableCaptionElementBinding; @@ -104,6 +105,7 @@ pub mod dom { pub mod htmlmetaelement; pub mod htmlolistelement; pub mod htmlscriptelement; + pub mod htmlsourceelement; pub mod htmlstyleelement; pub mod htmltablecaptionelement; pub mod htmltableelement; diff --git a/src/test/html/test_bindings.html b/src/test/html/test_bindings.html index da6780ef2725..63f9c522cac6 100644 --- a/src/test/html/test_bindings.html +++ b/src/test/html/test_bindings.html @@ -33,5 +33,9 @@ i + diff --git a/src/test/html/test_bindings.js b/src/test/html/test_bindings.js index fb6454137bbc..c27df66a4e22 100644 --- a/src/test/html/test_bindings.js +++ b/src/test/html/test_bindings.js @@ -158,6 +158,13 @@ window.alert(tags.length); window.alert(tags[0].tagName); window.alert(tags[0] instanceof HTMLCanvasElement); +window.alert("HTMLSourceElement:"); +let tags = document.getElementsByTagName("source"); +window.alert(tags); +window.alert(tags.length); +window.alert(tags[0].tagName); +window.alert(tags[0] instanceof HTMLSourceElement); + window.alert("HTMLTimeElement:"); let tags = document.getElementsByTagName("time"); window.alert(tags);