| OLD | NEW |
| 1 {% from 'macros.tmpl' import license %} | 1 {% from 'macros.tmpl' import license %} |
| 2 {{license()}} | 2 {{license()}} |
| 3 | 3 |
| 4 #include "config.h" | 4 #include "config.h" |
| 5 #include "core/css/resolver/StyleBuilder.h" | 5 #include "core/css/resolver/StyleBuilder.h" |
| 6 | 6 |
| 7 #include "StyleBuilderFunctions.h" | 7 #include "StyleBuilderFunctions.h" |
| 8 #include "core/css/CSSProperty.h" | 8 #include "core/css/CSSProperty.h" |
| 9 #include "core/css/resolver/StyleResolverState.h" | 9 #include "core/css/resolver/StyleResolverState.h" |
| 10 | 10 |
| 11 // FIXME: currently we're just generating a switch statement, but we should | 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. | 12 // test other variations for performance once we have more properties here. |
| 13 | 13 |
| 14 namespace blink { | 14 namespace blink { |
| 15 | 15 |
| 16 void StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& sta
te, CSSValue* value, bool isInitial, bool isInherit) { | 16 void StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& sta
te, CSSValue* value, bool isInitial, bool isInherit) { |
| 17 switch(property) { | 17 switch(property) { |
| 18 {% for property_id, property in properties.items() | 18 {% for property_id, property in properties.items() |
| 19 if not property.direction_aware and not property.skip %} | 19 if property.should_declare_functions %} |
| 20 {% set used_property = properties[property.use_handlers_for] or property %} | |
| 21 {% set used_property_id = used_property.property_id %} | |
| 22 case {{property_id}}: | 20 case {{property_id}}: |
| 23 if (isInitial) | 21 if (isInitial) |
| 24 StyleBuilderFunctions::applyInitial{{used_property_id}}(state); | 22 StyleBuilderFunctions::applyInitial{{property_id}}(state); |
| 25 else if (isInherit) | 23 else if (isInherit) |
| 26 StyleBuilderFunctions::applyInherit{{used_property_id}}(state); | 24 StyleBuilderFunctions::applyInherit{{property_id}}(state); |
| 27 else | 25 else |
| 28 StyleBuilderFunctions::applyValue{{used_property_id}}(state, value); | 26 StyleBuilderFunctions::applyValue{{property_id}}(state, value); |
| 29 return; | 27 return; |
| 30 | 28 |
| 31 {% endfor %} | 29 {% endfor %} |
| 32 {% for property_id, property in properties.items() if property.direction_awa
re %} | |
| 33 case {{property_id}}: | |
| 34 {% endfor %} | |
| 35 { | |
| 36 CSSPropertyID resolvedProperty = CSSProperty::resolveDirectionAwarePrope
rty(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.skip %} | 30 {% for property_id, property in properties.items() if property.skip %} |
| 42 case {{property_id}}: | 31 case {{property_id}}: |
| 43 {% endfor %} | 32 {% endfor %} |
| 44 return; | 33 return; |
| 45 default: | 34 default: |
| 46 // FIXME: We should explicitly handle all cases here once we merge the v
arious .in files | 35 // FIXME: We should explicitly handle all cases here once we merge the v
arious .in files |
| 47 ASSERT_NOT_REACHED(); | 36 ASSERT_NOT_REACHED(); |
| 48 } | 37 } |
| 49 } | 38 } |
| 50 | 39 |
| 51 } // namespace blink | 40 } // namespace blink |
| OLD | NEW |