| {% 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 |