Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / Source / build / scripts / templates / StyleBuilder.cpp.tmpl
blob537baf0b6fbde46856c5466803673ba1d85315a2
1 {% from 'macros.tmpl' import license %}
2 {{license()}}
4 #include "config.h"
5 #include "core/css/resolver/StyleBuilder.h"
7 #include "StyleBuilderFunctions.h"
8 #include "core/css/CSSProperty.h"
9 #include "core/css/resolver/StyleResolverState.h"
11 // FIXME: currently we're just generating a switch statement, but we should
12 //   test other variations for performance once we have more properties here.
14 namespace blink {
16 void StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& state, CSSValue* value, bool isInitial, bool isInherit) {
17     switch(property) {
18     {% for property_id, property in properties.items()
19         if property.should_declare_functions or property.use_handlers_for %}
20     {% set used_property = properties[property.use_handlers_for] or property %}
21     {% set used_property_id = used_property.property_id %}
22     case {{property_id}}:
23         if (isInitial)
24             StyleBuilderFunctions::applyInitial{{used_property_id}}(state);
25         else if (isInherit)
26             StyleBuilderFunctions::applyInherit{{used_property_id}}(state);
27         else
28             StyleBuilderFunctions::applyValue{{used_property_id}}(state, value);
29         return;
31     {% endfor %}
32     {% for property_id, property in properties.items() if property.direction_aware %}
33     case {{property_id}}:
34     {% endfor %}
35     {
36         CSSPropertyID resolvedProperty = CSSProperty::resolveDirectionAwareProperty(property, state.style()->direction(), state.style()->writingMode());
37         ASSERT(resolvedProperty != property);
38         applyProperty(resolvedProperty, state, value);
39         return;
40     }
41     {% for property_id, property in properties.items() if property.builder_skip %}
42     case {{property_id}}:
43     {% endfor %}
44         return;
45     default:
46         ASSERT_NOT_REACHED();
47     }
50 } // namespace blink