From b36ae3b0dfe83d55c2776ae7fd1142cdf3bad16c Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 12:29:07 -0400 Subject: [PATCH 1/9] Generate bindings for HTMLButtonElement. --- .../script/dom/bindings/codegen/Bindings.conf | 5 + .../dom/bindings/codegen/CodegenRust.py | 2 + .../bindings/codegen/HTMLButtonElement.webidl | 50 ++++++++ .../dom/bindings/codegen/ValidityState.webidl | 25 ++++ src/components/script/dom/bindings/node.rs | 4 +- src/components/script/dom/element.rs | 5 + .../script/dom/htmlbuttonelement.rs | 116 ++++++++++++++++++ src/components/script/dom/validitystate.rs | 77 ++++++++++++ .../script/html/hubbub_html_parser.rs | 6 +- src/components/script/script.rc | 4 + 10 files changed, 291 insertions(+), 3 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLButtonElement.webidl create mode 100644 src/components/script/dom/bindings/codegen/ValidityState.webidl create mode 100644 src/components/script/dom/htmlbuttonelement.rs create mode 100644 src/components/script/dom/validitystate.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index e78a55ecbd1..360fa647e94 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -370,6 +370,9 @@ DOMInterfaces = { 'UIEvent': { }, +'ValidityState': { +}, + 'WebGLRenderingContext': { 'nativeType': 'mozilla::WebGLContext', 'headerFile': 'WebGLContext.h', @@ -548,6 +551,7 @@ def addHTMLElement(element): addHTMLElement('HTMLAnchorElement') addHTMLElement('HTMLAppletElement') addHTMLElement('HTMLAreaElement') +addHTMLElement('HTMLButtonElement') addHTMLElement('HTMLBaseElement') addHTMLElement('HTMLBodyElement') addHTMLElement('HTMLBRElement') @@ -556,6 +560,7 @@ addHTMLElement('HTMLDataElement') addHTMLElement('HTMLDivElement') addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') +addHTMLElement('HTMLFormElement') addHTMLElement('HTMLHeadElement') addHTMLElement('HTMLHtmlElement') addHTMLElement('HTMLHRElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index acf677d6b7d..f036c872b3d 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4623,6 +4623,7 @@ class CGBindingRoot(CGThing): 'dom::htmlbaseelement::HTMLBaseElement', #XXXjune0cho 'dom::htmlbodyelement::HTMLBodyElement', #XXXjune0cho 'dom::htmlbrelement::HTMLBRElement', #XXXrecrack + 'dom::htmlbuttonelement::HTMLButtonElement', #XXXjdm 'dom::htmlcanvaselement::HTMLCanvasElement', 'dom::htmldataelement::HTMLDataElement', #XXXjune0cho 'dom::htmldlistelement::HTMLDListElement', @@ -4664,6 +4665,7 @@ class CGBindingRoot(CGThing): 'dom::formdata::*', #XXXjdm 'dom::mouseevent::*', #XXXjdm 'dom::uievent::*', #XXXjdm + 'dom::validitystate::*', #XXXjdm 'dom::windowproxy::*', #XXXjdm 'dom::window::Window', #XXXjdm 'dom::bindings::codegen::*', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLButtonElement.webidl b/src/components/script/dom/bindings/codegen/HTMLButtonElement.webidl new file mode 100644 index 00000000000..2160e7595be --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLButtonElement.webidl @@ -0,0 +1,50 @@ +/* -*- 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-button-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 HTMLFormElement; + +// http://www.whatwg.org/specs/web-apps/current-work/#the-button-element +interface HTMLButtonElement : HTMLElement { + [SetterThrows, Pure] + attribute boolean autofocus; + [SetterThrows, Pure] + attribute boolean disabled; + [Pure] + readonly attribute HTMLFormElement? form; + [SetterThrows, Pure] + attribute DOMString formAction; + [SetterThrows, Pure] + attribute DOMString formEnctype; + [SetterThrows, Pure] + attribute DOMString formMethod; + [SetterThrows, Pure] + attribute boolean formNoValidate; + [SetterThrows, Pure] + attribute DOMString formTarget; + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure] + attribute DOMString value; +// Not yet implemented: +// attribute HTMLMenuElement? menu; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + void setCustomValidity(DOMString error); + +// Not yet implemented: +// readonly attribute NodeList labels; +}; diff --git a/src/components/script/dom/bindings/codegen/ValidityState.webidl b/src/components/script/dom/bindings/codegen/ValidityState.webidl new file mode 100644 index 00000000000..d8d1d1bccd8 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/ValidityState.webidl @@ -0,0 +1,25 @@ +/* -*- 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/#validitystate + * © 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 ValidityState { + readonly attribute boolean valueMissing; + readonly attribute boolean typeMismatch; + readonly attribute boolean patternMismatch; + readonly attribute boolean tooLong; + readonly attribute boolean rangeUnderflow; + readonly attribute boolean rangeOverflow; + readonly attribute boolean stepMismatch; +// readonly attribute boolean badInput; + readonly attribute boolean customError; + readonly attribute boolean valid; +}; + diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index f69fd1f2225..6400230df6b 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -9,7 +9,7 @@ use dom::bindings::utils::{CacheableWrapper, WrapperCache, DerivedWrapper}; use dom::element::{HTMLElementTypeId, HTMLAnchorElementTypeId, HTMLAppletElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, - HTMLBodyElementTypeId, HTMLBRElementTypeId, + HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDivElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, @@ -30,6 +30,7 @@ use dom::htmlappletelement::HTMLAppletElement; use dom::htmlareaelement::HTMLAreaElement; use dom::htmlbaseelement::HTMLBaseElement; use dom::htmlbodyelement::HTMLBodyElement; +use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmlbrelement::HTMLBRElement; use dom::htmlcanvaselement::HTMLCanvasElement; @@ -128,6 +129,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLBaseElementTypeId) => generate_element!(HTMLBaseElement), ElementNodeTypeId(HTMLBodyElementTypeId) => generate_element!(HTMLBodyElement), ElementNodeTypeId(HTMLBRElementTypeId) => generate_element!(HTMLBRElement), + ElementNodeTypeId(HTMLButtonElementTypeId) => generate_element!(HTMLButtonElement), ElementNodeTypeId(HTMLCanvasElementTypeId) => generate_element!(HTMLCanvasElement), ElementNodeTypeId(HTMLDataElementTypeId) => generate_element!(HTMLDataElement), ElementNodeTypeId(HTMLDListElementTypeId) => generate_element!(HTMLDListElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index d6217d0ce54..fd6e49d1006 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -7,6 +7,7 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLAreaElementBinding, HTMLBaseElementBinding, HTMLBodyElementBinding, HTMLBRElementBinding, + HTMLButtonElementBinding, HTMLCanvasElementBinding, HTMLDataElementBinding, HTMLDListElementBinding, HTMLDivElementBinding, HTMLHeadElementBinding, HTMLHRElementBinding, @@ -32,6 +33,7 @@ use dom::htmlareaelement::HTMLAreaElement; use dom::htmlbaseelement::HTMLBaseElement; use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlbrelement::HTMLBRElement; +use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmlcollection::HTMLCollection; use dom::htmldataelement::HTMLDataElement; @@ -104,6 +106,7 @@ pub enum ElementTypeId { HTMLBaseElementTypeId, HTMLBRElementTypeId, HTMLBodyElementTypeId, + HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDListElementTypeId, @@ -224,6 +227,8 @@ generate_cacheable_wrapper!(HTMLBaseElement, HTMLBaseElementBinding::Wrap) generate_binding_object!(HTMLBaseElement) generate_cacheable_wrapper!(HTMLBodyElement, HTMLBodyElementBinding::Wrap) generate_binding_object!(HTMLBodyElement) +generate_cacheable_wrapper!(HTMLButtonElement, HTMLButtonElementBinding::Wrap) +generate_binding_object!(HTMLButtonElement) generate_cacheable_wrapper!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap) generate_binding_object!(HTMLCanvasElement) generate_cacheable_wrapper!(HTMLDListElement, HTMLDListElementBinding::Wrap) diff --git a/src/components/script/dom/htmlbuttonelement.rs b/src/components/script/dom/htmlbuttonelement.rs new file mode 100644 index 00000000000..fa831c67fd3 --- /dev/null +++ b/src/components/script/dom/htmlbuttonelement.rs @@ -0,0 +1,116 @@ +/* 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; +use dom::node::{AbstractNode, ScriptView}; +use dom::validitystate::ValidityState; + +pub struct HTMLButtonElement { + parent: HTMLElement +} + +impl HTMLButtonElement { + pub fn Autofocus(&self) -> bool { + false + } + + pub fn SetAutofocus(&mut self, _autofocus: bool, _rv: &mut ErrorResult) { + } + + pub fn Disabled(&self) -> bool { + false + } + + pub fn SetDisabled(&mut self, _disabled: bool, _rv: &mut ErrorResult) { + } + + pub fn GetForm(&self) -> Option> { + None + } + + pub fn FormAction(&self) -> DOMString { + null_string + } + + pub fn SetFormAction(&mut self, _formaction: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn FormEnctype(&self) -> DOMString { + null_string + } + + pub fn SetFormEnctype(&mut self, _formenctype: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn FormMethod(&self) -> DOMString { + null_string + } + + pub fn SetFormMethod(&mut self, _formmethod: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn FormNoValidate(&self) -> bool { + false + } + + pub fn SetFormNoValidate(&mut self, _novalidate: bool, _rv: &mut ErrorResult) { + } + + pub fn FormTarget(&self) -> DOMString { + null_string + } + + pub fn SetFormTarget(&mut self, _formtarget: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _name: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Type(&self) -> DOMString { + null_string + } + + pub fn SetType(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Value(&self) -> DOMString { + null_string + } + + pub fn SetValue(&mut self, _value: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn WillValidate(&self) -> bool { + false + } + + pub fn SetWillValidate(&mut self, _will_validate: bool) { + } + + pub fn Validity(&self) -> @mut ValidityState { + @mut ValidityState::valid() + } + + pub fn SetValidity(&mut self, _validity: @mut ValidityState) { + } + + pub fn ValidationMessage(&self) -> DOMString { + null_string + } + + pub fn SetValidationMessage(&mut self, _message: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn CheckValidity(&self) -> bool { + true + } + + pub fn SetCustomValidity(&mut self, _error: &DOMString) { + } +} \ No newline at end of file diff --git a/src/components/script/dom/validitystate.rs b/src/components/script/dom/validitystate.rs new file mode 100644 index 00000000000..9bf415d64de --- /dev/null +++ b/src/components/script/dom/validitystate.rs @@ -0,0 +1,77 @@ +/* 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::{WrapperCache, BindingObject, CacheableWrapper}; +use dom::bindings::codegen::ValidityStateBinding; +use js::jsapi::{JSContext, JSObject}; +use std::cast; + +pub struct ValidityState { + wrapper: WrapperCache, + state: u8 +} + +impl ValidityState { + pub fn valid() -> ValidityState { + ValidityState { + wrapper: WrapperCache::new(), + state: 0 + } + } +} + +impl ValidityState { + pub fn ValueMissing(&self) -> bool { + false + } + + pub fn TypeMismatch(&self) -> bool { + false + } + + pub fn PatternMismatch(&self) -> bool { + false + } + + pub fn TooLong(&self) -> bool { + false + } + + pub fn RangeUnderflow(&self) -> bool { + false + } + + pub fn RangeOverflow(&self) -> bool { + false + } + + pub fn StepMismatch(&self) -> bool { + false + } + + pub fn CustomError(&self) -> bool { + false + } + + pub fn Valid(&self) -> bool { + true + } +} + +impl CacheableWrapper for ValidityState { + fn get_wrappercache(&mut self) -> &mut WrapperCache { + unsafe { cast::transmute(&self.wrapper) } + } + + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { + let mut unused = false; + ValidityStateBinding::Wrap(cx, scope, self, &mut unused) + } +} + +impl BindingObject for ValidityState { + fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut CacheableWrapper> { + None + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 8ed87121667..69ae559ef57 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -5,8 +5,8 @@ use dom::element::{HTMLElementTypeId, HTMLAnchorElementTypeId, HTMLAppletElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, - HTMLBRElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, - HTMLDivElementTypeId, HTMLDListElementTypeId, + HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, + HTMLDataElementTypeId, HTMLDivElementTypeId, HTMLDListElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, @@ -34,6 +34,7 @@ use dom::htmlappletelement::HTMLAppletElement; use dom::htmlareaelement::HTMLAreaElement; use dom::htmlbaseelement::HTMLBaseElement; use dom::htmlbodyelement::HTMLBodyElement; +use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmldataelement::HTMLDataElement; use dom::htmldlistelement::HTMLDListElement; @@ -246,6 +247,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "base", HTMLBaseElementTypeId, HTMLBaseElement, []); handle_element!(cx, tag, "br", HTMLBRElementTypeId, HTMLBRElement, []); handle_element!(cx, tag, "body", HTMLBodyElementTypeId, HTMLBodyElement, []); + handle_element!(cx, tag, "button", HTMLButtonElementTypeId, HTMLButtonElement, []); handle_element!(cx, tag, "canvas", HTMLCanvasElementTypeId, HTMLCanvasElement, []); handle_element!(cx, tag, "data", HTMLDataElementTypeId, HTMLDataElement, []); handle_element!(cx, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 037ba1aef63..efee8a7e67a 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -48,6 +48,7 @@ pub mod dom { pub mod HTMLBaseElementBinding; pub mod HTMLBodyElementBinding; pub mod HTMLBRElementBinding; + pub mod HTMLButtonElementBinding; pub mod HTMLCanvasElementBinding; pub mod HTMLCollectionBinding; pub mod HTMLDataElementBinding; @@ -88,6 +89,7 @@ pub mod dom { pub mod RegisterBindings; pub mod TextBinding; pub mod UIEventBinding; + pub mod ValidityStateBinding; pub mod WindowBinding; pub mod WindowProxyBinding; } @@ -108,6 +110,7 @@ pub mod dom { pub mod htmlbaseelement; pub mod htmlbodyelement; pub mod htmlbrelement; + pub mod htmlbuttonelement; pub mod htmlcanvaselement; pub mod htmlcollection; pub mod htmldataelement; @@ -140,6 +143,7 @@ pub mod dom { pub mod mouseevent; pub mod node; pub mod uievent; + pub mod validitystate; pub mod window; pub mod windowproxy; } From f68639755d6c0ddc0e1093c2bdec02501aaedf6f Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 12:52:37 -0400 Subject: [PATCH 2/9] Generate bindings for HTMLDataListElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../codegen/HTMLDataListElement.webidl | 16 ++++++++++ src/components/script/dom/bindings/node.rs | 4 ++- src/components/script/dom/element.rs | 8 +++-- .../script/dom/htmldatalistelement.rs | 29 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 8 +++-- src/components/script/script.rc | 2 ++ 8 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLDataListElement.webidl create mode 100644 src/components/script/dom/htmldatalistelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 360fa647e94..189556d8ac3 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -558,6 +558,7 @@ addHTMLElement('HTMLBRElement') addHTMLElement('HTMLCanvasElement') addHTMLElement('HTMLDataElement') addHTMLElement('HTMLDivElement') +addHTMLElement('HTMLDataListElement') addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') addHTMLElement('HTMLFormElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index f036c872b3d..d1044ec10a1 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4626,6 +4626,7 @@ class CGBindingRoot(CGThing): 'dom::htmlbuttonelement::HTMLButtonElement', #XXXjdm 'dom::htmlcanvaselement::HTMLCanvasElement', 'dom::htmldataelement::HTMLDataElement', #XXXjune0cho + 'dom::htmldatalistelement::HTMLDataListElement', 'dom::htmldlistelement::HTMLDListElement', 'dom::htmlelement::HTMLElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLDataListElement.webidl b/src/components/script/dom/bindings/codegen/HTMLDataListElement.webidl new file mode 100644 index 00000000000..83b20cd2bc3 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLDataListElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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 HTMLDataListElement : HTMLElement { + readonly attribute HTMLCollection options; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 6400230df6b..c70a9ea8fbe 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -10,7 +10,7 @@ use dom::element::{HTMLElementTypeId, HTMLAnchorElementTypeId, HTMLAppletElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, - HTMLCanvasElementTypeId, HTMLDataElementTypeId, + HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, @@ -35,6 +35,7 @@ use dom::htmlhrelement::HTMLHRElement; use dom::htmlbrelement::HTMLBRElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmldataelement::HTMLDataElement; +use dom::htmldatalistelement::HTMLDataListElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -132,6 +133,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLButtonElementTypeId) => generate_element!(HTMLButtonElement), ElementNodeTypeId(HTMLCanvasElementTypeId) => generate_element!(HTMLCanvasElement), ElementNodeTypeId(HTMLDataElementTypeId) => generate_element!(HTMLDataElement), + ElementNodeTypeId(HTMLDataListElementTypeId) => generate_element!(HTMLDataListElement), ElementNodeTypeId(HTMLDListElementTypeId) => generate_element!(HTMLDListElement), ElementNodeTypeId(HTMLDivElementTypeId) => generate_element!(HTMLDivElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index fd6e49d1006..70899477043 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -7,8 +7,8 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLAreaElementBinding, HTMLBaseElementBinding, HTMLBodyElementBinding, HTMLBRElementBinding, - HTMLButtonElementBinding, - HTMLCanvasElementBinding, HTMLDataElementBinding, + HTMLButtonElementBinding, HTMLCanvasElementBinding, + HTMLDataElementBinding, HTMLDataListElementBinding, HTMLDListElementBinding, HTMLDivElementBinding, HTMLHeadElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, @@ -37,6 +37,7 @@ use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmlcollection::HTMLCollection; use dom::htmldataelement::HTMLDataElement; +use dom::htmldatalistelement::HTMLDataListElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlelement::HTMLElement; use dom::htmlhrelement::HTMLHRElement; @@ -109,6 +110,7 @@ pub enum ElementTypeId { HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, + HTMLDataListElementTypeId, HTMLDListElementTypeId, HTMLDivElementTypeId, HTMLFontElementTypeId, @@ -231,6 +233,8 @@ generate_cacheable_wrapper!(HTMLButtonElement, HTMLButtonElementBinding::Wrap) generate_binding_object!(HTMLButtonElement) generate_cacheable_wrapper!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap) generate_binding_object!(HTMLCanvasElement) +generate_cacheable_wrapper!(HTMLDataListElement, HTMLDataListElementBinding::Wrap) +generate_binding_object!(HTMLDataListElement) generate_cacheable_wrapper!(HTMLDListElement, HTMLDListElementBinding::Wrap) generate_binding_object!(HTMLDListElement) generate_cacheable_wrapper!(HTMLBRElement, HTMLBRElementBinding::Wrap) diff --git a/src/components/script/dom/htmldatalistelement.rs b/src/components/script/dom/htmldatalistelement.rs new file mode 100644 index 00000000000..3869716b6a4 --- /dev/null +++ b/src/components/script/dom/htmldatalistelement.rs @@ -0,0 +1,29 @@ +/* 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::CacheableWrapper; +use dom::htmlcollection::HTMLCollection; +use dom::htmlelement::HTMLElement; + +use js::jsapi::{JSObject, JSContext}; + +pub struct HTMLDataListElement { + parent: HTMLElement +} + +impl HTMLDataListElement { + fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { + let doc = self.parent.parent.parent.owner_doc.unwrap(); + let win = doc.with_base(|doc| doc.window.unwrap()); + let cx = unsafe {(*win.page).js_info.get_ref().js_compartment.cx.ptr}; + let cache = win.get_wrappercache(); + let scope = cache.get_wrapper(); + (scope, cx) + } + + pub fn Options(&self) -> @mut HTMLCollection { + let (scope, cx) = self.get_scope_and_cx(); + HTMLCollection::new(~[], cx, scope) + } +} \ No newline at end of file diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 69ae559ef57..4fd44fbd54b 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -6,9 +6,9 @@ use dom::element::{HTMLElementTypeId, HTMLAnchorElementTypeId, HTMLAppletElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, - HTMLDataElementTypeId, HTMLDivElementTypeId, HTMLDListElementTypeId, - HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLHRElementTypeId, - HTMLHeadElementTypeId, HTMLHtmlElementTypeId, + HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, + HTMLDListElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, + HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, @@ -37,6 +37,7 @@ use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmldataelement::HTMLDataElement; +use dom::htmldatalistelement::HTMLDataListElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; @@ -250,6 +251,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "button", HTMLButtonElementTypeId, HTMLButtonElement, []); handle_element!(cx, tag, "canvas", HTMLCanvasElementTypeId, HTMLCanvasElement, []); handle_element!(cx, tag, "data", HTMLDataElementTypeId, HTMLDataElement, []); + handle_element!(cx, tag, "datalist",HTMLDataListElementTypeId, HTMLDataListElement, []); handle_element!(cx, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []); handle_element!(cx, tag, "dl", HTMLDListElementTypeId, HTMLDListElement, []); handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index efee8a7e67a..f3e0d994c53 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -52,6 +52,7 @@ pub mod dom { pub mod HTMLCanvasElementBinding; pub mod HTMLCollectionBinding; pub mod HTMLDataElementBinding; + pub mod HTMLDataListElementBinding; pub mod HTMLDListElementBinding; pub mod HTMLDivElementBinding; pub mod HTMLDocumentBinding; @@ -114,6 +115,7 @@ pub mod dom { pub mod htmlcanvaselement; pub mod htmlcollection; pub mod htmldataelement; + pub mod htmldatalistelement; pub mod htmldlistelement; pub mod htmldocument; pub mod htmlelement; From 7e9caddb391d68bcb678191887fba4d55a2be57a Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 15:14:35 -0400 Subject: [PATCH 3/9] Generate bindings for HTMLDirectoryElement and HTMLEmbedElement --- .../script/dom/bindings/codegen/Bindings.conf | 2 + .../dom/bindings/codegen/CodegenRust.py | 2 + .../codegen/HTMLDirectoryElement.webidl | 19 ++++++ .../bindings/codegen/HTMLEmbedElement.webidl | 45 ++++++++++++++ src/components/script/dom/bindings/node.rs | 13 ++-- src/components/script/dom/element.rs | 19 ++++-- .../script/dom/htmldirectoryelement.rs | 19 ++++++ src/components/script/dom/htmlembedelement.rs | 59 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 10 ++-- src/components/script/script.rc | 4 ++ 10 files changed, 179 insertions(+), 13 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLDirectoryElement.webidl create mode 100644 src/components/script/dom/bindings/codegen/HTMLEmbedElement.webidl create mode 100644 src/components/script/dom/htmldirectoryelement.rs create mode 100644 src/components/script/dom/htmlembedelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 189556d8ac3..a8ba7758bc8 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -559,8 +559,10 @@ addHTMLElement('HTMLCanvasElement') addHTMLElement('HTMLDataElement') addHTMLElement('HTMLDivElement') addHTMLElement('HTMLDataListElement') +addHTMLElement('HTMLDirectoryElement') addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') +addHTMLElement('HTMLEmbedElement') addHTMLElement('HTMLFormElement') addHTMLElement('HTMLHeadElement') addHTMLElement('HTMLHtmlElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index d1044ec10a1..c7d0a4b1772 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4628,7 +4628,9 @@ class CGBindingRoot(CGThing): 'dom::htmldataelement::HTMLDataElement', #XXXjune0cho 'dom::htmldatalistelement::HTMLDataListElement', 'dom::htmldlistelement::HTMLDListElement', + 'dom::htmldirectoryelement::HTMLDirectoryElement', 'dom::htmlelement::HTMLElement', #XXXjdm + 'dom::htmlembedelement::HTMLEmbedElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLDirectoryElement.webidl b/src/components/script/dom/bindings/codegen/HTMLDirectoryElement.webidl new file mode 100644 index 00000000000..9d5160af1bc --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLDirectoryElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/#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/#other-elements,-attributes-and-apis +interface HTMLDirectoryElement : HTMLElement { + [SetterThrows, Pure] + attribute boolean compact; +}; + diff --git a/src/components/script/dom/bindings/codegen/HTMLEmbedElement.webidl b/src/components/script/dom/bindings/codegen/HTMLEmbedElement.webidl new file mode 100644 index 00000000000..06d966905d5 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLEmbedElement.webidl @@ -0,0 +1,45 @@ +/* -*- 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-embed-element + * http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial + * + * © 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-embed-element +[NeedNewResolve] +interface HTMLEmbedElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString src; + [Pure, SetterThrows] + attribute DOMString type; + [Pure, SetterThrows] + attribute DOMString width; + [Pure, SetterThrows] + attribute DOMString height; + //[Throws] + //legacycaller any (any... arguments); +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial +partial interface HTMLEmbedElement { + [Pure, SetterThrows] + attribute DOMString align; + [Pure, SetterThrows] + attribute DOMString name; +}; + +partial interface HTMLEmbedElement { + // GetSVGDocument + Document? getSVGDocument(); +}; + +//HTMLEmbedElement implements MozImageLoadingContent; +//HTMLEmbedElement implements MozFrameLoaderOwner; +//HTMLEmbedElement implements MozObjectLoadingContent; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index c70a9ea8fbe..972f0119809 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -11,10 +11,11 @@ use dom::element::{HTMLElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, - HTMLDivElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, - HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, - HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, - HTMLMetaElementTypeId, HTMLOListElementTypeId, + HTMLDirectoryElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, + HTMLHeadElementTypeId, + HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, + HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, + HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLParagraphElementTypeId, HTMLProgressElementTypeId, HTMLQuoteElementTypeId, HTMLScriptElementTypeId, HTMLSpanElementTypeId, HTMLSourceElementTypeId, @@ -36,7 +37,9 @@ use dom::htmlbrelement::HTMLBRElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmldataelement::HTMLDataElement; use dom::htmldatalistelement::HTMLDataListElement; +use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; +use dom::htmlembedelement::HTMLEmbedElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; @@ -134,8 +137,10 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLCanvasElementTypeId) => generate_element!(HTMLCanvasElement), ElementNodeTypeId(HTMLDataElementTypeId) => generate_element!(HTMLDataElement), ElementNodeTypeId(HTMLDataListElementTypeId) => generate_element!(HTMLDataListElement), + ElementNodeTypeId(HTMLDirectoryElementTypeId) => generate_element!(HTMLDirectoryElement), ElementNodeTypeId(HTMLDListElementTypeId) => generate_element!(HTMLDListElement), ElementNodeTypeId(HTMLDivElementTypeId) => generate_element!(HTMLDivElement), + ElementNodeTypeId(HTMLEmbedElementTypeId) => generate_element!(HTMLEmbedElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), ElementNodeTypeId(HTMLHRElementTypeId) => generate_element!(HTMLHRElement), ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 70899477043..d58154dd519 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -9,11 +9,12 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLBodyElementBinding, HTMLBRElementBinding, HTMLButtonElementBinding, HTMLCanvasElementBinding, HTMLDataElementBinding, HTMLDataListElementBinding, - HTMLDListElementBinding, HTMLDivElementBinding, - HTMLHeadElementBinding, HTMLHRElementBinding, - HTMLHtmlElementBinding, HTMLIFrameElementBinding, - HTMLImageElementBinding, HTMLInputElementBinding, - HTMLLIElementBinding, + HTMLDirectoryElementBinding, HTMLDListElementBinding, + HTMLDivElementBinding, HTMLEmbedElementBinding, + HTMLHeadElementBinding, + HTMLHRElementBinding, HTMLHtmlElementBinding, + HTMLIFrameElementBinding, HTMLImageElementBinding, + HTMLInputElementBinding, HTMLLIElementBinding, HTMLLinkElementBinding, HTMLMetaElementBinding, HTMLOListElementBinding, HTMLParagraphElementBinding, HTMLProgressElementBinding, HTMLQuoteElementBinding, @@ -38,8 +39,10 @@ use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmlcollection::HTMLCollection; use dom::htmldataelement::HTMLDataElement; use dom::htmldatalistelement::HTMLDataListElement; +use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlelement::HTMLElement; +use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -111,8 +114,10 @@ pub enum ElementTypeId { HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, + HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLDivElementTypeId, + HTMLEmbedElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLHRElementTypeId, @@ -245,8 +250,12 @@ generate_cacheable_wrapper!(HTMLHtmlElement, HTMLHtmlElementBinding::Wrap) generate_binding_object!(HTMLHtmlElement) generate_cacheable_wrapper!(HTMLDataElement, HTMLDataElementBinding::Wrap) generate_binding_object!(HTMLDataElement) +generate_cacheable_wrapper!(HTMLDirectoryElement, HTMLDirectoryElementBinding::Wrap) +generate_binding_object!(HTMLDirectoryElement) generate_cacheable_wrapper!(HTMLDivElement, HTMLDivElementBinding::Wrap) generate_binding_object!(HTMLDivElement) +generate_cacheable_wrapper!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) +generate_binding_object!(HTMLEmbedElement) generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_binding_object!(HTMLIFrameElement) generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) diff --git a/src/components/script/dom/htmldirectoryelement.rs b/src/components/script/dom/htmldirectoryelement.rs new file mode 100644 index 00000000000..2c6899745fb --- /dev/null +++ b/src/components/script/dom/htmldirectoryelement.rs @@ -0,0 +1,19 @@ +/* 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::ErrorResult; +use dom::htmlelement::HTMLElement; + +pub struct HTMLDirectoryElement { + parent: HTMLElement +} + +impl HTMLDirectoryElement { + pub fn Compact(&self) -> bool { + false + } + + pub fn SetCompact(&mut self, _compact: bool, _rv: &mut ErrorResult) { + } +} \ No newline at end of file diff --git a/src/components/script/dom/htmlembedelement.rs b/src/components/script/dom/htmlembedelement.rs new file mode 100644 index 00000000000..2d86fa6f2e7 --- /dev/null +++ b/src/components/script/dom/htmlembedelement.rs @@ -0,0 +1,59 @@ +/* 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::document::AbstractDocument; +use dom::htmlelement::HTMLElement; + +pub struct HTMLEmbedElement { + parent: HTMLElement +} + +impl HTMLEmbedElement { + 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 Width(&self) -> DOMString { + null_string + } + + pub fn SetWidth(&mut self, _width: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Height(&self) -> DOMString { + null_string + } + + pub fn SetHeight(&mut self, _height: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Align(&self) -> DOMString { + null_string + } + + pub fn SetAlign(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn GetSVGDocument(&self) -> Option { + None + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 4fd44fbd54b..2268b2e2ae5 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -7,10 +7,10 @@ use dom::element::{HTMLElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, - HTMLDListElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, - HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHtmlElementTypeId, - HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, - HTMLLinkElementTypeId, HTMLLIElementTypeId, + HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLFontElementTypeId, + HTMLFormElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, + HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, + HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, HTMLParagraphElementTypeId, HTMLProgressElementTypeId, HTMLQuoteElementTypeId, HTMLScriptElementTypeId, @@ -38,6 +38,7 @@ use dom::htmlbuttonelement::HTMLButtonElement; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::htmldataelement::HTMLDataElement; use dom::htmldatalistelement::HTMLDataListElement; +use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; @@ -252,6 +253,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "canvas", HTMLCanvasElementTypeId, HTMLCanvasElement, []); handle_element!(cx, tag, "data", HTMLDataElementTypeId, HTMLDataElement, []); handle_element!(cx, tag, "datalist",HTMLDataListElementTypeId, HTMLDataListElement, []); + handle_element!(cx, tag, "directory",HTMLDirectoryElementTypeId, HTMLDirectoryElement, []); handle_element!(cx, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []); handle_element!(cx, tag, "dl", HTMLDListElementTypeId, HTMLDListElement, []); handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index f3e0d994c53..9158716c888 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -53,10 +53,12 @@ pub mod dom { pub mod HTMLCollectionBinding; pub mod HTMLDataElementBinding; pub mod HTMLDataListElementBinding; + pub mod HTMLDirectoryElementBinding; pub mod HTMLDListElementBinding; pub mod HTMLDivElementBinding; pub mod HTMLDocumentBinding; pub mod HTMLElementBinding; + pub mod HTMLEmbedElementBinding; pub mod HTMLHeadElementBinding; pub mod HTMLHRElementBinding; pub mod HTMLHtmlElementBinding; @@ -116,9 +118,11 @@ pub mod dom { pub mod htmlcollection; pub mod htmldataelement; pub mod htmldatalistelement; + pub mod htmldirectoryelement; pub mod htmldlistelement; pub mod htmldocument; pub mod htmlelement; + pub mod htmlembedelement; pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; From 1b5f48abe17dc875b421e1f8f2e1ca3a11dbc627 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 15:51:19 -0400 Subject: [PATCH 4/9] Generate bindings for HTMLFieldSetElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../codegen/HTMLFieldSetElement.webidl | 32 +++++++++ src/components/script/dom/bindings/node.rs | 4 +- src/components/script/dom/element.rs | 6 +- .../script/dom/htmlfieldsetelement.rs | 72 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 7 +- src/components/script/script.rc | 2 + 8 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLFieldSetElement.webidl create mode 100644 src/components/script/dom/htmlfieldsetelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index a8ba7758bc8..2066fae2fba 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -563,6 +563,7 @@ addHTMLElement('HTMLDirectoryElement') addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') addHTMLElement('HTMLEmbedElement') +addHTMLElement('HTMLFieldSetElement') addHTMLElement('HTMLFormElement') addHTMLElement('HTMLHeadElement') addHTMLElement('HTMLHtmlElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index c7d0a4b1772..8dfae4857dc 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4631,6 +4631,7 @@ class CGBindingRoot(CGThing): 'dom::htmldirectoryelement::HTMLDirectoryElement', 'dom::htmlelement::HTMLElement', #XXXjdm 'dom::htmlembedelement::HTMLEmbedElement', #XXXjdm + 'dom::htmlfieldsetelement::HTMLFieldSetElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLFieldSetElement.webidl b/src/components/script/dom/bindings/codegen/HTMLFieldSetElement.webidl new file mode 100644 index 00000000000..16eee1f9323 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLFieldSetElement.webidl @@ -0,0 +1,32 @@ +/* -*- 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-fieldset-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 HTMLFieldSetElement : HTMLElement { + [SetterThrows] + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [SetterThrows] + attribute DOMString name; + + readonly attribute DOMString type; + + readonly attribute HTMLCollection elements; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + + boolean checkValidity(); + + void setCustomValidity(DOMString error); +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 972f0119809..e685204a916 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -12,7 +12,7 @@ use dom::element::{HTMLElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDirectoryElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, - HTMLHeadElementTypeId, + HTMLFieldSetElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, @@ -40,6 +40,7 @@ use dom::htmldatalistelement::HTMLDataListElement; use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlembedelement::HTMLEmbedElement; +use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; @@ -141,6 +142,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLDListElementTypeId) => generate_element!(HTMLDListElement), ElementNodeTypeId(HTMLDivElementTypeId) => generate_element!(HTMLDivElement), ElementNodeTypeId(HTMLEmbedElementTypeId) => generate_element!(HTMLEmbedElement), + ElementNodeTypeId(HTMLFieldSetElementTypeId) => generate_element!(HTMLFieldSetElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), ElementNodeTypeId(HTMLHRElementTypeId) => generate_element!(HTMLHRElement), ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index d58154dd519..6fa81474944 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -11,7 +11,7 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLDataElementBinding, HTMLDataListElementBinding, HTMLDirectoryElementBinding, HTMLDListElementBinding, HTMLDivElementBinding, HTMLEmbedElementBinding, - HTMLHeadElementBinding, + HTMLFieldSetElementBinding, HTMLHeadElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, HTMLLIElementBinding, @@ -43,6 +43,7 @@ use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlelement::HTMLElement; use dom::htmlembedelement::HTMLEmbedElement; +use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -118,6 +119,7 @@ pub enum ElementTypeId { HTMLDListElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, + HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLHRElementTypeId, @@ -256,6 +258,8 @@ generate_cacheable_wrapper!(HTMLDivElement, HTMLDivElementBinding::Wrap) generate_binding_object!(HTMLDivElement) generate_cacheable_wrapper!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) generate_binding_object!(HTMLEmbedElement) +generate_cacheable_wrapper!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap) +generate_binding_object!(HTMLFieldSetElement) generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_binding_object!(HTMLIFrameElement) generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) diff --git a/src/components/script/dom/htmlfieldsetelement.rs b/src/components/script/dom/htmlfieldsetelement.rs new file mode 100644 index 00000000000..2005e46d7d2 --- /dev/null +++ b/src/components/script/dom/htmlfieldsetelement.rs @@ -0,0 +1,72 @@ +/* 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, CacheableWrapper}; +use dom::htmlcollection::HTMLCollection; +use dom::htmlelement::HTMLElement; +use dom::node::{AbstractNode, ScriptView}; +use dom::validitystate::ValidityState; + +use js::jsapi::{JSContext, JSObject}; + +pub struct HTMLFieldSetElement { + parent: HTMLElement +} + +impl HTMLFieldSetElement { + pub fn Disabled(&self) -> bool { + false + } + + pub fn SetDisabled(&mut self, _disabled: bool, _rv: &mut ErrorResult) { + } + + pub fn GetForm(&self) -> Option> { + None + } + + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _name: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Type(&self) -> DOMString { + null_string + } + + fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { + let doc = self.parent.parent.parent.owner_doc.unwrap(); + let win = doc.with_base(|doc| doc.window.unwrap()); + let cx = unsafe {(*win.page).js_info.get_ref().js_compartment.cx.ptr}; + let cache = win.get_wrappercache(); + let scope = cache.get_wrapper(); + (scope, cx) + } + + pub fn Elements(&self) -> @mut HTMLCollection { + let (scope, cx) = self.get_scope_and_cx(); + HTMLCollection::new(~[], cx, scope) + } + + pub fn WillValidate(&self) -> bool { + false + } + + pub fn Validity(&self) -> @mut ValidityState { + @mut ValidityState::valid() + } + + pub fn ValidationMessage(&self) -> DOMString { + null_string + } + + pub fn CheckValidity(&self) -> bool { + false + } + + pub fn SetCustomValidity(&mut self, _error: &DOMString) { + } +} \ No newline at end of file diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 2268b2e2ae5..686fe185bbb 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -7,7 +7,8 @@ use dom::element::{HTMLElementTypeId, HTMLAreaElementTypeId, HTMLBaseElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, - HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLFontElementTypeId, + HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLEmbedElementTypeId, + HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, @@ -40,6 +41,8 @@ use dom::htmldataelement::HTMLDataElement; use dom::htmldatalistelement::HTMLDataListElement; use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; +use dom::htmlembedelement::HTMLEmbedElement; +use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; use dom::htmlimageelement::HTMLImageElement; @@ -256,6 +259,8 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "directory",HTMLDirectoryElementTypeId, HTMLDirectoryElement, []); handle_element!(cx, tag, "div", HTMLDivElementTypeId, HTMLDivElement, []); handle_element!(cx, tag, "dl", HTMLDListElementTypeId, HTMLDListElement, []); + handle_element!(cx, tag, "embed", HTMLEmbedElementTypeId, HTMLEmbedElement, []); + handle_element!(cx, tag, "fieldset",HTMLFieldSetElementTypeId, HTMLFieldSetElement, []); handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []); handle_element!(cx, tag, "form", HTMLFormElementTypeId, HTMLFormElement, []); handle_element!(cx, tag, "hr", HTMLHRElementTypeId, HTMLHRElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 9158716c888..52e82349149 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -59,6 +59,7 @@ pub mod dom { pub mod HTMLDocumentBinding; pub mod HTMLElementBinding; pub mod HTMLEmbedElementBinding; + pub mod HTMLFieldSetElementBinding; pub mod HTMLHeadElementBinding; pub mod HTMLHRElementBinding; pub mod HTMLHtmlElementBinding; @@ -123,6 +124,7 @@ pub mod dom { pub mod htmldocument; pub mod htmlelement; pub mod htmlembedelement; + pub mod htmlfieldsetelement; pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; From 540993f196e95f7790482bd7678de3b05aa2ea5f Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 16:05:11 -0400 Subject: [PATCH 5/9] Generate bindings for HTMLFontElement.webidl --- .../bindings/codegen/HTMLFontElement.webidl | 18 ++++++++++ src/components/script/dom/htmlfontelement.rs | 33 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/components/script/dom/bindings/codegen/HTMLFontElement.webidl create mode 100644 src/components/script/dom/htmlfontelement.rs diff --git a/src/components/script/dom/bindings/codegen/HTMLFontElement.webidl b/src/components/script/dom/bindings/codegen/HTMLFontElement.webidl new file mode 100644 index 00000000000..781dabb889f --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLFontElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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 HTMLFontElement : HTMLElement { + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString color; + [SetterThrows] attribute DOMString face; + [SetterThrows] attribute DOMString size; +}; diff --git a/src/components/script/dom/htmlfontelement.rs b/src/components/script/dom/htmlfontelement.rs new file mode 100644 index 00000000000..eff3d85ae3b --- /dev/null +++ b/src/components/script/dom/htmlfontelement.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 HTMLFontElement { + parent: HTMLElement +} + +impl HTMLFontElement { + pub fn Color(&self) -> DOMString { + null_string + } + + pub fn SetColor(&mut self, _color: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Face(&self) -> DOMString { + null_string + } + + pub fn SetFace(&mut self, _face: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Size(&self) -> DOMString { + null_string + } + + pub fn SetSize(&mut self, _size: &DOMString, _rv: &mut ErrorResult) { + } +} From e552cfd4ce4e71095ca6302589b04d673c81dea4 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 16:25:02 -0400 Subject: [PATCH 6/9] Generate bindings for HTMLFrameElement. --- .../script/dom/bindings/codegen/Bindings.conf | 2 + .../dom/bindings/codegen/CodegenRust.py | 2 + .../bindings/codegen/HTMLFrameElement.webidl | 34 ++++++++ src/components/script/dom/bindings/node.rs | 7 +- src/components/script/dom/element.rs | 11 ++- src/components/script/dom/htmlframeelement.rs | 78 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 9 ++- src/components/script/script.rc | 4 + 8 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLFrameElement.webidl create mode 100644 src/components/script/dom/htmlframeelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 2066fae2fba..ece3ca862af 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -564,7 +564,9 @@ addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') addHTMLElement('HTMLEmbedElement') addHTMLElement('HTMLFieldSetElement') +addHTMLElement('HTMLFontElement') addHTMLElement('HTMLFormElement') +addHTMLElement('HTMLFrameElement') addHTMLElement('HTMLHeadElement') addHTMLElement('HTMLHtmlElement') addHTMLElement('HTMLHRElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 8dfae4857dc..f0855b0bda7 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4632,6 +4632,8 @@ class CGBindingRoot(CGThing): 'dom::htmlelement::HTMLElement', #XXXjdm 'dom::htmlembedelement::HTMLEmbedElement', #XXXjdm 'dom::htmlfieldsetelement::HTMLFieldSetElement', #XXXjdm + 'dom::htmlfontelement::HTMLFontElement', #XXXjdm + 'dom::htmlframeelement::HTMLFrameElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLFrameElement.webidl b/src/components/script/dom/bindings/codegen/HTMLFrameElement.webidl new file mode 100644 index 00000000000..4a62c3f9bee --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLFrameElement.webidl @@ -0,0 +1,34 @@ +/* -*- 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/#htmlframeelement + * © 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/#htmlframeelement +interface HTMLFrameElement : HTMLElement { + [SetterThrows] + attribute DOMString name; + [SetterThrows] + attribute DOMString scrolling; + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString frameBorder; + [SetterThrows] + attribute DOMString longDesc; + [SetterThrows] + attribute boolean noResize; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginHeight; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginWidth; +}; + +//HTMLFrameElement implements MozFrameLoaderOwner; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index e685204a916..727732d264d 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -12,7 +12,8 @@ use dom::element::{HTMLElementTypeId, HTMLBodyElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDirectoryElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, - HTMLFieldSetElementTypeId, HTMLHeadElementTypeId, + HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFrameElementTypeId, + HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, @@ -41,6 +42,8 @@ use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; +use dom::htmlfontelement::HTMLFontElement; +use dom::htmlframeelement::HTMLFrameElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; @@ -143,6 +146,8 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLDivElementTypeId) => generate_element!(HTMLDivElement), ElementNodeTypeId(HTMLEmbedElementTypeId) => generate_element!(HTMLEmbedElement), ElementNodeTypeId(HTMLFieldSetElementTypeId) => generate_element!(HTMLFieldSetElement), + ElementNodeTypeId(HTMLFontElementTypeId) => generate_element!(HTMLFontElement), + ElementNodeTypeId(HTMLFrameElementTypeId) => generate_element!(HTMLFrameElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), ElementNodeTypeId(HTMLHRElementTypeId) => generate_element!(HTMLHRElement), ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 6fa81474944..9cc1599f919 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -11,7 +11,8 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLDataElementBinding, HTMLDataListElementBinding, HTMLDirectoryElementBinding, HTMLDListElementBinding, HTMLDivElementBinding, HTMLEmbedElementBinding, - HTMLFieldSetElementBinding, HTMLHeadElementBinding, + HTMLFieldSetElementBinding, HTMLFontElementBinding, + HTMLFrameElementBinding, HTMLHeadElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, HTMLLIElementBinding, @@ -44,6 +45,8 @@ use dom::htmldlistelement::HTMLDListElement; use dom::htmlelement::HTMLElement; use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; +use dom::htmlfontelement::HTMLFontElement; +use dom::htmlframeelement::HTMLFrameElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -122,6 +125,7 @@ pub enum ElementTypeId { HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, + HTMLFrameElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHeadingElementTypeId, @@ -161,7 +165,6 @@ pub enum ElementTypeId { // pub struct HTMLDivElement { parent: HTMLElement } -pub struct HTMLFontElement { parent: HTMLElement } pub struct HTMLFormElement { parent: HTMLElement } pub struct HTMLHeadElement { parent: HTMLElement } pub struct HTMLHtmlElement { parent: HTMLElement } @@ -244,6 +247,8 @@ generate_cacheable_wrapper!(HTMLDataListElement, HTMLDataListElementBinding::Wra generate_binding_object!(HTMLDataListElement) generate_cacheable_wrapper!(HTMLDListElement, HTMLDListElementBinding::Wrap) generate_binding_object!(HTMLDListElement) +generate_cacheable_wrapper!(HTMLFrameElement, HTMLFrameElementBinding::Wrap) +generate_binding_object!(HTMLFrameElement) generate_cacheable_wrapper!(HTMLBRElement, HTMLBRElementBinding::Wrap) generate_binding_object!(HTMLBRElement) generate_cacheable_wrapper!(HTMLHRElement, HTMLHRElementBinding::Wrap) @@ -260,6 +265,8 @@ generate_cacheable_wrapper!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) generate_binding_object!(HTMLEmbedElement) generate_cacheable_wrapper!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap) generate_binding_object!(HTMLFieldSetElement) +generate_cacheable_wrapper!(HTMLFontElement, HTMLFontElementBinding::Wrap) +generate_binding_object!(HTMLFontElement) generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_binding_object!(HTMLIFrameElement) generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) diff --git a/src/components/script/dom/htmlframeelement.rs b/src/components/script/dom/htmlframeelement.rs new file mode 100644 index 00000000000..64ce1537363 --- /dev/null +++ b/src/components/script/dom/htmlframeelement.rs @@ -0,0 +1,78 @@ +/* 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::document::AbstractDocument; +use dom::htmlelement::HTMLElement; +use dom::windowproxy::WindowProxy; + +pub struct HTMLFrameElement { + parent: HTMLElement +} + +impl HTMLFrameElement { + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _name: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Scrolling(&self) -> DOMString { + null_string + } + + pub fn SetScrolling(&mut self, _scrolling: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Src(&self) -> DOMString { + null_string + } + + pub fn SetSrc(&mut self, _src: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn FrameBorder(&self) -> DOMString { + null_string + } + + pub fn SetFrameBorder(&mut self, _frameborder: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn LongDesc(&self) -> DOMString { + null_string + } + + pub fn SetLongDesc(&mut self, _longdesc: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn NoResize(&self) -> bool { + false + } + + pub fn SetNoResize(&mut self, _no_resize: bool, _rv: &mut ErrorResult) { + } + + pub fn GetContentDocument(&self) -> Option { + None + } + + pub fn GetContentWindow(&self) -> Option<@mut WindowProxy> { + None + } + + pub fn MarginHeight(&self) -> DOMString { + null_string + } + + pub fn SetMarginHeight(&mut self, _height: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn MarginWidth(&self) -> DOMString { + null_string + } + + pub fn SetMarginWidth(&mut self, _height: &DOMString, _rv: &mut ErrorResult) { + } +} \ No newline at end of file diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 686fe185bbb..0a9b052b44e 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -8,8 +8,8 @@ use dom::element::{HTMLElementTypeId, HTMLBRElementTypeId, HTMLButtonElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLEmbedElementTypeId, - HTMLFieldSetElementTypeId, HTMLFontElementTypeId, - HTMLFormElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, + HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, + HTMLFrameElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, @@ -22,7 +22,7 @@ use dom::element::{HTMLElementTypeId, HTMLTableRowElementTypeId, HTMLTextAreaElementTypeId, HTMLTimeElementTypeId, HTMLTitleElementTypeId, HTMLUListElementTypeId, UnknownElementTypeId}; -use dom::element::{HTMLDivElement, HTMLFontElement, HTMLFormElement, +use dom::element::{HTMLDivElement, HTMLFormElement, HTMLHeadElement, HTMLHeadingElement, HTMLHtmlElement, HTMLOptionElement, HTMLParagraphElement, HTMLSelectElement, HTMLSmallElement, @@ -43,6 +43,8 @@ use dom::htmldirectoryelement::HTMLDirectoryElement; use dom::htmldlistelement::HTMLDListElement; use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; +use dom::htmlfontelement::HTMLFontElement; +use dom::htmlframeelement::HTMLFrameElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; use dom::htmlimageelement::HTMLImageElement; @@ -263,6 +265,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "fieldset",HTMLFieldSetElementTypeId, HTMLFieldSetElement, []); handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []); handle_element!(cx, tag, "form", HTMLFormElementTypeId, HTMLFormElement, []); + handle_element!(cx, tag, "frame", HTMLFrameElementTypeId, HTMLFrameElement, []); handle_element!(cx, tag, "hr", HTMLHRElementTypeId, HTMLHRElement, []); handle_element!(cx, tag, "head", HTMLHeadElementTypeId, HTMLHeadElement, []); handle_element!(cx, tag, "html", HTMLHtmlElementTypeId, HTMLHtmlElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 52e82349149..013eeba3e4b 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -60,6 +60,8 @@ pub mod dom { pub mod HTMLElementBinding; pub mod HTMLEmbedElementBinding; pub mod HTMLFieldSetElementBinding; + pub mod HTMLFontElementBinding; + pub mod HTMLFrameElementBinding; pub mod HTMLHeadElementBinding; pub mod HTMLHRElementBinding; pub mod HTMLHtmlElementBinding; @@ -125,6 +127,8 @@ pub mod dom { pub mod htmlelement; pub mod htmlembedelement; pub mod htmlfieldsetelement; + pub mod htmlfontelement; + pub mod htmlframeelement; pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; From e71b3e67a458136a439ec9ef82bac94cfecb5411 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 16:36:24 -0400 Subject: [PATCH 7/9] Generate bindings for HTMLFrameSetElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../codegen/HTMLFrameSetElement.webidl | 21 +++++++++++++++ src/components/script/dom/bindings/node.rs | 4 ++- src/components/script/dom/element.rs | 7 ++++- .../script/dom/htmlframesetelement.rs | 26 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 7 +++-- src/components/script/script.rc | 2 ++ 8 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLFrameSetElement.webidl create mode 100644 src/components/script/dom/htmlframesetelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index ece3ca862af..bc5febf51fe 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -567,6 +567,7 @@ addHTMLElement('HTMLFieldSetElement') addHTMLElement('HTMLFontElement') addHTMLElement('HTMLFormElement') addHTMLElement('HTMLFrameElement') +addHTMLElement('HTMLFrameSetElement') addHTMLElement('HTMLHeadElement') addHTMLElement('HTMLHtmlElement') addHTMLElement('HTMLHRElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index f0855b0bda7..fcb98fd7a10 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4634,6 +4634,7 @@ class CGBindingRoot(CGThing): 'dom::htmlfieldsetelement::HTMLFieldSetElement', #XXXjdm 'dom::htmlfontelement::HTMLFontElement', #XXXjdm 'dom::htmlframeelement::HTMLFrameElement', #XXXjdm + 'dom::htmlframesetelement::HTMLFrameSetElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLFrameSetElement.webidl b/src/components/script/dom/bindings/codegen/HTMLFrameSetElement.webidl new file mode 100644 index 00000000000..6cc4d98cea1 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLFrameSetElement.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/ + * + * © 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 HTMLFrameSetElement : HTMLElement { + [SetterThrows] + attribute DOMString cols; + [SetterThrows] + attribute DOMString rows; +}; + +//HTMLFrameSetElement implements WindowEventHandlers; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 727732d264d..695b3822ffd 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -13,7 +13,7 @@ use dom::element::{HTMLElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDirectoryElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFrameElementTypeId, - HTMLHeadElementTypeId, + HTMLFrameSetElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, @@ -44,6 +44,7 @@ use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; +use dom::htmlframesetelement::HTMLFrameSetElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; @@ -148,6 +149,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLFieldSetElementTypeId) => generate_element!(HTMLFieldSetElement), ElementNodeTypeId(HTMLFontElementTypeId) => generate_element!(HTMLFontElement), ElementNodeTypeId(HTMLFrameElementTypeId) => generate_element!(HTMLFrameElement), + ElementNodeTypeId(HTMLFrameSetElementTypeId) => generate_element!(HTMLFrameSetElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), ElementNodeTypeId(HTMLHRElementTypeId) => generate_element!(HTMLHRElement), ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 9cc1599f919..23e9c2fc59d 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -12,7 +12,8 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLDirectoryElementBinding, HTMLDListElementBinding, HTMLDivElementBinding, HTMLEmbedElementBinding, HTMLFieldSetElementBinding, HTMLFontElementBinding, - HTMLFrameElementBinding, HTMLHeadElementBinding, + HTMLFrameElementBinding, HTMLFrameSetElementBinding, + HTMLHeadElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, HTMLLIElementBinding, @@ -47,6 +48,7 @@ use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; +use dom::htmlframesetelement::HTMLFrameSetElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -126,6 +128,7 @@ pub enum ElementTypeId { HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLFrameElementTypeId, + HTMLFrameSetElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, HTMLHeadingElementTypeId, @@ -249,6 +252,8 @@ generate_cacheable_wrapper!(HTMLDListElement, HTMLDListElementBinding::Wrap) generate_binding_object!(HTMLDListElement) generate_cacheable_wrapper!(HTMLFrameElement, HTMLFrameElementBinding::Wrap) generate_binding_object!(HTMLFrameElement) +generate_cacheable_wrapper!(HTMLFrameSetElement, HTMLFrameSetElementBinding::Wrap) +generate_binding_object!(HTMLFrameSetElement) generate_cacheable_wrapper!(HTMLBRElement, HTMLBRElementBinding::Wrap) generate_binding_object!(HTMLBRElement) generate_cacheable_wrapper!(HTMLHRElement, HTMLHRElementBinding::Wrap) diff --git a/src/components/script/dom/htmlframesetelement.rs b/src/components/script/dom/htmlframesetelement.rs new file mode 100644 index 00000000000..ff483633083 --- /dev/null +++ b/src/components/script/dom/htmlframesetelement.rs @@ -0,0 +1,26 @@ +/* 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 HTMLFrameSetElement { + parent: HTMLElement +} + +impl HTMLFrameSetElement { + pub fn Cols(&self) -> DOMString { + null_string + } + + pub fn SetCols(&mut self, _cols: &DOMString, _rv: &mut ErrorResult) { + } + + pub fn Rows(&self) -> DOMString { + null_string + } + + pub fn SetRows(&mut self, _rows: &DOMString, _rv: &mut ErrorResult) { + } +} \ No newline at end of file diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 0a9b052b44e..f41f64c8aca 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -9,7 +9,8 @@ use dom::element::{HTMLElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDivElementTypeId, HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLEmbedElementTypeId, HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, - HTMLFrameElementTypeId, HTMLHRElementTypeId, HTMLHeadElementTypeId, + HTMLFrameElementTypeId, HTMLFrameSetElementTypeId, HTMLHRElementTypeId, + HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, @@ -45,6 +46,7 @@ use dom::htmlembedelement::HTMLEmbedElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; +use dom::htmlframesetelement::HTMLFrameSetElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; use dom::htmlimageelement::HTMLImageElement; @@ -265,7 +267,8 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "fieldset",HTMLFieldSetElementTypeId, HTMLFieldSetElement, []); handle_element!(cx, tag, "font", HTMLFontElementTypeId, HTMLFontElement, []); handle_element!(cx, tag, "form", HTMLFormElementTypeId, HTMLFormElement, []); - handle_element!(cx, tag, "frame", HTMLFrameElementTypeId, HTMLFrameElement, []); + handle_element!(cx, tag, "frame", HTMLFrameElementTypeId, HTMLFrameElement, []); + handle_element!(cx, tag, "frameset",HTMLFrameSetElementTypeId, HTMLFrameSetElement, []); handle_element!(cx, tag, "hr", HTMLHRElementTypeId, HTMLHRElement, []); handle_element!(cx, tag, "head", HTMLHeadElementTypeId, HTMLHeadElement, []); handle_element!(cx, tag, "html", HTMLHtmlElementTypeId, HTMLHtmlElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 013eeba3e4b..311dbd7c16e 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -62,6 +62,7 @@ pub mod dom { pub mod HTMLFieldSetElementBinding; pub mod HTMLFontElementBinding; pub mod HTMLFrameElementBinding; + pub mod HTMLFrameSetElementBinding; pub mod HTMLHeadElementBinding; pub mod HTMLHRElementBinding; pub mod HTMLHtmlElementBinding; @@ -129,6 +130,7 @@ pub mod dom { pub mod htmlfieldsetelement; pub mod htmlfontelement; pub mod htmlframeelement; + pub mod htmlframesetelement; pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; From 39772f0bf41f379726623dab4b5aa7a5ad916252 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 17:09:24 -0400 Subject: [PATCH 8/9] Generate bindings for HTMLHeadingElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../codegen/HTMLHeadingElement.webidl | 21 ++++++++++++++ src/components/script/dom/bindings/node.rs | 4 ++- src/components/script/dom/element.rs | 23 +++------------ .../script/dom/htmlheadingelement.rs | 29 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 7 +++-- src/components/script/script.rc | 2 ++ 8 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLHeadingElement.webidl create mode 100644 src/components/script/dom/htmlheadingelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index bc5febf51fe..7074a855198 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -569,6 +569,7 @@ addHTMLElement('HTMLFormElement') addHTMLElement('HTMLFrameElement') addHTMLElement('HTMLFrameSetElement') addHTMLElement('HTMLHeadElement') +addHTMLElement('HTMLHeadingElement') addHTMLElement('HTMLHtmlElement') addHTMLElement('HTMLHRElement') addHTMLElement('HTMLIFrameElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index fcb98fd7a10..41a7b9af97e 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4636,6 +4636,7 @@ class CGBindingRoot(CGThing): 'dom::htmlframeelement::HTMLFrameElement', #XXXjdm 'dom::htmlframesetelement::HTMLFrameSetElement', #XXXjdm 'dom::htmldocument::HTMLDocument', #XXXjdm + 'dom::htmlheadingelement::HTMLHeadingElement', 'dom::htmlhrelement::HTMLHRElement', 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm 'dom::htmlimageelement::HTMLImageElement', #XXXjdm diff --git a/src/components/script/dom/bindings/codegen/HTMLHeadingElement.webidl b/src/components/script/dom/bindings/codegen/HTMLHeadingElement.webidl new file mode 100644 index 00000000000..37e7396dfdd --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLHeadingElement.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-h1,-h2,-h3,-h4,-h5,-and-h6-elements + * 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-h1,-h2,-h3,-h4,-h5,-and-h6-elements +interface HTMLHeadingElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLHeadingElement { + attribute DOMString align; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 695b3822ffd..922864fa52d 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -13,7 +13,7 @@ use dom::element::{HTMLElementTypeId, HTMLCanvasElementTypeId, HTMLDataElementTypeId, HTMLDataListElementTypeId, HTMLDirectoryElementTypeId, HTMLDivElementTypeId, HTMLEmbedElementTypeId, HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFrameElementTypeId, - HTMLFrameSetElementTypeId, HTMLHeadElementTypeId, + HTMLFrameSetElementTypeId, HTMLHeadElementTypeId, HTMLHeadingElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, @@ -45,6 +45,7 @@ use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; use dom::htmlframesetelement::HTMLFrameSetElement; +use dom::htmlheadingelement::HTMLHeadingElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; @@ -151,6 +152,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLFrameElementTypeId) => generate_element!(HTMLFrameElement), ElementNodeTypeId(HTMLFrameSetElementTypeId) => generate_element!(HTMLFrameSetElement), ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), + ElementNodeTypeId(HTMLHeadingElementTypeId) => generate_element!(HTMLHeadingElement), ElementNodeTypeId(HTMLHRElementTypeId) => generate_element!(HTMLHRElement), ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), ElementNodeTypeId(HTMLIframeElementTypeId) => generate_element!(HTMLIFrameElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 23e9c2fc59d..56095467bf7 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -13,7 +13,7 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLDivElementBinding, HTMLEmbedElementBinding, HTMLFieldSetElementBinding, HTMLFontElementBinding, HTMLFrameElementBinding, HTMLFrameSetElementBinding, - HTMLHeadElementBinding, + HTMLHeadElementBinding, HTMLHeadingElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, HTMLLIElementBinding, @@ -49,6 +49,7 @@ use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; use dom::htmlframesetelement::HTMLFrameSetElement; +use dom::htmlheadingelement::HTMLHeadingElement; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; @@ -272,6 +273,8 @@ generate_cacheable_wrapper!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wra generate_binding_object!(HTMLFieldSetElement) generate_cacheable_wrapper!(HTMLFontElement, HTMLFontElementBinding::Wrap) generate_binding_object!(HTMLFontElement) +generate_cacheable_wrapper!(HTMLHeadingElement, HTMLHeadingElementBinding::Wrap) +generate_binding_object!(HTMLHeadingElement) generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_binding_object!(HTMLIFrameElement) generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) @@ -321,15 +324,6 @@ generate_binding_object!(HTMLTimeElement) generate_cacheable_wrapper!(HTMLUListElement, HTMLUListElementBinding::Wrap) generate_binding_object!(HTMLUListElement) -// -// Fancier elements -// - -pub struct HTMLHeadingElement { - parent: HTMLElement, - level: HeadingLevel, -} - // // Element methods // @@ -624,12 +618,3 @@ impl Attr { } } } - -pub enum HeadingLevel { - Heading1, - Heading2, - Heading3, - Heading4, - Heading5, - Heading6, -} diff --git a/src/components/script/dom/htmlheadingelement.rs b/src/components/script/dom/htmlheadingelement.rs new file mode 100644 index 00000000000..d94bd06dab4 --- /dev/null +++ b/src/components/script/dom/htmlheadingelement.rs @@ -0,0 +1,29 @@ +/* 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}; +use dom::htmlelement::HTMLElement; + +pub enum HeadingLevel { + Heading1, + Heading2, + Heading3, + Heading4, + Heading5, + Heading6, +} + +pub struct HTMLHeadingElement { + parent: HTMLElement, + level: HeadingLevel, +} + +impl HTMLHeadingElement { + pub fn Align(&self) -> DOMString { + null_string + } + + pub fn SetAlign(&mut self, _align: &DOMString) { + } +} \ No newline at end of file diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index f41f64c8aca..9029bf0c5f1 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -24,12 +24,11 @@ use dom::element::{HTMLElementTypeId, HTMLTimeElementTypeId, HTMLTitleElementTypeId, HTMLUListElementTypeId, UnknownElementTypeId}; use dom::element::{HTMLDivElement, HTMLFormElement, - HTMLHeadElement, HTMLHeadingElement, HTMLHtmlElement, + HTMLHeadElement, HTMLHtmlElement, HTMLOptionElement, HTMLParagraphElement, HTMLSelectElement, HTMLSmallElement, HTMLSpanElement}; -use dom::element::{HTMLHeadingElementTypeId, Heading1, Heading2, Heading3, Heading4, Heading5, - Heading6}; +use dom::element::{HTMLHeadingElementTypeId}; use dom::htmlbrelement::HTMLBRElement; use dom::htmlanchorelement::HTMLAnchorElement; use dom::htmlappletelement::HTMLAppletElement; @@ -47,6 +46,8 @@ use dom::htmlfieldsetelement::HTMLFieldSetElement; use dom::htmlfontelement::HTMLFontElement; use dom::htmlframeelement::HTMLFrameElement; use dom::htmlframesetelement::HTMLFrameSetElement; +use dom::htmlheadingelement::{HTMLHeadingElement, Heading1, Heading2, Heading3, Heading4, + Heading5, Heading6}; use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; use dom::htmlimageelement::HTMLImageElement; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 311dbd7c16e..e1b186fe6d8 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -64,6 +64,7 @@ pub mod dom { pub mod HTMLFrameElementBinding; pub mod HTMLFrameSetElementBinding; pub mod HTMLHeadElementBinding; + pub mod HTMLHeadingElementBinding; pub mod HTMLHRElementBinding; pub mod HTMLHtmlElementBinding; pub mod HTMLIFrameElementBinding; @@ -131,6 +132,7 @@ pub mod dom { pub mod htmlfontelement; pub mod htmlframeelement; pub mod htmlframesetelement; + pub mod htmlheadingelement; pub mod htmlhrelement; pub mod htmliframeelement; pub mod htmlimageelement; From 48ce912757d7ce456f2d0182d8152d148d544022 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 26 Aug 2013 17:25:10 -0400 Subject: [PATCH 9/9] Generate bindings for HTMLMapElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../bindings/codegen/HTMLMapElement.webidl | 21 +++++++++++ src/components/script/dom/bindings/node.rs | 8 +++-- src/components/script/dom/element.rs | 7 +++- src/components/script/dom/htmlmapelement.rs | 35 +++++++++++++++++++ .../script/html/hubbub_html_parser.rs | 10 +++--- src/components/script/script.rc | 2 ++ 8 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLMapElement.webidl create mode 100644 src/components/script/dom/htmlmapelement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 7074a855198..2ee86c3cca1 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -577,6 +577,7 @@ addHTMLElement('HTMLImageElement') addHTMLElement('HTMLInputElement') addHTMLElement('HTMLLIElement') addHTMLElement('HTMLLinkElement') +addHTMLElement('HTMLMapElement') addHTMLElement('HTMLMetaElement') addHTMLElement('HTMLOListElement') addHTMLElement('HTMLParagraphElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 41a7b9af97e..c9dc5d28aee 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4643,6 +4643,7 @@ class CGBindingRoot(CGThing): 'dom::htmlinputelement::HTMLInputElement', 'dom::htmllielement::HTMLLIElement', 'dom::htmllinkelement::HTMLLinkElement', #XXXrecrack + 'dom::htmlmapelement::HTMLMapElement', 'dom::htmlmetaelement::HTMLMetaElement', 'dom::htmlolistelement::HTMLOListElement', 'dom::htmlprogresselement::HTMLProgressElement', diff --git a/src/components/script/dom/bindings/codegen/HTMLMapElement.webidl b/src/components/script/dom/bindings/codegen/HTMLMapElement.webidl new file mode 100644 index 00000000000..88fe4e54c95 --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLMapElement.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-map-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. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-map-element +interface HTMLMapElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString name; + [Constant] + readonly attribute HTMLCollection areas; + // Not supported yet. + //readonly attribute HTMLCollection images; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 922864fa52d..0d7b99776d4 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -16,9 +16,9 @@ use dom::element::{HTMLElementTypeId, HTMLFrameSetElementTypeId, HTMLHeadElementTypeId, HTMLHeadingElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, HTMLInputElementTypeId, HTMLLIElementTypeId, - HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, - HTMLParagraphElementTypeId, HTMLProgressElementTypeId, - HTMLQuoteElementTypeId, HTMLScriptElementTypeId, + HTMLLinkElementTypeId, HTMLMapElementTypeId, HTMLMetaElementTypeId, + HTMLOListElementTypeId, HTMLParagraphElementTypeId, + HTMLProgressElementTypeId, HTMLQuoteElementTypeId, HTMLScriptElementTypeId, HTMLSpanElementTypeId, HTMLSourceElementTypeId, HTMLStyleElementTypeId, HTMLTextAreaElementTypeId, HTMLTableElementTypeId, HTMLTableCaptionElementTypeId, HTMLTableCellElementTypeId, @@ -51,6 +51,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; +use dom::htmlmapelement::HTMLMapElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlprogresselement::HTMLProgressElement; @@ -160,6 +161,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLInputElementTypeId) => generate_element!(HTMLInputElement), ElementNodeTypeId(HTMLLIElementTypeId) => generate_element!(HTMLLIElement), ElementNodeTypeId(HTMLLinkElementTypeId) => generate_element!(HTMLLinkElement), + ElementNodeTypeId(HTMLMapElementTypeId) => generate_element!(HTMLMapElement), ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement), ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), ElementNodeTypeId(HTMLParagraphElementTypeId) => generate_element!(HTMLParagraphElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 56095467bf7..8a296c5d3d0 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -17,7 +17,8 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, HTMLLIElementBinding, - HTMLLinkElementBinding, HTMLMetaElementBinding, + HTMLLinkElementBinding, HTMLMapElementBinding, + HTMLMetaElementBinding, HTMLOListElementBinding, HTMLParagraphElementBinding, HTMLProgressElementBinding, HTMLQuoteElementBinding, HTMLScriptElementBinding, HTMLSourceElementBinding, HTMLSpanElementBinding, @@ -56,6 +57,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; +use dom::htmlmapelement::HTMLMapElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlprogresselement::HTMLProgressElement; @@ -139,6 +141,7 @@ pub enum ElementTypeId { HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, + HTMLMapElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, @@ -285,6 +288,8 @@ generate_cacheable_wrapper!(HTMLLIElement, HTMLLIElementBinding::Wrap) generate_binding_object!(HTMLLIElement) generate_cacheable_wrapper!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) generate_binding_object!(HTMLLinkElement) +generate_cacheable_wrapper!(HTMLMapElement, HTMLMapElementBinding::Wrap) +generate_binding_object!(HTMLMapElement) generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) generate_binding_object!(HTMLMetaElement) generate_cacheable_wrapper!(HTMLOListElement, HTMLOListElementBinding::Wrap) diff --git a/src/components/script/dom/htmlmapelement.rs b/src/components/script/dom/htmlmapelement.rs new file mode 100644 index 00000000000..815b6d7a692 --- /dev/null +++ b/src/components/script/dom/htmlmapelement.rs @@ -0,0 +1,35 @@ +/* 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, CacheableWrapper}; +use dom::htmlcollection::HTMLCollection; +use dom::htmlelement::HTMLElement; +use js::jsapi::{JSObject, JSContext}; + +pub struct HTMLMapElement { + parent: HTMLElement +} + +impl HTMLMapElement { + pub fn Name(&self) -> DOMString { + null_string + } + + pub fn SetName(&mut self, _name: &DOMString, _rv: &mut ErrorResult) { + } + + fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { + let doc = self.parent.parent.parent.owner_doc.unwrap(); + let win = doc.with_base(|doc| doc.window.unwrap()); + let cx = unsafe {(*win.page).js_info.get_ref().js_compartment.cx.ptr}; + let cache = win.get_wrappercache(); + let scope = cache.get_wrapper(); + (scope, cx) + } + + pub fn Areas(&self) -> @mut HTMLCollection { + let (scope, cx) = self.get_scope_and_cx(); + HTMLCollection::new(~[], cx, scope) + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 9029bf0c5f1..8c912d28136 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -10,10 +10,10 @@ use dom::element::{HTMLElementTypeId, HTMLDirectoryElementTypeId, HTMLDListElementTypeId, HTMLEmbedElementTypeId, HTMLFieldSetElementTypeId, HTMLFontElementTypeId, HTMLFormElementTypeId, HTMLFrameElementTypeId, HTMLFrameSetElementTypeId, HTMLHRElementTypeId, - HTMLHeadElementTypeId, - HTMLHtmlElementTypeId, HTMLImageElementTypeId, HTMLIframeElementTypeId, - HTMLInputElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, - HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLOptionElementTypeId, + HTMLHeadElementTypeId, HTMLHtmlElementTypeId, HTMLImageElementTypeId, + HTMLIframeElementTypeId, HTMLInputElementTypeId, HTMLLinkElementTypeId, + HTMLLIElementTypeId, HTMLMapElementTypeId, HTMLMetaElementTypeId, + HTMLOListElementTypeId, HTMLOptionElementTypeId, HTMLParagraphElementTypeId, HTMLProgressElementTypeId, HTMLQuoteElementTypeId, HTMLScriptElementTypeId, HTMLSelectElementTypeId, HTMLSmallElementTypeId, HTMLSourceElementTypeId, @@ -54,6 +54,7 @@ use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; +use dom::htmlmapelement::HTMLMapElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; use dom::htmlprogresselement::HTMLProgressElement; @@ -276,6 +277,7 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode handle_element!(cx, tag, "input", HTMLInputElementTypeId, HTMLInputElement, []); handle_element!(cx, tag, "link", HTMLLinkElementTypeId, HTMLLinkElement, []); handle_element!(cx, tag, "li", HTMLLIElementTypeId, HTMLLIElement, []); + handle_element!(cx, tag, "map", HTMLMapElementTypeId, HTMLMapElement, []); handle_element!(cx, tag, "meta", HTMLMetaElementTypeId, HTMLMetaElement, []); handle_element!(cx, tag, "ol", HTMLOListElementTypeId, HTMLOListElement, []); handle_element!(cx, tag, "option", HTMLOptionElementTypeId, HTMLOptionElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index e1b186fe6d8..2cbf9333de9 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -72,6 +72,7 @@ pub mod dom { pub mod HTMLInputElementBinding; pub mod HTMLLIElementBinding; pub mod HTMLLinkElementBinding; + pub mod HTMLMapElementBinding; pub mod HTMLMetaElementBinding; pub mod HTMLOListElementBinding; pub mod HTMLParagraphElementBinding; @@ -139,6 +140,7 @@ pub mod dom { pub mod htmlinputelement; pub mod htmllielement; pub mod htmllinkelement; + pub mod htmlmapelement; pub mod htmlmetaelement; pub mod htmlolistelement; pub mod htmlprogresselement;