{% from 'macros.tmpl' import license %} {{license()}} #include "core/css/resolver/StyleBuilder.h" #include "StyleBuilderFunctions.h" #include "core/css/CSSProperty.h" #include "core/css/resolver/StyleResolverState.h" // FIXME: currently we're just generating a switch statement, but we should // test other variations for performance once we have more properties here. namespace blink { void StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& state, CSSValue* value, bool isInitial, bool isInherit) { switch(property) { {% for property_id, property in properties.items() if property.should_declare_functions or property.use_handlers_for %} {% set used_property = properties[property.use_handlers_for] or property %} {% set used_property_id = used_property.property_id %} case {{property_id}}: if (isInitial) StyleBuilderFunctions::applyInitial{{used_property_id}}(state); else if (isInherit) StyleBuilderFunctions::applyInherit{{used_property_id}}(state); else StyleBuilderFunctions::applyValue{{used_property_id}}(state, value); return; {% endfor %} {% for property_id, property in properties.items() if property.direction_aware %} case {{property_id}}: {% endfor %} { CSSPropertyID resolvedProperty = CSSProperty::resolveDirectionAwareProperty(property, state.style()->direction()); ASSERT(resolvedProperty != property); applyProperty(resolvedProperty, state, value); return; } {% for property_id, property in properties.items() if property.builder_skip %} case {{property_id}}: {% endfor %} return; default: ASSERT_NOT_REACHED(); } } } // namespace blink