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 |