| Index: Source/core/css/resolver/CascadedValues.cpp
|
| diff --git a/Source/core/css/resolver/CascadedValues.cpp b/Source/core/css/resolver/CascadedValues.cpp
|
| index 4520141312d2bd5df34fde80105617c69bb9abcc..c3cecc069f1174805ba18e65bd5cac3e217255cd 100644
|
| --- a/Source/core/css/resolver/CascadedValues.cpp
|
| +++ b/Source/core/css/resolver/CascadedValues.cpp
|
| @@ -244,7 +244,7 @@ static CSSPropertyID resolveProperty(CSSPropertyID property, TextDirection direc
|
| }
|
| }
|
|
|
| -CascadedValues::CascadedValues(StyleResolverState& state, const MatchResult& matchResult, bool onlyAddUARules)
|
| +CascadedValues::CascadedValues(StyleResolverState& state, const MatchResult& matchResult)
|
| : m_state(state)
|
| {
|
| memset(m_values, 0, sizeof(m_values));
|
| @@ -258,11 +258,17 @@ CascadedValues::CascadedValues(StyleResolverState& state, const MatchResult& mat
|
| m_writingMode = state.style()->writingMode();
|
|
|
| COMPILE_ASSERT(CSSPropertyColor == CSSPropertyWebkitWritingMode + 1, CSS_color_is_after_super_high_priority);
|
| - if (onlyAddUARules) {
|
| - addMatchResultRange(matchResult, false, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, CSSPropertyColor, convertToCSSPropertyID(lastCSSProperty));
|
| - } else {
|
| - addMatchResult(matchResult, CSSPropertyColor, convertToCSSPropertyID(lastCSSProperty));
|
| - }
|
| + addMatchResult(matchResult, CSSPropertyColor, convertToCSSPropertyID(lastCSSProperty));
|
| +}
|
| +
|
| +CascadedValues::CascadedValues(StyleResolverState& state, const MatchResult& matchResult, WebkitAppearanceConstructorType)
|
| + : m_state(state)
|
| +{
|
| + memset(m_values, 0, sizeof(m_values));
|
| + memset(m_visitedLinkValues, 0, sizeof(m_visitedLinkValues));
|
| + m_direction = state.style()->direction();
|
| + m_writingMode = state.style()->writingMode();
|
| + addMatchResultRange(matchResult, false, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, CSSPropertyColor, convertToCSSPropertyID(lastCSSProperty));
|
| }
|
|
|
| void CascadedValues::addMatchResult(const MatchResult& matchResult, CSSPropertyID firstId, CSSPropertyID lastId)
|
| @@ -388,4 +394,28 @@ void CascadedValues::applyValues(CSSPropertyID first, CSSPropertyID last, bool i
|
| }
|
| }
|
|
|
| +bool CascadedValues::valuesUnchangedForWebkitAppearance(const MatchResult& matchResult)
|
| +{
|
| + static const CSSPropertyID propertiesToCompare[] = {
|
| + CSSPropertyBorderBottomColor, CSSPropertyBorderBottomStyle, CSSPropertyBorderBottomWidth,
|
| + CSSPropertyBorderLeftColor, CSSPropertyBorderLeftStyle, CSSPropertyBorderLeftWidth,
|
| + CSSPropertyBorderRightColor, CSSPropertyBorderRightStyle, CSSPropertyBorderRightWidth,
|
| + CSSPropertyBorderTopColor, CSSPropertyBorderTopStyle, CSSPropertyBorderTopWidth,
|
| + CSSPropertyBorderBottomLeftRadius, CSSPropertyBorderBottomRightRadius,
|
| + CSSPropertyBorderTopLeftRadius, CSSPropertyBorderTopRightRadius,
|
| + CSSPropertyBorderImageOutset, CSSPropertyBorderImageRepeat, CSSPropertyBorderImageSlice,
|
| + CSSPropertyBorderImageSource, CSSPropertyBorderImageWidth,
|
| + CSSPropertyBackgroundAttachment, CSSPropertyBackgroundBlendMode, CSSPropertyBackgroundClip,
|
| + CSSPropertyBackgroundColor, CSSPropertyBackgroundImage, CSSPropertyBackgroundOrigin,
|
| + CSSPropertyBackgroundPositionX, CSSPropertyBackgroundPositionY, CSSPropertyBackgroundSize,
|
| + };
|
| + CascadedValues uaValues(m_state, matchResult, WebkitAppearanceConstructor);
|
| + for (size_t i = 0; i < WTF_ARRAY_LENGTH(propertiesToCompare); ++i) {
|
| + CSSPropertyID property = propertiesToCompare[i];
|
| + if (cascadedValue(property) != uaValues.cascadedValue(property))
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| } // namespace blink
|
|
|