aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/script/dom/bindings/codegen/Bindings.conf2
-rw-r--r--src/components/script/dom/bindings/codegen/HTMLTableDataCellElement.webidl17
-rw-r--r--src/components/script/dom/bindings/codegen/HTMLTableHeaderCellElement.webidl22
-rw-r--r--src/components/script/dom/bindings/element.rs6
-rw-r--r--src/components/script/dom/bindings/node.rs2
-rw-r--r--src/components/script/dom/element.rs2
-rw-r--r--src/components/script/dom/htmltablecellelement.rs10
-rw-r--r--src/components/script/dom/htmltabledatacellelement.rs9
-rw-r--r--src/components/script/dom/htmltableheadercellelement.rs9
-rw-r--r--src/components/script/html/hubbub_html_parser.rs17
-rw-r--r--src/components/script/script.rc2
-rw-r--r--src/test/html/test_bindings.html6
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"];