diff options
12 files changed, 100 insertions, 4 deletions
diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 9ab2e1d3042..6aaa91fb971 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -633,6 +633,8 @@ addHTMLElement('HTMLStyleElement') addHTMLElement('HTMLTableCaptionElement') addHTMLElement('HTMLTableElement') addHTMLElement('HTMLTableCellElement') +addHTMLElement('HTMLTableDataCellElement') +addHTMLElement('HTMLTableHeaderCellElement') addHTMLElement('HTMLTableColElement') addHTMLElement('HTMLTableRowElement') addHTMLElement('HTMLTableSectionElement') diff --git a/src/components/script/dom/bindings/codegen/HTMLTableDataCellElement.webidl b/src/components/script/dom/bindings/codegen/HTMLTableDataCellElement.webidl new file mode 100644 index 00000000000..44e877b21d7 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLTableDataCellElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/ + * (2013-10-14) + * + * © 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 HTMLTableDataCellElement : HTMLTableCellElement { + // also has obsolete members +}; diff --git a/src/components/script/dom/bindings/codegen/HTMLTableHeaderCellElement.webidl b/src/components/script/dom/bindings/codegen/HTMLTableHeaderCellElement.webidl new file mode 100644 index 00000000000..ae5d84d460c --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLTableHeaderCellElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/ + * (2013-10-14) + * + * © 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 HTMLTableHeaderCellElement : HTMLTableCellElement { +/* TODO: + attribute DOMString scope; + attribute DOMString abbr; + attribute DOMString sorted; + void sort(); +*/ +}; diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 1d0c7f6cf24..dcdcac86410 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -299,6 +299,12 @@ generate_traceable_htmlelement!(HTMLTableCaptionElement) generate_cacheable_wrapper_htmlelement!(HTMLTableCellElement, HTMLTableCellElementBinding::Wrap) generate_binding_object_htmlelement!(HTMLTableCellElement) generate_traceable_htmlelement!(HTMLTableCellElement) +generate_cacheable_wrapper_htmlelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap) +generate_binding_object_htmlelement!(HTMLTableDataCellElement) +generate_traceable_htmlelement!(HTMLTableDataCellElement) +generate_cacheable_wrapper_htmlelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap) +generate_binding_object_htmlelement!(HTMLTableHeaderCellElement) +generate_traceable_htmlelement!(HTMLTableHeaderCellElement) generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap) generate_binding_object_htmlelement!(HTMLTableColElement) generate_traceable_htmlelement!(HTMLTableColElement) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index ca433e65693..a036689a375 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -77,6 +77,8 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> *JSObject ElementNodeTypeId(HTMLStyleElementTypeId) => generate_element!(HTMLStyleElement), ElementNodeTypeId(HTMLTableElementTypeId) => generate_element!(HTMLTableElement), ElementNodeTypeId(HTMLTableCellElementTypeId) => generate_element!(HTMLTableCellElement), + ElementNodeTypeId(HTMLTableDataCellElementTypeId) => generate_element!(HTMLTableDataCellElement), + ElementNodeTypeId(HTMLTableHeaderCellElementTypeId) => generate_element!(HTMLTableHeaderCellElement), ElementNodeTypeId(HTMLTableCaptionElementTypeId) => generate_element!(HTMLTableCaptionElement), ElementNodeTypeId(HTMLTableColElementTypeId) => generate_element!(HTMLTableColElement), ElementNodeTypeId(HTMLTableRowElementTypeId) => generate_element!(HTMLTableRowElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 7f80561b399..1f122075bd7 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -106,6 +106,8 @@ pub enum ElementTypeId { HTMLTableElementTypeId, HTMLTableCaptionElementTypeId, HTMLTableCellElementTypeId, + HTMLTableDataCellElementTypeId, + HTMLTableHeaderCellElementTypeId, HTMLTableColElementTypeId, HTMLTableRowElementTypeId, HTMLTableSectionElementTypeId, diff --git a/src/components/script/dom/htmltablecellelement.rs b/src/components/script/dom/htmltablecellelement.rs index b52fa78a698..2f69ea89571 100644 --- a/src/components/script/dom/htmltablecellelement.rs +++ b/src/components/script/dom/htmltablecellelement.rs @@ -3,6 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::utils::{DOMString, ErrorResult}; +use dom::document::AbstractDocument; +use dom::element::ElementTypeId; use dom::htmlelement::HTMLElement; pub struct HTMLTableCellElement { @@ -10,6 +12,14 @@ pub struct HTMLTableCellElement { } impl HTMLTableCellElement { + pub fn new(type_id: ElementTypeId, tag_name: ~str, document: AbstractDocument) -> HTMLTableCellElement { + HTMLTableCellElement { + htmlelement: HTMLElement::new(type_id, tag_name, document) + } + } +} + +impl HTMLTableCellElement { pub fn ColSpan(&self) -> u32 { 0 } diff --git a/src/components/script/dom/htmltabledatacellelement.rs b/src/components/script/dom/htmltabledatacellelement.rs new file mode 100644 index 00000000000..f3e315aed48 --- /dev/null +++ b/src/components/script/dom/htmltabledatacellelement.rs @@ -0,0 +1,9 @@ +/* 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::htmltablecellelement::HTMLTableCellElement; + +pub struct HTMLTableDataCellElement { + htmlelement: HTMLTableCellElement, +} diff --git a/src/components/script/dom/htmltableheadercellelement.rs b/src/components/script/dom/htmltableheadercellelement.rs new file mode 100644 index 00000000000..bb4ae5c77c6 --- /dev/null +++ b/src/components/script/dom/htmltableheadercellelement.rs @@ -0,0 +1,9 @@ +/* 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::htmltablecellelement::HTMLTableCellElement; + +pub struct HTMLTableHeaderCellElement { + htmlelement: HTMLTableCellElement, +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 66953315fea..234517929d1 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -69,6 +69,18 @@ macro_rules! handle_htmlmediaelement( } ) ) +macro_rules! handle_htmltablecellelement( + ($cx: expr, $tag:expr, $string:expr, $type_id:expr, $ctor:ident) => ( + if eq_slice($tag, $string) { + let _element = @$ctor { + htmlelement: HTMLTableCellElement::new($type_id, ($tag).to_str(), document) + }; + unsafe { + return Node::as_abstract_node(cx, _element); + } + } + ) +) pub struct JSFile { @@ -260,8 +272,6 @@ pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocum handle_element!(cx, tag, "style", HTMLStyleElementTypeId, HTMLStyleElement, []); handle_element!(cx, tag, "table", HTMLTableElementTypeId, HTMLTableElement, []); handle_element!(cx, tag, "caption", HTMLTableCaptionElementTypeId, HTMLTableCaptionElement, []); - handle_element!(cx, tag, "th", HTMLTableCellElementTypeId, HTMLTableCellElement, []); - handle_element!(cx, tag, "td", HTMLTableCellElementTypeId, HTMLTableCellElement, []); handle_element!(cx, tag, "col", HTMLTableColElementTypeId, HTMLTableColElement, []); handle_element!(cx, tag, "colgroup",HTMLTableColElementTypeId, HTMLTableColElement, []); handle_element!(cx, tag, "tbody", HTMLTableSectionElementTypeId, HTMLTableSectionElement, []); @@ -293,6 +303,9 @@ pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocum handle_htmlmediaelement!(cx, tag, "audio", HTMLAudioElementTypeId, HTMLAudioElement); handle_htmlmediaelement!(cx, tag, "video", HTMLVideoElementTypeId, HTMLVideoElement); + handle_htmltablecellelement!(cx, tag, "td", HTMLTableDataCellElementTypeId, HTMLTableDataCellElement); + handle_htmltablecellelement!(cx, tag, "th", HTMLTableHeaderCellElementTypeId, HTMLTableHeaderCellElement); + let element = @HTMLUnknownElement { htmlelement: HTMLElement::new(HTMLUnknownElementTypeId, tag.to_str(), document) }; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index b55f7ca4847..b30678ee9ff 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -113,6 +113,8 @@ pub mod dom { pub mod htmltableelement; pub mod htmltablecaptionelement; pub mod htmltablecellelement; + pub mod htmltabledatacellelement; + pub mod htmltableheadercellelement; pub mod htmltablecolelement; pub mod htmltablerowelement; pub mod htmltablesectionelement; diff --git a/src/test/html/test_bindings.html b/src/test/html/test_bindings.html index f41cff19df1..b2bc4a8fcb3 100644 --- a/src/test/html/test_bindings.html +++ b/src/test/html/test_bindings.html @@ -204,19 +204,21 @@ window.alert(tags.length); window.alert(tags[0].tagName); window.alert(tags[0] instanceof HTMLQuoteElement); -window.alert("HTMLTableCellElement:"); +window.alert("HTMLTableHeaderCellElement:"); let tags = document.getElementsByTagName("th"); window.alert(tags); window.alert(tags.length); window.alert(tags[0].tagName); window.alert(tags[0] instanceof HTMLTableCellElement); +window.alert(tags[0] instanceof HTMLTableHeaderCellElement); -window.alert("HTMLTableCellElement:"); +window.alert("HTMLTableDataCellElement:"); let tags = document.getElementsByTagName("td"); window.alert(tags); window.alert(tags.length); window.alert(tags[0].tagName); window.alert(tags[0] instanceof HTMLTableCellElement); +window.alert(tags[0] instanceof HTMLTableDataCellElement); window.alert("HTMLTableColElement"); let tagList = ["col", "colgroup"]; |