From faf53fd05cabc9427296edc5b5c50a8ed987633f Mon Sep 17 00:00:00 2001 From: Marcos Caceres Date: Fri, 18 Oct 2013 22:03:58 +0100 Subject: [PATCH] Implemention of HTMLMainElement --- .../script/dom/bindings/codegen/Bindings.conf | 1 + .../dom/bindings/codegen/HTMLMainElement.webidl | 14 ++++++++++++++ src/components/script/dom/bindings/element.rs | 3 +++ src/components/script/dom/bindings/node.rs | 1 + src/components/script/dom/element.rs | 1 + src/components/script/dom/htmlmainelement.rs | 9 +++++++++ src/components/script/html/hubbub_html_parser.rs | 1 + src/components/script/script.rc | 1 + src/test/html/content/test_mainelement.html | 9 +++++++++ 9 files changed, 40 insertions(+) create mode 100644 src/components/script/dom/bindings/codegen/HTMLMainElement.webidl create mode 100644 src/components/script/dom/htmlmainelement.rs create mode 100644 src/test/html/content/test_mainelement.html diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 6aaa91fb971..770bea35c33 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -611,6 +611,7 @@ addHTMLElement('HTMLLegendElement') addHTMLElement('HTMLLIElement') addHTMLElement('HTMLLinkElement') addHTMLElement('HTMLMapElement') +addHTMLElement('HTMLMainElement') addHTMLElement('HTMLMediaElement') addHTMLElement('HTMLMetaElement') addHTMLElement('HTMLMeterElement') diff --git a/src/components/script/dom/bindings/codegen/HTMLMainElement.webidl b/src/components/script/dom/bindings/codegen/HTMLMainElement.webidl new file mode 100644 index 00000000000..05a5531d62b --- /dev/null +++ b/src/components/script/dom/bindings/codegen/HTMLMainElement.webidl @@ -0,0 +1,14 @@ +/* -*- 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 HTMLMainElement : HTMLElement {}; \ No newline at end of file diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 949fc0e9852..82d677fdb19 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -209,6 +209,9 @@ generate_traceable_htmlelement!(HTMLLIElement) generate_cacheable_wrapper_htmlelement!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) generate_traceable_htmlelement!(HTMLLinkElement) +generate_cacheable_wrapper_htmlelement!(HTMLMainElement, HTMLMainElementBinding::Wrap) +generate_traceable_htmlelement!(HTMLMainElement) + generate_cacheable_wrapper_htmlelement!(HTMLMapElement, HTMLMapElementBinding::Wrap) generate_traceable_htmlelement!(HTMLMapElement) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index ac467a9a5c2..f0eba2a341a 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -55,6 +55,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject ElementNodeTypeId(HTMLLegendElementTypeId) => generate_element!(HTMLLegendElement), ElementNodeTypeId(HTMLLIElementTypeId) => generate_element!(HTMLLIElement), ElementNodeTypeId(HTMLLinkElementTypeId) => generate_element!(HTMLLinkElement), + ElementNodeTypeId(HTMLMainElementTypeId) => generate_element!(HTMLMainElement), ElementNodeTypeId(HTMLMapElementTypeId) => generate_element!(HTMLMapElement), ElementNodeTypeId(HTMLMediaElementTypeId) => generate_element!(HTMLMediaElement), ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement), diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 3f0e77a4e4c..ed0480122c7 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -82,6 +82,7 @@ pub enum ElementTypeId { HTMLLegendElementTypeId, HTMLLinkElementTypeId, HTMLLIElementTypeId, + HTMLMainElementTypeId, HTMLMapElementTypeId, HTMLMediaElementTypeId, HTMLMetaElementTypeId, diff --git a/src/components/script/dom/htmlmainelement.rs b/src/components/script/dom/htmlmainelement.rs new file mode 100644 index 00000000000..c81d73b2b40 --- /dev/null +++ b/src/components/script/dom/htmlmainelement.rs @@ -0,0 +1,9 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use dom::htmlelement::HTMLElement; + +pub struct HTMLMainElement { + htmlelement: HTMLElement +} diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index a1b600c2c35..7aba3987f53 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -249,6 +249,7 @@ pub fn build_element_from_tag(cx: *JSContext, tag: &str, document: AbstractDocum handle_element!(cx, document, tag, "link", HTMLLinkElementTypeId, HTMLLinkElement, []); handle_element!(cx, document, tag, "li", HTMLLIElementTypeId, HTMLLIElement, []); handle_element!(cx, document, tag, "map", HTMLMapElementTypeId, HTMLMapElement, []); + handle_element!(cx, document, tag, "main", HTMLMainElementTypeId, HTMLMainElement, []); handle_element!(cx, document, tag, "meta", HTMLMetaElementTypeId, HTMLMetaElement, []); handle_element!(cx, document, tag, "meter", HTMLMeterElementTypeId, HTMLMeterElement, []); handle_element!(cx, document, tag, "mod", HTMLModElementTypeId, HTMLModElement, []); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index b30678ee9ff..3fd36ee3724 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -90,6 +90,7 @@ pub mod dom { pub mod htmllegendelement; pub mod htmllielement; pub mod htmllinkelement; + pub mod htmlmainelement; pub mod htmlmapelement; pub mod htmlmediaelement; pub mod htmlmetaelement; diff --git a/src/test/html/content/test_mainelement.html b/src/test/html/content/test_mainelement.html new file mode 100644 index 00000000000..2aaa791eb95 --- /dev/null +++ b/src/test/html/content/test_mainelement.html @@ -0,0 +1,9 @@ + + + +
+ \ No newline at end of file