Index: Source/core/css/resolver/StyleResolver.cpp |
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp |
index ada9f62818f3ec4ab276f8f0e3d05647a38aa019..c0da3008c6e462c909818a77e3b6b52678c61004 100644 |
--- a/Source/core/css/resolver/StyleResolver.cpp |
+++ b/Source/core/css/resolver/StyleResolver.cpp |
@@ -1029,12 +1029,12 @@ const StyleRuleKeyframes* StyleResolver::findKeyframesRule(const Element* elemen |
return nullptr; |
} |
-template <StyleResolver::StyleApplicationPass pass> |
+template <StyleApplicationPass pass> |
void StyleResolver::applyAnimatedProperties(StyleResolverState& state, const WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& activeInterpolations) |
{ |
for (const auto& interpolationEntry : activeInterpolations) { |
CSSPropertyID property = interpolationEntry.key; |
- if (!isPropertyForPass<pass>(property)) |
+ if (!StylePropertyRange::isPropertyForPass<pass>(property)) |
continue; |
const StyleInterpolation* interpolation = toStyleInterpolation(interpolationEntry.value.get()); |
interpolation->apply(state); |
@@ -1214,60 +1214,14 @@ static inline bool isValidFirstLetterStyleProperty(CSSPropertyID id) |
} |
} |
-// FIXME: Consider refactoring to create a new class which owns the following |
-// first/last/range properties. |
-// This method returns the first CSSPropertyId of high priority properties. |
-// Other properties can depend on high priority properties. For example, |
-// border-color property with currentColor value depends on color property. |
-// All high priority properties are obtained by using |
-// firstCSSPropertyId<HighPriorityProperties> and |
-// lastCSSPropertyId<HighPriorityProperties>. |
-template<> CSSPropertyID StyleResolver::firstCSSPropertyId<StyleResolver::HighPriorityProperties>() |
-{ |
- static_assert(CSSPropertyColor == firstCSSProperty, "CSSPropertyColor should be the first high priority property"); |
- return CSSPropertyColor; |
-} |
- |
-// This method returns the last CSSPropertyId of high priority properties. |
-template<> CSSPropertyID StyleResolver::lastCSSPropertyId<StyleResolver::HighPriorityProperties>() |
-{ |
- static_assert(CSSPropertyZoom == CSSPropertyColor + 16, "CSSPropertyZoom should be the end of the high priority property range"); |
- static_assert(CSSPropertyTextRendering == CSSPropertyZoom - 1, "CSSPropertyTextRendering should be immediately before CSSPropertyZoom"); |
- return CSSPropertyZoom; |
-} |
- |
-// This method returns the first CSSPropertyId of remaining properties, |
-// i.e. low priority properties. No properties depend on low priority |
-// properties. So we don't need to resolve such properties quickly. |
-// All low priority properties are obtained by using |
-// firstCSSPropertyId<LowPriorityProperties> and |
-// lastCSSPropertyId<LowPriorityProperties>. |
-template<> CSSPropertyID StyleResolver::firstCSSPropertyId<StyleResolver::LowPriorityProperties>() |
-{ |
- static_assert(CSSPropertyAlignContent == CSSPropertyZoom + 1, "CSSPropertyAlignContent should be the first low priority property"); |
- return CSSPropertyAlignContent; |
-} |
- |
-// This method returns the last CSSPropertyId of low priority properties. |
-template<> CSSPropertyID StyleResolver::lastCSSPropertyId<StyleResolver::LowPriorityProperties>() |
-{ |
- return static_cast<CSSPropertyID>(lastCSSProperty); |
-} |
- |
-template <StyleResolver::StyleApplicationPass pass> |
-bool StyleResolver::isPropertyForPass(CSSPropertyID property) |
-{ |
- return firstCSSPropertyId<pass>() <= property && property <= lastCSSPropertyId<pass>(); |
-} |
- |
// This method expands the 'all' shorthand property to longhand properties |
// and applies the expanded longhand properties. |
-template <StyleResolver::StyleApplicationPass pass> |
+template <StyleApplicationPass pass> |
void StyleResolver::applyAllProperty(StyleResolverState& state, CSSValue* allValue, bool inheritedOnly) |
{ |
bool isUnsetValue = !allValue->isInitialValue() && !allValue->isInheritedValue(); |
- unsigned startCSSProperty = firstCSSPropertyId<pass>(); |
- unsigned endCSSProperty = lastCSSPropertyId<pass>(); |
+ unsigned startCSSProperty = StylePropertyRange::firstCSSPropertyId<pass>(); |
+ unsigned endCSSProperty = StylePropertyRange::lastCSSPropertyId<pass>(); |
for (unsigned i = startCSSProperty; i <= endCSSProperty; ++i) { |
CSSPropertyID propertyId = static_cast<CSSPropertyID>(i); |
@@ -1303,7 +1257,7 @@ void StyleResolver::applyAllProperty(StyleResolverState& state, CSSValue* allVal |
} |
} |
-template <StyleResolver::StyleApplicationPass pass> |
+template <StyleApplicationPass pass> |
void StyleResolver::applyProperties(StyleResolverState& state, const StylePropertySet* properties, bool isImportant, bool inheritedOnly, PropertyWhitelistType propertyWhitelistType) |
{ |
unsigned propertyCount = properties->propertyCount(); |
@@ -1331,14 +1285,14 @@ void StyleResolver::applyProperties(StyleResolverState& state, const StyleProper |
continue; |
} |
- if (!isPropertyForPass<pass>(property)) |
+ if (!StylePropertyRange::isPropertyForPass<pass>(property)) |
continue; |
StyleBuilder::applyProperty(current.id(), state, current.value()); |
} |
} |
-template <StyleResolver::StyleApplicationPass pass> |
+template <StyleApplicationPass pass> |
void StyleResolver::applyMatchedProperties(StyleResolverState& state, const MatchResult& matchResult, bool isImportant, int startIndex, int endIndex, bool inheritedOnly) |
{ |
if (startIndex == -1) |