blob: 849cef0978e8c67bdb2278896f321c49132431eb [file] [log] [blame]
{% from "macros.tmpl" import license %}
{{ license() }}
#include "{{namespace}}ElementFactory.h"
#include "{{namespace}}Names.h"
{% for tag in tags|sort %}
#include "core/{{namespace|lower}}/{{tag.interface}}.h"
{% endfor %}
{% if fallback_interface %}
#include "core/{{namespace|lower}}/{{fallback_interface}}.h"
{% endif %}
#include "core/dom/custom/custom_element_registry.h"
#include "core/dom/Document.h"
#include "core/frame/Settings.h"
#include "gen/sky/platform/RuntimeEnabledFeatures.h"
#include "wtf/HashMap.h"
namespace blink {
using namespace {{namespace}}Names;
typedef PassRefPtr<{{namespace}}Element> (*ConstructorFunction)(
Document&,
bool createdByParser);
typedef HashMap<AtomicString, ConstructorFunction> FunctionMap;
{% for tag in tags|sort if not tag.noConstructor %}
{% filter enable_conditional(tag.Conditional) %}
static PassRefPtr<{{namespace}}Element> {{tag|symbol}}Constructor(
Document& document,
bool createdByParser)
{
{% if tag.runtimeEnabled %}
if (!RuntimeEnabledFeatures::{{tag.runtimeEnabled}}Enabled())
return {{fallback_interface}}::create({{tag|symbol}}Tag, document);
{% endif %}
return {{tag.interface}}::create(
{%- if tag.multipleTagNames %}{{tag|symbol}}Tag, {% endif -%}
document
{%- if tag.constructorNeedsCreatedByParser %}, createdByParser{% endif -%}
);
}
{% endfilter %}
{% endfor %}
struct Create{{namespace}}FunctionMapData {
const QualifiedName& tag;
ConstructorFunction func;
};
PassRefPtr<Element> {{namespace}}ElementFactory::createElement(
const AtomicString& localName,
Document& document,
bool createdByParser)
{
return document.elementRegistry().CreateElement(document, localName);
}
} // namespace blink