From fba2cea0978f87b57fcae046a0c3569e344dda76 Mon Sep 17 00:00:00 2001 From: saneyuki_s Date: Thu, 8 Aug 2013 01:48:39 +0900 Subject: [PATCH 1/3] Generate bindings for HTMLMetaElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../bindings/codegen/HTMLMetaElement.webidl | 28 +++++++++++++ src/components/script/dom/bindings/node.rs | 12 ++++++ src/components/script/dom/bindings/utils.rs | 2 +- src/components/script/dom/element.rs | 5 ++- src/components/script/dom/htmlmetaelement.rs | 40 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 4 +- src/components/script/script.rc | 2 + 9 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLMetaElement.webidl create mode 100644 src/components/script/dom/htmlmetaelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 01c1ec88f42..99bd9372a47 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -554,6 +554,7 @@ addHTMLElement('HTMLHtmlElement') addHTMLElement('HTMLHRElement') addHTMLElement('HTMLIFrameElement') addHTMLElement('HTMLImageElement') +addHTMLElement('HTMLMetaElement') addHTMLElement('HTMLOListElement') addHTMLElement('HTMLParagraphElement') addHTMLElement('HTMLScriptElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 9a2fa981e60..42ce2648366 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4624,6 +4624,7 @@ class CGBindingRoot(CGThing): 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm 'dom::htmlimageelement::HTMLImageElement', #XXXjdm + 'dom::htmlmetaelement::HTMLMetaElement', 'dom::htmlolistelement::HTMLOListElement', 'dom::htmlscriptelement::HTMLScriptElement', 'dom::bindings::utils::*', diff --git a/src/components/script/dom/bindings/codegen/HTMLMetaElement.webidl b/src/components/script/dom/bindings/codegen/HTMLMetaElement.webidl new file mode 100644 index 00000000000..5b7b0f92c24 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLMetaElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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-meta-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © 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. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-meta-element +interface HTMLMetaElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString httpEquiv; + [SetterThrows, Pure] + attribute DOMString content; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLMetaElement { + [SetterThrows, Pure] + attribute DOMString scheme; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index c6c5e47f975..e238cf2f2dc 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -9,8 +9,12 @@ use dom::bindings::utils::{CacheableWrapper, WrapperCache, DerivedWrapper}; use dom::element::{HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLAnchorElementTypeId}; use dom::element::{HTMLDivElementTypeId, HTMLImageElementTypeId, HTMLSpanElementTypeId}; use dom::element::{HTMLBodyElementTypeId, HTMLHRElementTypeId, HTMLIframeElementTypeId}; +<<<<<<< HEAD use dom::element::{HTMLParagraphElementTypeId, HTMLScriptElementTypeId}; use dom::element::{HTMLOListElementTypeId}; +======= +use dom::element::{HTMLParagraphElementTypeId, HTMLScriptElementTypeId, HTMLMetaElementTypeId}; +>>>>>>> Generate bindings for HTMLMetaElement. use dom::element::{HTMLHeadElement, HTMLHtmlElement, HTMLDivElement, HTMLSpanElement}; use dom::element::{HTMLParagraphElement}; use dom::htmlanchorelement::HTMLAnchorElement; @@ -18,7 +22,11 @@ use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; +<<<<<<< HEAD use dom::htmlolistelement::HTMLOListElement; +======= +use dom::htmlmetaelement::HTMLMetaElement; +>>>>>>> Generate bindings for HTMLMetaElement. use dom::htmlscriptelement::HTMLScriptElement; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; use dom::node::{DoctypeNodeTypeId, ScriptView, Text}; @@ -93,7 +101,11 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), ElementNodeTypeId(HTMLIframeElementTypeId) => generate_element!(HTMLIFrameElement), ElementNodeTypeId(HTMLImageElementTypeId) => generate_element!(HTMLImageElement), +<<<<<<< HEAD ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), +======= + ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement), +>>>>>>> Generate bindings for HTMLMetaElement. ElementNodeTypeId(HTMLParagraphElementTypeId) => generate_element!(HTMLParagraphElement), ElementNodeTypeId(HTMLScriptElementTypeId) => generate_element!(HTMLScriptElement), ElementNodeTypeId(HTMLSpanElementTypeId) => generate_element!(HTMLSpanElement), diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index a85e6bbc41e..2b859f00edf 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -617,7 +617,7 @@ pub extern fn ThrowingConstructor(_cx: *JSContext, _argc: uint, _vp: *JSVal) -> } pub fn initialize_global(global: *JSObject) { - let protoArray = @mut ([0 as *JSObject, ..42]); + let protoArray = @mut ([0 as *JSObject, ..43]); assert!(protoArray.len() == PrototypeList::id::_ID_Count as uint); unsafe { //XXXjdm we should be storing the box pointer instead of the inner diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 6d0fdb4fcf0..9dde380cc6f 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -10,6 +10,7 @@ use dom::bindings::codegen::{HTMLHRElementBinding, HTMLIFrameElementBinding}; use dom::bindings::codegen::{HTMLParagraphElementBinding, HTMLScriptElementBinding}; use dom::bindings::codegen::{HTMLDivElementBinding, HTMLSpanElementBinding}; use dom::bindings::codegen::{HTMLImageElementBinding, HTMLOListElementBinding}; +use dom::bindings::codegen::{HTMLMetaElementBinding}; use dom::bindings::utils::{null_string, str}; use dom::bindings::utils::{BindingObject, CacheableWrapper, DOMString, ErrorResult, WrapperCache}; use dom::clientrect::ClientRect; @@ -21,6 +22,7 @@ use dom::htmlelement::HTMLElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; +use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::node::{ElementNodeTypeId, Node, ScriptView, AbstractNode}; @@ -112,7 +114,6 @@ pub struct HTMLInputElement { parent: HTMLElement } pub struct HTMLItalicElement { parent: HTMLElement } pub struct HTMLLinkElement { parent: HTMLElement } pub struct HTMLListItemElement { parent: HTMLElement } -pub struct HTMLMetaElement { parent: HTMLElement } pub struct HTMLOptionElement { parent: HTMLElement } pub struct HTMLParagraphElement { parent: HTMLElement } pub struct HTMLSectionElement { parent: HTMLElement } @@ -196,6 +197,8 @@ generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_binding_object!(HTMLIFrameElement) generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) generate_binding_object!(HTMLImageElement) +generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) +generate_binding_object!(HTMLMetaElement) generate_cacheable_wrapper!(HTMLOListElement, HTMLOListElementBinding::Wrap) generate_binding_object!(HTMLOListElement) generate_cacheable_wrapper!(HTMLParagraphElement, HTMLParagraphElementBinding::Wrap) diff --git a/src/components/script/dom/htmlmetaelement.rs b/src/components/script/dom/htmlmetaelement.rs new file mode 100644 index 00000000000..aad56ca5c58 --- /dev/null +++ b/src/components/script/dom/htmlmetaelement.rs @@ -0,0 +1,40 @@ +/* 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 HTMLMetaElement { + parent: HTMLElement, +} + +impl HTMLMetaElement { + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _name: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn HttpEquiv(&self) -> DOMString { + null_string + } + + pub fn SetHttpEquiv(&mut self, _http_equiv: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Content(&self) -> DOMString { + null_string + } + + pub fn SetContent(&mut self, _content: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Scheme(&self) -> DOMString { + null_string + } + + pub fn SetScheme(&mut self, _scheme: &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 d39c84477ee..6c45f912047 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -19,8 +19,7 @@ use dom::element::{HTMLAsideElement, HTMLBRElement, HTMLBoldElement, HTMLDivElement, HTMLFontElement, HTMLFormElement, HTMLHeadElement, HTMLHeadingElement, HTMLHtmlElement, HTMLInputElement, HTMLItalicElement, HTMLLinkElement, - HTMLListItemElement, HTMLMetaElement, - HTMLOptionElement, HTMLParagraphElement, + HTMLOptionElement, HTMLParagraphElement, HTMLListItemElement, HTMLSectionElement, HTMLSelectElement, HTMLSmallElement, HTMLSpanElement, HTMLStyleElement, HTMLTableBodyElement, HTMLTableCellElement, HTMLTableElement, HTMLTableRowElement, @@ -32,6 +31,7 @@ use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; +use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::element::{Element, Attr}; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index debe2bced16..5feda69fdd7 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -53,6 +53,7 @@ pub mod dom { pub mod HTMLHtmlElementBinding; pub mod HTMLIFrameElementBinding; pub mod HTMLImageElementBinding; + pub mod HTMLMetaElementBinding; pub mod HTMLOListElementBinding; pub mod HTMLParagraphElementBinding; pub mod HTMLScriptElementBinding; @@ -85,6 +86,7 @@ pub mod dom { pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; + pub mod htmlmetaelement; pub mod htmlolistelement; pub mod htmlscriptelement; pub mod mouseevent; From c5125ca5e240bbc42b73d0bc9a46991d9769f71a Mon Sep 17 00:00:00 2001 From: saneyuki_s Date: Thu, 8 Aug 2013 19:53:44 +0900 Subject: [PATCH 2/3] Generate bindings for HTMLStyleElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../bindings/codegen/HTMLStyleElement.webidl | 23 +++++++++++ src/components/script/dom/bindings/node.rs | 18 +++------ src/components/script/dom/bindings/utils.rs | 2 +- src/components/script/dom/element.rs | 6 ++- src/components/script/dom/htmlstyleelement.rs | 40 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 3 +- src/components/script/script.rc | 2 + 9 files changed, 79 insertions(+), 17 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLStyleElement.webidl create mode 100644 src/components/script/dom/htmlstyleelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 99bd9372a47..ba33f11a48e 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -559,6 +559,7 @@ addHTMLElement('HTMLOListElement') addHTMLElement('HTMLParagraphElement') addHTMLElement('HTMLScriptElement') addHTMLElement('HTMLSpanElement') +addHTMLElement('HTMLStyleElement') # If you add one of these, you need to make sure nsDOMQS.h has the relevant # macros added for it diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 42ce2648366..ce40d7613c6 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4627,6 +4627,7 @@ class CGBindingRoot(CGThing): 'dom::htmlmetaelement::HTMLMetaElement', 'dom::htmlolistelement::HTMLOListElement', 'dom::htmlscriptelement::HTMLScriptElement', + 'dom::htmlstyleelement::HTMLStyleElement', 'dom::bindings::utils::*', 'dom::bindings::conversions::*', 'dom::blob::*', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLStyleElement.webidl b/src/components/script/dom/bindings/codegen/HTMLStyleElement.webidl new file mode 100644 index 00000000000..7da0a413e00 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLStyleElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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-style-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + */ + +interface HTMLStyleElement : HTMLElement { + [Pure] + attribute boolean disabled; + [SetterThrows, Pure] + attribute DOMString media; + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure] + attribute boolean scoped; +}; +// TODO: +// HTMLStyleElement implements LinkStyle; + diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index e238cf2f2dc..17367e433a6 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -9,12 +9,8 @@ use dom::bindings::utils::{CacheableWrapper, WrapperCache, DerivedWrapper}; use dom::element::{HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLAnchorElementTypeId}; use dom::element::{HTMLDivElementTypeId, HTMLImageElementTypeId, HTMLSpanElementTypeId}; use dom::element::{HTMLBodyElementTypeId, HTMLHRElementTypeId, HTMLIframeElementTypeId}; -<<<<<<< HEAD -use dom::element::{HTMLParagraphElementTypeId, HTMLScriptElementTypeId}; -use dom::element::{HTMLOListElementTypeId}; -======= use dom::element::{HTMLParagraphElementTypeId, HTMLScriptElementTypeId, HTMLMetaElementTypeId}; ->>>>>>> Generate bindings for HTMLMetaElement. +use dom::element::{HTMLOListElementTypeId, HTMLStyleElementTypeId}; use dom::element::{HTMLHeadElement, HTMLHtmlElement, HTMLDivElement, HTMLSpanElement}; use dom::element::{HTMLParagraphElement}; use dom::htmlanchorelement::HTMLAnchorElement; @@ -22,12 +18,10 @@ use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; -<<<<<<< HEAD -use dom::htmlolistelement::HTMLOListElement; -======= use dom::htmlmetaelement::HTMLMetaElement; ->>>>>>> Generate bindings for HTMLMetaElement. +use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlstyleelement::HTMLStyleElement; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; use dom::node::{DoctypeNodeTypeId, ScriptView, Text}; @@ -101,14 +95,12 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), ElementNodeTypeId(HTMLIframeElementTypeId) => generate_element!(HTMLIFrameElement), ElementNodeTypeId(HTMLImageElementTypeId) => generate_element!(HTMLImageElement), -<<<<<<< HEAD - ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), -======= ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement), ->>>>>>> Generate bindings for HTMLMetaElement. + ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), ElementNodeTypeId(HTMLParagraphElementTypeId) => generate_element!(HTMLParagraphElement), ElementNodeTypeId(HTMLScriptElementTypeId) => generate_element!(HTMLScriptElement), ElementNodeTypeId(HTMLSpanElementTypeId) => generate_element!(HTMLSpanElement), + ElementNodeTypeId(HTMLStyleElementTypeId) => generate_element!(HTMLStyleElement), ElementNodeTypeId(_) => element::create(cx, node).ptr, CommentNodeTypeId | DoctypeNodeTypeId => text::create(cx, node).ptr, diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 2b859f00edf..88da76d83fd 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -617,7 +617,7 @@ pub extern fn ThrowingConstructor(_cx: *JSContext, _argc: uint, _vp: *JSVal) -> } pub fn initialize_global(global: *JSObject) { - let protoArray = @mut ([0 as *JSObject, ..43]); + let protoArray = @mut ([0 as *JSObject, ..44]); assert!(protoArray.len() == PrototypeList::id::_ID_Count as uint); unsafe { //XXXjdm we should be storing the box pointer instead of the inner diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 9dde380cc6f..0894d30c89f 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -10,7 +10,7 @@ use dom::bindings::codegen::{HTMLHRElementBinding, HTMLIFrameElementBinding}; use dom::bindings::codegen::{HTMLParagraphElementBinding, HTMLScriptElementBinding}; use dom::bindings::codegen::{HTMLDivElementBinding, HTMLSpanElementBinding}; use dom::bindings::codegen::{HTMLImageElementBinding, HTMLOListElementBinding}; -use dom::bindings::codegen::{HTMLMetaElementBinding}; +use dom::bindings::codegen::{HTMLMetaElementBinding, HTMLStyleElementBinding}; use dom::bindings::utils::{null_string, str}; use dom::bindings::utils::{BindingObject, CacheableWrapper, DOMString, ErrorResult, WrapperCache}; use dom::clientrect::ClientRect; @@ -25,6 +25,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlstyleelement::HTMLStyleElement; use dom::node::{ElementNodeTypeId, Node, ScriptView, AbstractNode}; use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery}; use layout_interface::{ContentBoxesResponse}; @@ -120,7 +121,6 @@ pub struct HTMLSectionElement { parent: HTMLElement } pub struct HTMLSelectElement { parent: HTMLElement } pub struct HTMLSmallElement { parent: HTMLElement } pub struct HTMLSpanElement { parent: HTMLElement } -pub struct HTMLStyleElement { parent: HTMLElement } pub struct HTMLTableBodyElement { parent: HTMLElement } pub struct HTMLTableCellElement { parent: HTMLElement } pub struct HTMLTableElement { parent: HTMLElement } @@ -207,6 +207,8 @@ generate_cacheable_wrapper!(HTMLScriptElement, HTMLScriptElementBinding::Wrap) generate_binding_object!(HTMLScriptElement) generate_cacheable_wrapper!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) generate_binding_object!(HTMLSpanElement) +generate_cacheable_wrapper!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) +generate_binding_object!(HTMLStyleElement) // // Fancier elements diff --git a/src/components/script/dom/htmlstyleelement.rs b/src/components/script/dom/htmlstyleelement.rs new file mode 100644 index 00000000000..f79b8da679d --- /dev/null +++ b/src/components/script/dom/htmlstyleelement.rs @@ -0,0 +1,40 @@ +/* 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 HTMLStyleElement { + parent: HTMLElement, +} + +impl HTMLStyleElement { + pub fn Disabled(&self) -> bool { + false + } + + pub fn SetDisabled(&self, _disabled: bool) { + } + + pub fn Media(&self) -> DOMString { + null_string + } + + pub fn SetMedia(&mut self, _media: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Type(&self) -> DOMString { + null_string + } + + pub fn SetType(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Scoped(&self) -> bool { + false + } + + pub fn SetScoped(&self, _scoped: bool, _rv: &mut ErrorResult) { + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 6c45f912047..a89ebf76bd2 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -21,7 +21,7 @@ use dom::element::{HTMLAsideElement, HTMLBRElement, HTMLInputElement, HTMLItalicElement, HTMLLinkElement, HTMLOptionElement, HTMLParagraphElement, HTMLListItemElement, HTMLSectionElement, HTMLSelectElement, HTMLSmallElement, - HTMLSpanElement, HTMLStyleElement, HTMLTableBodyElement, + HTMLSpanElement, HTMLTableBodyElement, HTMLTableCellElement, HTMLTableElement, HTMLTableRowElement, HTMLTitleElement, HTMLUListElement}; use dom::element::{HTMLHeadingElementTypeId, Heading1, Heading2, Heading3, Heading4, Heading5, @@ -34,6 +34,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlstyleelement::HTMLStyleElement; use dom::element::{Element, Attr}; use dom::htmlelement::HTMLElement; use dom::node::{AbstractNode, Comment, Doctype, ElementNodeTypeId, Node, ScriptView}; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 5feda69fdd7..2b20104347a 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -58,6 +58,7 @@ pub mod dom { pub mod HTMLParagraphElementBinding; pub mod HTMLScriptElementBinding; pub mod HTMLSpanElementBinding; + pub mod HTMLStyleElementBinding; pub mod MouseEventBinding; pub mod NodeBinding; pub mod PrototypeList; @@ -89,6 +90,7 @@ pub mod dom { pub mod htmlmetaelement; pub mod htmlolistelement; pub mod htmlscriptelement; + pub mod htmlstyleelement; pub mod mouseevent; pub mod node; pub mod uievent; From 655bdcc5119412a3cfc696a43a9352ff36ec6847 Mon Sep 17 00:00:00 2001 From: saneyuki_s Date: Thu, 8 Aug 2013 21:18:20 +0900 Subject: [PATCH 3/3] Generate bindings for HTMLTableElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../bindings/codegen/HTMLTableElement.webidl | 62 ++++++++++++ src/components/script/dom/bindings/node.rs | 4 +- src/components/script/dom/bindings/utils.rs | 2 +- src/components/script/dom/element.rs | 5 +- src/components/script/dom/htmltableelement.rs | 98 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 3 +- src/components/script/script.rc | 2 + src/test/html/test_bindings.html | 1 + 10 files changed, 175 insertions(+), 4 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLTableElement.webidl create mode 100644 src/components/script/dom/htmltableelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index ba33f11a48e..2feea771e5d 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -560,6 +560,7 @@ addHTMLElement('HTMLParagraphElement') addHTMLElement('HTMLScriptElement') addHTMLElement('HTMLSpanElement') addHTMLElement('HTMLStyleElement') +addHTMLElement('HTMLTableElement') # If you add one of these, you need to make sure nsDOMQS.h has the relevant # macros added for it diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index ce40d7613c6..c9df70b276b 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4628,6 +4628,7 @@ class CGBindingRoot(CGThing): 'dom::htmlolistelement::HTMLOListElement', 'dom::htmlscriptelement::HTMLScriptElement', 'dom::htmlstyleelement::HTMLStyleElement', + 'dom::htmltableelement::HTMLTableElement', 'dom::bindings::utils::*', 'dom::bindings::conversions::*', 'dom::blob::*', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLTableElement.webidl b/src/components/script/dom/bindings/codegen/HTMLTableElement.webidl new file mode 100644 index 00000000000..9cc655a56d6 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLTableElement.webidl @@ -0,0 +1,62 @@ +/* -*- 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/ + * + * © 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 HTMLTableElement : HTMLElement { + /* + attribute HTMLTableCaptionElement? caption; + HTMLElement createCaption(); + */ + void deleteCaption(); + /* + [SetterThrows] + attribute HTMLTableSectionElement? tHead; + HTMLElement createTHead(); + */ + void deleteTHead(); + /* + [SetterThrows] + attribute HTMLTableSectionElement? tFoot; + HTMLElement createTFoot(); + */ + void deleteTFoot(); + /* + readonly attribute HTMLCollection tBodies; + HTMLElement createTBody(); + readonly attribute HTMLCollection rows; + [Throws] + HTMLElement insertRow(optional long index = -1); + */ + [Throws] + void deleteRow(long index); + attribute boolean sortable; + void stopSorting(); +}; + +partial interface HTMLTableElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString border; + [SetterThrows] + attribute DOMString frame; + [SetterThrows] + attribute DOMString rules; + [SetterThrows] + attribute DOMString summary; + [SetterThrows] + attribute DOMString width; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellPadding; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellSpacing; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 17367e433a6..5b5d26c5ec1 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -10,7 +10,7 @@ use dom::element::{HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLAnchorEleme use dom::element::{HTMLDivElementTypeId, HTMLImageElementTypeId, HTMLSpanElementTypeId}; use dom::element::{HTMLBodyElementTypeId, HTMLHRElementTypeId, HTMLIframeElementTypeId}; use dom::element::{HTMLParagraphElementTypeId, HTMLScriptElementTypeId, HTMLMetaElementTypeId}; -use dom::element::{HTMLOListElementTypeId, HTMLStyleElementTypeId}; +use dom::element::{HTMLOListElementTypeId, HTMLStyleElementTypeId, HTMLTableElementTypeId}; use dom::element::{HTMLHeadElement, HTMLHtmlElement, HTMLDivElement, HTMLSpanElement}; use dom::element::{HTMLParagraphElement}; use dom::htmlanchorelement::HTMLAnchorElement; @@ -22,6 +22,7 @@ use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::htmlstyleelement::HTMLStyleElement; +use dom::htmltableelement::HTMLTableElement; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; use dom::node::{DoctypeNodeTypeId, ScriptView, Text}; @@ -101,6 +102,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLScriptElementTypeId) => generate_element!(HTMLScriptElement), ElementNodeTypeId(HTMLSpanElementTypeId) => generate_element!(HTMLSpanElement), ElementNodeTypeId(HTMLStyleElementTypeId) => generate_element!(HTMLStyleElement), + ElementNodeTypeId(HTMLTableElementTypeId) => generate_element!(HTMLTableElement), ElementNodeTypeId(_) => element::create(cx, node).ptr, CommentNodeTypeId | DoctypeNodeTypeId => text::create(cx, node).ptr, diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 88da76d83fd..5943a03f738 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -617,7 +617,7 @@ pub extern fn ThrowingConstructor(_cx: *JSContext, _argc: uint, _vp: *JSVal) -> } pub fn initialize_global(global: *JSObject) { - let protoArray = @mut ([0 as *JSObject, ..44]); + let protoArray = @mut ([0 as *JSObject, ..45]); assert!(protoArray.len() == PrototypeList::id::_ID_Count as uint); unsafe { //XXXjdm we should be storing the box pointer instead of the inner diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 0894d30c89f..2d547190b7b 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -11,6 +11,7 @@ use dom::bindings::codegen::{HTMLParagraphElementBinding, HTMLScriptElementBindi use dom::bindings::codegen::{HTMLDivElementBinding, HTMLSpanElementBinding}; use dom::bindings::codegen::{HTMLImageElementBinding, HTMLOListElementBinding}; use dom::bindings::codegen::{HTMLMetaElementBinding, HTMLStyleElementBinding}; +use dom::bindings::codegen::{HTMLTableElementBinding}; use dom::bindings::utils::{null_string, str}; use dom::bindings::utils::{BindingObject, CacheableWrapper, DOMString, ErrorResult, WrapperCache}; use dom::clientrect::ClientRect; @@ -26,6 +27,7 @@ use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::htmlstyleelement::HTMLStyleElement; +use dom::htmltableelement::HTMLTableElement; use dom::node::{ElementNodeTypeId, Node, ScriptView, AbstractNode}; use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery}; use layout_interface::{ContentBoxesResponse}; @@ -123,7 +125,6 @@ pub struct HTMLSmallElement { parent: HTMLElement } pub struct HTMLSpanElement { parent: HTMLElement } pub struct HTMLTableBodyElement { parent: HTMLElement } pub struct HTMLTableCellElement { parent: HTMLElement } -pub struct HTMLTableElement { parent: HTMLElement } pub struct HTMLTableRowElement { parent: HTMLElement } pub struct HTMLTitleElement { parent: HTMLElement } pub struct HTMLUListElement { parent: HTMLElement } @@ -209,6 +210,8 @@ generate_cacheable_wrapper!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) generate_binding_object!(HTMLSpanElement) generate_cacheable_wrapper!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) generate_binding_object!(HTMLStyleElement) +generate_cacheable_wrapper!(HTMLTableElement, HTMLTableElementBinding::Wrap) +generate_binding_object!(HTMLTableElement) // // Fancier elements diff --git a/src/components/script/dom/htmltableelement.rs b/src/components/script/dom/htmltableelement.rs new file mode 100644 index 00000000000..85c038caf06 --- /dev/null +++ b/src/components/script/dom/htmltableelement.rs @@ -0,0 +1,98 @@ +/* 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 HTMLTableElement { + parent: HTMLElement, +} + +impl HTMLTableElement { + + pub fn DeleteCaption(&self) { + } + + pub fn DeleteTHead(&self) { + } + + pub fn DeleteTFoot(&self) { + } + + pub fn DeleteRow(&mut self, _index: i32, _rv: &mut ErrorResult) { + } + + pub fn Sortable(&self) -> bool { + false + } + + pub fn SetSortable(&self, _sortable: bool) { + } + + pub fn StopSorting(&self) { + } + + pub fn Align(&self) -> DOMString { + null_string + } + + pub fn SetAlign(&self, _align: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Border(&self) -> DOMString { + null_string + } + + pub fn SetBorder(&self, _border: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Frame(&self) -> DOMString { + null_string + } + + pub fn SetFrame(&self, _frame: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Rules(&self) -> DOMString { + null_string + } + + pub fn SetRules(&self, _rules: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Summary(&self) -> DOMString { + null_string + } + + pub fn SetSummary(&self, _summary: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Width(&self) -> DOMString { + null_string + } + + pub fn SetWidth(&self, _width: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn BgColor(&self) -> DOMString { + null_string + } + + pub fn SetBgColor(&self, _bg_color: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn CellPadding(&self) -> DOMString { + null_string + } + + pub fn SetCellPadding(&self, _cell_padding: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn CellSpacing(&self) -> DOMString { + null_string + } + + pub fn SetCellSpacing(&self, _cell_spacing: &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 a89ebf76bd2..a5f1bf5d67b 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -22,7 +22,7 @@ use dom::element::{HTMLAsideElement, HTMLBRElement, HTMLOptionElement, HTMLParagraphElement, HTMLListItemElement, HTMLSectionElement, HTMLSelectElement, HTMLSmallElement, HTMLSpanElement, HTMLTableBodyElement, - HTMLTableCellElement, HTMLTableElement, HTMLTableRowElement, + HTMLTableCellElement, HTMLTableRowElement, HTMLTitleElement, HTMLUListElement}; use dom::element::{HTMLHeadingElementTypeId, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6}; @@ -35,6 +35,7 @@ use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::htmlstyleelement::HTMLStyleElement; +use dom::htmltableelement::HTMLTableElement; use dom::element::{Element, Attr}; use dom::htmlelement::HTMLElement; use dom::node::{AbstractNode, Comment, Doctype, ElementNodeTypeId, Node, ScriptView}; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 2b20104347a..e4ae1daee06 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -59,6 +59,7 @@ pub mod dom { pub mod HTMLScriptElementBinding; pub mod HTMLSpanElementBinding; pub mod HTMLStyleElementBinding; + pub mod HTMLTableElementBinding; pub mod MouseEventBinding; pub mod NodeBinding; pub mod PrototypeList; @@ -91,6 +92,7 @@ pub mod dom { pub mod htmlolistelement; pub mod htmlscriptelement; pub mod htmlstyleelement; + pub mod htmltableelement; pub mod mouseevent; pub mod node; pub mod uievent; diff --git a/src/test/html/test_bindings.html b/src/test/html/test_bindings.html index ec6f78c9e08..6abca570d85 100644 --- a/src/test/html/test_bindings.html +++ b/src/test/html/test_bindings.html @@ -20,5 +20,6 @@
    +