diff -r 000000000000 -r 4f2f89ce4247 WebCore/generated/HTMLElementFactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebCore/generated/HTMLElementFactory.cpp Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,637 @@ +/* + * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT. + * + * This file was generated by the dom/make_names.pl script. + * + * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "HTMLElementFactory.h" +#include "HTMLNames.h" +#include "HTMLAnchorElement.h" +#include "HTMLElement.h" +#include "HTMLAppletElement.h" +#include "HTMLAreaElement.h" +#include "HTMLAudioElement.h" +#include "HTMLBaseElement.h" +#include "HTMLBaseFontElement.h" +#include "HTMLBlockquoteElement.h" +#include "HTMLBodyElement.h" +#include "HTMLBRElement.h" +#include "HTMLButtonElement.h" +#include "HTMLCanvasElement.h" +#include "HTMLTableCaptionElement.h" +#include "HTMLTableColElement.h" +#include "HTMLDataGridElement.h" +#include "HTMLDataListElement.h" +#include "HTMLDataGridCellElement.h" +#include "HTMLDataGridColElement.h" +#include "HTMLModElement.h" +#include "HTMLDirectoryElement.h" +#include "HTMLDivElement.h" +#include "HTMLDListElement.h" +#include "HTMLDataGridRowElement.h" +#include "HTMLEmbedElement.h" +#include "HTMLFieldSetElement.h" +#include "HTMLFontElement.h" +#include "HTMLFormElement.h" +#include "HTMLFrameElement.h" +#include "HTMLFrameSetElement.h" +#include "HTMLHeadingElement.h" +#include "HTMLHeadElement.h" +#include "HTMLHRElement.h" +#include "HTMLHtmlElement.h" +#include "HTMLIFrameElement.h" +#include "HTMLImageElement.h" +#include "HTMLInputElement.h" +#include "HTMLIsIndexElement.h" +#include "HTMLKeygenElement.h" +#include "HTMLLabelElement.h" +#include "HTMLLegendElement.h" +#include "HTMLLIElement.h" +#include "HTMLLinkElement.h" +#include "HTMLPreElement.h" +#include "HTMLMapElement.h" +#include "HTMLMarqueeElement.h" +#include "HTMLMenuElement.h" +#include "HTMLMetaElement.h" +#include "HTMLMeterElement.h" +#include "HTMLObjectElement.h" +#include "HTMLOListElement.h" +#include "HTMLOptGroupElement.h" +#include "HTMLOptionElement.h" +#include "HTMLParagraphElement.h" +#include "HTMLParamElement.h" +#include "HTMLProgressElement.h" +#include "HTMLQuoteElement.h" +#include "HTMLScriptElement.h" +#include "HTMLSelectElement.h" +#include "HTMLSourceElement.h" +#include "HTMLStyleElement.h" +#include "HTMLTableElement.h" +#include "HTMLTableSectionElement.h" +#include "HTMLTableCellElement.h" +#include "HTMLTextAreaElement.h" +#include "HTMLTitleElement.h" +#include "HTMLTableRowElement.h" +#include "HTMLUListElement.h" +#include "HTMLVideoElement.h" +#include + +#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(VIDEO) +#include "Document.h" +#include "Settings.h" +#endif + +namespace WebCore { + +using namespace HTMLNames; + +typedef PassRefPtr (*ConstructorFunction)(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); +typedef HashMap FunctionMap; + +static FunctionMap* gFunctionMap = 0; + +static PassRefPtr anchorConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLAnchorElement::create(tagName, document); +} + +static PassRefPtr appletConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLAppletElement::create(tagName, document); +} + +static PassRefPtr areaConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLAreaElement::create(tagName, document); +} + +#if ENABLE(VIDEO) + +static PassRefPtr audioConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + Settings* settings = document->settings(); + if (!MediaPlayer::isAvailable() || (settings && !settings->isMediaEnabled())) + return HTMLElement::create(tagName, document); + + return HTMLAudioElement::create(tagName, document); +} + +#endif +static PassRefPtr baseConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLBaseElement::create(tagName, document); +} + +static PassRefPtr basefontConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLBaseFontElement::create(tagName, document); +} + +static PassRefPtr blockquoteConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLBlockquoteElement::create(tagName, document); +} + +static PassRefPtr bodyConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLBodyElement::create(tagName, document); +} + +static PassRefPtr brConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLBRElement::create(tagName, document); +} + +static PassRefPtr buttonConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLButtonElement::create(tagName, document, formElement); +} + +static PassRefPtr canvasConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLCanvasElement::create(tagName, document); +} + +static PassRefPtr tablecaptionConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableCaptionElement::create(tagName, document); +} + +static PassRefPtr tablecolConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableColElement::create(tagName, document); +} + +#if ENABLE(DATAGRID) + +static PassRefPtr datagridConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDataGridElement::create(tagName, document); +} + +#endif +#if ENABLE(DATALIST) + +static PassRefPtr datalistConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDataListElement::create(tagName, document); +} + +#endif +#if ENABLE(DATAGRID) + +static PassRefPtr datagridcellConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDataGridCellElement::create(tagName, document); +} + +#endif +#if ENABLE(DATAGRID) + +static PassRefPtr datagridcolConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDataGridColElement::create(tagName, document); +} + +#endif +static PassRefPtr modConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLModElement::create(tagName, document); +} + +static PassRefPtr directoryConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDirectoryElement::create(tagName, document); +} + +static PassRefPtr divConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDivElement::create(tagName, document); +} + +static PassRefPtr dlistConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDListElement::create(tagName, document); +} + +#if ENABLE(DATAGRID) + +static PassRefPtr datagridrowConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLDataGridRowElement::create(tagName, document); +} + +#endif +static PassRefPtr embedConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLEmbedElement::create(tagName, document); +} + +static PassRefPtr fieldsetConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLFieldSetElement::create(tagName, document, formElement); +} + +static PassRefPtr fontConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLFontElement::create(tagName, document); +} + +static PassRefPtr formConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLFormElement::create(tagName, document); +} + +static PassRefPtr frameConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLFrameElement::create(tagName, document); +} + +static PassRefPtr framesetConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLFrameSetElement::create(tagName, document); +} + +static PassRefPtr headingConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLHeadingElement::create(tagName, document); +} + +static PassRefPtr headConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLHeadElement::create(tagName, document); +} + +static PassRefPtr hrConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLHRElement::create(tagName, document); +} + +static PassRefPtr htmlConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLHtmlElement::create(tagName, document); +} + +static PassRefPtr iframeConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLIFrameElement::create(tagName, document); +} + +static PassRefPtr imageConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLImageElement::create(tagName, document, formElement); +} + +static PassRefPtr inputConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLInputElement::create(tagName, document, formElement); +} + +static PassRefPtr isindexConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLIsIndexElement::create(tagName, document, formElement); +} + +static PassRefPtr keygenConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLKeygenElement::create(tagName, document, formElement); +} + +static PassRefPtr labelConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLLabelElement::create(tagName, document); +} + +static PassRefPtr legendConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLLegendElement::create(tagName, document, formElement); +} + +static PassRefPtr liConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLLIElement::create(tagName, document); +} + +static PassRefPtr linkConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool createdByParser) +{ + return HTMLLinkElement::create(tagName, document, createdByParser); +} + +static PassRefPtr preConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLPreElement::create(tagName, document); +} + +static PassRefPtr mapConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLMapElement::create(tagName, document); +} + +static PassRefPtr marqueeConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLMarqueeElement::create(tagName, document); +} + +static PassRefPtr menuConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLMenuElement::create(tagName, document); +} + +static PassRefPtr metaConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLMetaElement::create(tagName, document); +} + +#if ENABLE(METER_TAG) + +static PassRefPtr meterConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLMeterElement::create(tagName, document); +} + +#endif +static PassRefPtr objectConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool createdByParser) +{ + return HTMLObjectElement::create(tagName, document, createdByParser); +} + +static PassRefPtr olistConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLOListElement::create(tagName, document); +} + +static PassRefPtr optgroupConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLOptGroupElement::create(tagName, document, formElement); +} + +static PassRefPtr optionConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLOptionElement::create(tagName, document, formElement); +} + +static PassRefPtr paragraphConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLParagraphElement::create(tagName, document); +} + +static PassRefPtr paramConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLParamElement::create(tagName, document); +} + +#if ENABLE(PROGRESS_TAG) + +static PassRefPtr progressConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLProgressElement::create(tagName, document); +} + +#endif +static PassRefPtr quoteConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLQuoteElement::create(tagName, document); +} + +static PassRefPtr scriptConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool createdByParser) +{ + return HTMLScriptElement::create(tagName, document, createdByParser); +} + +static PassRefPtr selectConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLSelectElement::create(tagName, document, formElement); +} + +#if ENABLE(VIDEO) + +static PassRefPtr sourceConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + Settings* settings = document->settings(); + if (!MediaPlayer::isAvailable() || (settings && !settings->isMediaEnabled())) + return HTMLElement::create(tagName, document); + + return HTMLSourceElement::create(tagName, document); +} + +#endif +static PassRefPtr styleConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool createdByParser) +{ + return HTMLStyleElement::create(tagName, document, createdByParser); +} + +static PassRefPtr tableConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableElement::create(tagName, document); +} + +static PassRefPtr tablesectionConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableSectionElement::create(tagName, document); +} + +static PassRefPtr tablecellConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableCellElement::create(tagName, document); +} + +static PassRefPtr textareaConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLTextAreaElement::create(tagName, document, formElement); +} + +static PassRefPtr titleConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTitleElement::create(tagName, document); +} + +static PassRefPtr tablerowConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLTableRowElement::create(tagName, document); +} + +static PassRefPtr ulistConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + return HTMLUListElement::create(tagName, document); +} + +#if ENABLE(VIDEO) + +static PassRefPtr videoConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement*, bool) +{ + Settings* settings = document->settings(); + if (!MediaPlayer::isAvailable() || (settings && !settings->isMediaEnabled())) + return HTMLElement::create(tagName, document); + + return HTMLVideoElement::create(tagName, document); +} + +#endif +static PassRefPtr imgToimageConstructor(const QualifiedName& tagName, Document* document, HTMLFormElement* formElement, bool) +{ + return HTMLImageElement::create(QualifiedName(tagName.prefix(), imgTag.localName(), tagName.namespaceURI()), document, formElement); +} + +static void addTag(const QualifiedName& tag, ConstructorFunction func) +{ + gFunctionMap->set(tag.localName().impl(), func); +} + +static void createFunctionMap() +{ + ASSERT(!gFunctionMap); + + // Create the table. + gFunctionMap = new FunctionMap; + + // Populate it with constructor functions. + addTag(aTag, anchorConstructor); + addTag(appletTag, appletConstructor); + addTag(areaTag, areaConstructor); +#if ENABLE(VIDEO) + addTag(audioTag, audioConstructor); +#endif + + addTag(baseTag, baseConstructor); + addTag(basefontTag, basefontConstructor); + addTag(blockquoteTag, blockquoteConstructor); + addTag(bodyTag, bodyConstructor); + addTag(brTag, brConstructor); + addTag(buttonTag, buttonConstructor); + addTag(canvasTag, canvasConstructor); + addTag(captionTag, tablecaptionConstructor); + addTag(colTag, tablecolConstructor); + addTag(colgroupTag, tablecolConstructor); +#if ENABLE(DATAGRID) + addTag(datagridTag, datagridConstructor); +#endif + +#if ENABLE(DATALIST) + addTag(datalistTag, datalistConstructor); +#endif + +#if ENABLE(DATAGRID) + addTag(dcellTag, datagridcellConstructor); +#endif + +#if ENABLE(DATAGRID) + addTag(dcolTag, datagridcolConstructor); +#endif + + addTag(delTag, modConstructor); + addTag(dirTag, directoryConstructor); + addTag(divTag, divConstructor); + addTag(dlTag, dlistConstructor); +#if ENABLE(DATAGRID) + addTag(drowTag, datagridrowConstructor); +#endif + + addTag(embedTag, embedConstructor); + addTag(fieldsetTag, fieldsetConstructor); + addTag(fontTag, fontConstructor); + addTag(formTag, formConstructor); + addTag(frameTag, frameConstructor); + addTag(framesetTag, framesetConstructor); + addTag(h1Tag, headingConstructor); + addTag(h2Tag, headingConstructor); + addTag(h3Tag, headingConstructor); + addTag(h4Tag, headingConstructor); + addTag(h5Tag, headingConstructor); + addTag(h6Tag, headingConstructor); + addTag(headTag, headConstructor); + addTag(hrTag, hrConstructor); + addTag(htmlTag, htmlConstructor); + addTag(iframeTag, iframeConstructor); + addTag(imageTag, imgToimageConstructor); + addTag(imgTag, imageConstructor); + addTag(inputTag, inputConstructor); + addTag(insTag, modConstructor); + addTag(isindexTag, isindexConstructor); + addTag(keygenTag, keygenConstructor); + addTag(labelTag, labelConstructor); + addTag(legendTag, legendConstructor); + addTag(liTag, liConstructor); + addTag(linkTag, linkConstructor); + addTag(listingTag, preConstructor); + addTag(mapTag, mapConstructor); + addTag(marqueeTag, marqueeConstructor); + addTag(menuTag, menuConstructor); + addTag(metaTag, metaConstructor); +#if ENABLE(METER_TAG) + addTag(meterTag, meterConstructor); +#endif + + addTag(objectTag, objectConstructor); + addTag(olTag, olistConstructor); + addTag(optgroupTag, optgroupConstructor); + addTag(optionTag, optionConstructor); + addTag(pTag, paragraphConstructor); + addTag(paramTag, paramConstructor); + addTag(preTag, preConstructor); +#if ENABLE(PROGRESS_TAG) + addTag(progressTag, progressConstructor); +#endif + + addTag(qTag, quoteConstructor); + addTag(scriptTag, scriptConstructor); + addTag(selectTag, selectConstructor); +#if ENABLE(VIDEO) + addTag(sourceTag, sourceConstructor); +#endif + + addTag(styleTag, styleConstructor); + addTag(tableTag, tableConstructor); + addTag(tbodyTag, tablesectionConstructor); + addTag(tdTag, tablecellConstructor); + addTag(textareaTag, textareaConstructor); + addTag(tfootTag, tablesectionConstructor); + addTag(thTag, tablecellConstructor); + addTag(theadTag, tablesectionConstructor); + addTag(titleTag, titleConstructor); + addTag(trTag, tablerowConstructor); + addTag(ulTag, ulistConstructor); +#if ENABLE(VIDEO) + addTag(videoTag, videoConstructor); +#endif + + addTag(xmpTag, preConstructor); +} + +PassRefPtr HTMLElementFactory::createHTMLElement(const QualifiedName& qName, Document* document, HTMLFormElement* formElement, bool createdByParser) +{ + if (!document) + return 0; + + if (!gFunctionMap) + createFunctionMap(); + if (ConstructorFunction function = gFunctionMap->get(qName.localName().impl())) + return function(qName, document, formElement, createdByParser); + return HTMLElement::create(qName, document); +} + +} // namespace WebCore +