1{% from 'macros.tmpl' import license %} 2{{license()}} 3 4#include "config.h" 5#include "core/css/resolver/StyleBuilder.h" 6 7#include "StyleBuilderFunctions.h" 8#include "core/css/CSSProperty.h" 9#include "core/css/resolver/StyleResolverState.h" 10 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. 13 14namespace blink { 15 16void 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; 30 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 } 48} 49 50} // namespace blink 51