| {% from 'macros.tmpl' import license %} | |
| {{license()}} | |
| #include "core/css/CSSPropertyMetadata.h" | |
| #include "platform/RuntimeEnabledFeatures.h" | |
| #include <bitset> | |
| namespace blink { | |
| {% for flag, function_name in switches %} | |
| bool CSSPropertyMetadata::{{function_name}}(CSSPropertyID property) { | |
| switch(property) { | |
| case CSSPropertyInvalid: | |
| ASSERT_NOT_REACHED(); | |
| return false; | |
| {% for property_id, property in properties.items() if property[flag] %} | |
| case {{property_id}}: | |
| {% endfor %} | |
| {% if function_name == "isInheritedProperty" %} | |
| case CSSPropertyVariable: | |
| {% endif %} | |
| return true; | |
| default: | |
| return false; | |
| } | |
| } | |
| {% endfor %} | |
| bool CSSPropertyMetadata::isEnabledProperty(CSSPropertyID unresolvedProperty) { | |
| CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty); | |
| static std::bitset<numCSSProperties>* enabledProperties = nullptr; | |
| if (!enabledProperties) { | |
| enabledProperties = new std::bitset<numCSSProperties>(); | |
| enabledProperties->set(); // All bits sets to 1. | |
| {% for property_id, property in properties.items() if property.runtime_flag %} | |
| if (!RuntimeEnabledFeatures::{{property.runtime_flag|lower_first}}Enabled()) | |
| enabledProperties->reset({{property_id}} - {{first_enum_value}}); | |
| {% endfor %} | |
| {% for property_id, property in properties.items() if property.is_internal %} | |
| enabledProperties->reset({{property_id}} - {{first_enum_value}}); | |
| {% endfor %} | |
| } | |
| if (unresolvedProperty >= {{first_enum_value}}) | |
| return enabledProperties->test(property - {{first_enum_value}}); | |
| if (unresolvedProperty == CSSPropertyVariable) | |
| return true; | |
| ASSERT(unresolvedProperty == CSSPropertyApplyAtRule); | |
| return RuntimeEnabledFeatures::cssApplyAtRulesEnabled(); | |
| } | |
| void CSSPropertyMetadata::filterEnabledCSSPropertiesIntoVector( | |
| const CSSPropertyID* properties, | |
| size_t propertyCount, | |
| Vector<CSSPropertyID>& outVector) { | |
| for (unsigned i = 0; i < propertyCount; i++) { | |
| CSSPropertyID property = properties[i]; | |
| if (isEnabledProperty(property)) | |
| outVector.push_back(property); | |
| } | |
| } | |
| } // namespace blink |