Chromium Code Reviews| Index: third_party/WebKit/Source/core/css/CSSGradientValue.cpp |
| diff --git a/third_party/WebKit/Source/core/css/CSSGradientValue.cpp b/third_party/WebKit/Source/core/css/CSSGradientValue.cpp |
| index 0bed19512a45267777c92044beaa6f14bdc2a1f7..5cdcaf44038153fc163556d387273a218b2686f6 100644 |
| --- a/third_party/WebKit/Source/core/css/CSSGradientValue.cpp |
| +++ b/third_party/WebKit/Source/core/css/CSSGradientValue.cpp |
| @@ -1074,14 +1074,21 @@ DEFINE_TRACE_AFTER_DISPATCH(CSSLinearGradientValue) { |
| void CSSGradientValue::appendCSSTextForColorStops( |
| StringBuilder& result, |
| bool requiresSeparator) const { |
| - for (const auto& stop : m_stops) { |
| + for (size_t i = 0; i < m_stops.size(); ++i) { |
| + const auto& stop = m_stops[i]; |
| + const bool isColorRepeat = |
| + (i > 0) && !stop.isHint() && stop.m_color == m_stops[i - 1].m_color; |
| + // At most two consecutive stops can share the same CSS value for color. |
|
fs
2017/04/06 19:58:48
Could we add a test for this as well - both the "c
f(malita)
2017/04/06 20:29:42
Actually, the current impl bends over backwards to
fs
2017/04/06 20:44:36
Oh, yeah, right, the stop.color == stops[i - 1].co
|
| + DCHECK(!isColorRepeat || i < 2 || stop.m_color != m_stops[i - 2].m_color); |
| + |
| if (requiresSeparator) { |
| - result.append(", "); |
| + if (!isColorRepeat) |
| + result.append(", "); |
| } else { |
| requiresSeparator = true; |
| } |
| - if (stop.m_color) |
| + if (stop.m_color && !isColorRepeat) |
| result.append(stop.m_color->cssText()); |
| if (stop.m_color && stop.m_offset) |
| result.append(' '); |