From 6b764440d7a7edd8212673b72cad687ce16e5219 Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Tue, 13 Aug 2013 17:15:44 +0900 Subject: [PATCH] Generate bindings for HTMLLIElement. --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/CodegenRust.py | 1 + .../dom/bindings/codegen/HTMLLIElement.webidl | 28 +++++++++++++++++++ src/components/script/dom/bindings/node.rs | 4 ++- src/components/script/dom/element.rs | 5 +++- src/components/script/dom/htmllielement.rs | 26 +++++++++++++++++ .../script/html/hubbub_html_parser.rs | 3 +- src/components/script/script.rc | 2 ++ src/test/html/test_bindings.html | 4 ++- src/test/html/test_bindings.js | 7 +++++ 10 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 src/components/script/dom/bindings/codegen/HTMLLIElement.webidl create mode 100644 src/components/script/dom/htmllielement.rs diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 8c3b002c33da..f9cdc2e40ba7 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -562,6 +562,7 @@ addHTMLElement('HTMLHRElement') addHTMLElement('HTMLIFrameElement') addHTMLElement('HTMLImageElement') addHTMLElement('HTMLInputElement') +addHTMLElement('HTMLLIElement') addHTMLElement('HTMLLinkElement') addHTMLElement('HTMLMetaElement') addHTMLElement('HTMLOListElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index c1fe734e1cdd..291c1afa1975 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4632,6 +4632,7 @@ def makeEnumTypedef(e): 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm 'dom::htmlimageelement::HTMLImageElement', #XXXjdm 'dom::htmlinputelement::HTMLInputElement', + 'dom::htmllielement::HTMLLIElement', 'dom::htmllinkelement::HTMLLinkElement', #XXXrecrack 'dom::htmlmetaelement::HTMLMetaElement', 'dom::htmlolistelement::HTMLOListElement', diff --git a/src/components/script/dom/bindings/codegen/HTMLLIElement.webidl b/src/components/script/dom/bindings/codegen/HTMLLIElement.webidl new file mode 100644 index 000000000000..b3c5f37fed7b --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLLIElement.webidl @@ -0,0 +1,28 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-li-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// original import from +// http://hg.mozilla.org/mozilla-central/filelog/8c240c67f76c/dom/webidl/HTMLLIElement.webidl + +// http://www.whatwg.org/specs/web-apps/current-work/#the-li-element +interface HTMLLIElement : HTMLElement { + [SetterThrows, Pure] + attribute long value; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLLIElement { + [SetterThrows, Pure] + attribute DOMString type; +}; diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index f3fd0f6d1eab..75140b2643c1 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, HTMLDivElementTypeId, HTMLHeadElementTypeId, HTMLHRElementTypeId, HTMLHtmlElementTypeId, HTMLIframeElementTypeId, HTMLImageElementTypeId, - HTMLInputElementTypeId, HTMLLinkElementTypeId, + HTMLInputElementTypeId, HTMLLIElementTypeId, HTMLLinkElementTypeId, HTMLMetaElementTypeId, HTMLOListElementTypeId, HTMLParagraphElementTypeId, HTMLQuoteElementTypeId, HTMLScriptElementTypeId, HTMLSpanElementTypeId, HTMLSourceElementTypeId, @@ -37,6 +37,7 @@ use dom::htmldlistelement::HTMLDListElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; +use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; @@ -135,6 +136,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLIframeElementTypeId) => generate_element!(HTMLIFrameElement), ElementNodeTypeId(HTMLImageElementTypeId) => generate_element!(HTMLImageElement), ElementNodeTypeId(HTMLInputElementTypeId) => generate_element!(HTMLInputElement), + ElementNodeTypeId(HTMLLIElementTypeId) => generate_element!(HTMLLIElement), ElementNodeTypeId(HTMLLinkElementTypeId) => generate_element!(HTMLLinkElement), ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement), ElementNodeTypeId(HTMLOListElementTypeId) => generate_element!(HTMLOListElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 83e01170a821..7d3a0a808496 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -12,6 +12,7 @@ use dom::bindings::codegen::{HTMLAnchorElementBinding, HTMLAppletElementBinding, HTMLHeadElementBinding, HTMLHRElementBinding, HTMLHtmlElementBinding, HTMLIFrameElementBinding, HTMLImageElementBinding, HTMLInputElementBinding, + HTMLLIElementBinding, HTMLLinkElementBinding, HTMLMetaElementBinding, HTMLOListElementBinding, HTMLParagraphElementBinding, HTMLQuoteElementBinding, @@ -40,6 +41,7 @@ use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; +use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; @@ -149,7 +151,6 @@ pub struct HTMLFontElement { parent: HTMLElement } pub struct HTMLFormElement { parent: HTMLElement } pub struct HTMLHeadElement { parent: HTMLElement } pub struct HTMLHtmlElement { parent: HTMLElement } -pub struct HTMLLIElement { parent: HTMLElement } pub struct HTMLOptionElement { parent: HTMLElement } pub struct HTMLParagraphElement { parent: HTMLElement } pub struct HTMLSelectElement { parent: HTMLElement } @@ -241,6 +242,8 @@ generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) generate_binding_object!(HTMLImageElement) generate_cacheable_wrapper!(HTMLInputElement, HTMLInputElementBinding::Wrap) generate_binding_object!(HTMLInputElement) +generate_cacheable_wrapper!(HTMLLIElement, HTMLLIElementBinding::Wrap) +generate_binding_object!(HTMLLIElement) generate_cacheable_wrapper!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) generate_binding_object!(HTMLLinkElement) generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) diff --git a/src/components/script/dom/htmllielement.rs b/src/components/script/dom/htmllielement.rs new file mode 100644 index 000000000000..facc81d9a377 --- /dev/null +++ b/src/components/script/dom/htmllielement.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 HTMLLIElement { + parent: HTMLElement, +} + +impl HTMLLIElement { + pub fn Value(&self) -> i32 { + 0 + } + + pub fn SetValue(&mut self, _value: i32, _rv: &mut ErrorResult) { + } + + pub fn Type(&self) -> DOMString { + null_string + } + + pub fn SetType(&mut self, _type: &DOMString, _rv: &mut ErrorResult) { + } +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 559d50b682f3..6fa9ca19ce3b 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -22,7 +22,7 @@ use dom::element::{HTMLElementTypeId, UnknownElementTypeId}; use dom::element::{HTMLDivElement, HTMLFontElement, HTMLFormElement, HTMLHeadElement, HTMLHeadingElement, HTMLHtmlElement, - HTMLOptionElement, HTMLParagraphElement, HTMLLIElement, + HTMLOptionElement, HTMLParagraphElement, HTMLSelectElement, HTMLSmallElement, HTMLSpanElement}; use dom::element::{HTMLHeadingElementTypeId, Heading1, Heading2, Heading3, Heading4, Heading5, @@ -40,6 +40,7 @@ use dom::htmlhrelement::HTMLHRElement; use dom::htmliframeelement::{IFrameSize, HTMLIFrameElement}; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; +use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; use dom::htmlmetaelement::HTMLMetaElement; use dom::htmlolistelement::HTMLOListElement; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 0e661b6db53a..9a3e178c1d74 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -61,6 +61,7 @@ pub mod dom { pub mod HTMLIFrameElementBinding; pub mod HTMLImageElementBinding; pub mod HTMLInputElementBinding; + pub mod HTMLLIElementBinding; pub mod HTMLLinkElementBinding; pub mod HTMLMetaElementBinding; pub mod HTMLOListElementBinding; @@ -116,6 +117,7 @@ pub mod dom { pub mod htmliframeelement; pub mod htmlimageelement; pub mod htmlinputelement; + pub mod htmllielement; pub mod htmllinkelement; pub mod htmlmetaelement; pub mod htmlolistelement; diff --git a/src/test/html/test_bindings.html b/src/test/html/test_bindings.html index 1d057ca49e8a..4c80356ccfb0 100644 --- a/src/test/html/test_bindings.html +++ b/src/test/html/test_bindings.html @@ -23,7 +23,9 @@ -
    +
      +
    1. li
    2. +
    diff --git a/src/test/html/test_bindings.js b/src/test/html/test_bindings.js index 604025ea92da..a211d12fe211 100644 --- a/src/test/html/test_bindings.js +++ b/src/test/html/test_bindings.js @@ -227,6 +227,13 @@ window.alert(tags.length); window.alert(tags[0].tagName); window.alert(tags[0] instanceof HTMLInputElement); +window.alert("HTMLLIElement:"); +let tags = document.getElementsByTagName("li"); +window.alert(tags); +window.alert(tags.length); +window.alert(tags[0].tagName); +window.alert(tags[0] instanceof HTMLLLIElement); + //TODO: Doesn't work until we throw proper exceptions instead of returning 0 on // unwrap failure. /*try {
    sample table