Source/WebCore/ChangeLog

 12012-08-06 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
 2
 3 [css3-text] Add support for -webkit-text-decoration-style
 4 https://bugs.webkit.org/show_bug.cgi?id=90958
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 This patch implements the "text-decoration-style" property specified in CSS3
 9 working draft, with "-webkit-" prefix. The specification can be found below:
 10 http://dev.w3.org/csswg/css3-text/#text-decoration-style
 11
 12 Additionally, Mozilla implementation details can be found here:
 13 https://developer-dev.allizom.org/en-US/docs/CSS/text-decoration-style
 14
 15 The "wavy" value is parsed, but not rendered (requires platform support).
 16
 17 Test: fast/css/text-decoration-style.html
 18
 19 * css/CSSComputedStyleDeclaration.cpp:
 20 (WebCore::renderTextDecorationStyleFlagsToCSSValue):
 21 (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
 22 * css/CSSParser.cpp:
 23 (WebCore::CSSParser::parseValue):
 24 * css/CSSPrimitiveValueMappings.h:
 25 (WebCore::CSSPrimitiveValue::operator TextDecorationStyle):
 26 * css/CSSProperty.cpp:
 27 (WebCore::CSSProperty::isInheritedProperty):
 28 * css/CSSPropertyNames.in:
 29 * css/CSSValueKeywords.in:
 30 * css/StyleBuilder.cpp:
 31 (WebCore::StyleBuilder::StyleBuilder):
 32 * css/StyleResolver.cpp:
 33 (WebCore::StyleResolver::collectMatchingRulesForList):
 34 * platform/graphics/GraphicsContext.h:
 35 * rendering/InlineTextBox.cpp:
 36 (WebCore::InlineTextBox::paint):
 37 (WebCore::InlineTextBox::paintDecoration):
 38 * rendering/InlineTextBox.h:
 39 * rendering/style/RenderStyle.cpp:
 40 (WebCore::RenderStyle::diff):
 41 * rendering/style/RenderStyle.h:
 42 * rendering/style/RenderStyleConstants.h:
 43 * rendering/style/StyleRareNonInheritedData.cpp:
 44 (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
 45 (WebCore::StyleRareNonInheritedData::operator==):
 46 * rendering/style/StyleRareNonInheritedData.h:
 47
1482012-08-06 Sheriff Bot <webkit.review.bot@gmail.com>
249
350 Unreviewed, rolling out r124816.

Source/WebCore/css/CSSComputedStyleDeclaration.cpp

@@static const CSSPropertyID computedProperties[] = {
176176 CSSPropertyTabSize,
177177 CSSPropertyTextAlign,
178178 CSSPropertyTextDecoration,
 179 CSSPropertyWebkitTextDecorationStyle,
179180 CSSPropertyTextIndent,
180181 CSSPropertyTextRendering,
181182 CSSPropertyTextShadow,

@@static PassRefPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecorati
12051206 return list;
12061207}
12071208
 1209static PassRefPtr<CSSValue> renderTextDecorationStyleFlagsToCSSValue(int textDecorationStyle)
 1210{
 1211 switch (textDecorationStyle) {
 1212 case TextDecorationStyleSolid:
 1213 return cssValuePool().createIdentifierValue(CSSValueSolid);
 1214 case TextDecorationStyleDouble:
 1215 return cssValuePool().createIdentifierValue(CSSValueDouble);
 1216 case TextDecorationStyleDotted:
 1217 return cssValuePool().createIdentifierValue(CSSValueDotted);
 1218 case TextDecorationStyleDashed:
 1219 return cssValuePool().createIdentifierValue(CSSValueDashed);
 1220 case TextDecorationStyleWavy:
 1221 return cssValuePool().createIdentifierValue(CSSValueWavy);
 1222 }
 1223
 1224 return cssValuePool().createIdentifierValue(CSSValueSolid);
 1225}
 1226
12081227static PassRefPtr<CSSValue> fillRepeatToCSSValue(EFillRepeat xRepeat, EFillRepeat yRepeat)
12091228{
12101229 // For backwards compatibility, if both values are equal, just return one of them. And

@@PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert
19511970 return renderTextDecorationFlagsToCSSValue(style->textDecoration());
19521971 case CSSPropertyWebkitTextDecorationsInEffect:
19531972 return renderTextDecorationFlagsToCSSValue(style->textDecorationsInEffect());
 1973 case CSSPropertyWebkitTextDecorationStyle:
 1974 return renderTextDecorationStyleFlagsToCSSValue(style->textDecorationStyle());
19541975 case CSSPropertyWebkitTextFillColor:
19551976 return currentColorOrValidColor(style.get(), style->textFillColor());
19561977 case CSSPropertyWebkitTextEmphasisColor:

Source/WebCore/css/CSSParser.cpp

@@bool CSSParser::parseValue(CSSPropertyID propId, bool important)
21222122 }
21232123 break;
21242124
 2125 case CSSPropertyWebkitTextDecorationStyle:
 2126 // solid | double | dotted | dashed | wavy | inherit
 2127 if (id == CSSValueSolid || id == CSSValueDouble || id == CSSValueDotted || id == CSSValueDashed || id == CSSValueWavy)
 2128 validPrimitive = true;
 2129 break;
 2130
21252131 case CSSPropertyZoom: // normal | reset | document | <number> | <percentage> | inherit
21262132 if (id == CSSValueNormal || id == CSSValueReset || id == CSSValueDocument)
21272133 validPrimitive = true;

Source/WebCore/css/CSSPrimitiveValueMappings.h

@@template<> inline CSSPrimitiveValue::operator ETextDecoration() const
21982198 }
21992199}
22002200
 2201template<> inline CSSPrimitiveValue::operator TextDecorationStyle() const
 2202{
 2203 switch (m_value.ident) {
 2204 case CSSValueSolid:
 2205 return TextDecorationStyleSolid;
 2206 case CSSValueDouble:
 2207 return TextDecorationStyleDouble;
 2208 case CSSValueDotted:
 2209 return TextDecorationStyleDotted;
 2210 case CSSValueDashed:
 2211 return TextDecorationStyleDashed;
 2212 case CSSValueWavy:
 2213 return TextDecorationStyleWavy;
 2214 default:
 2215 ASSERT_NOT_REACHED();
 2216 return TextDecorationStyleSolid;
 2217 }
 2218}
 2219
22012220template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextSecurity e)
22022221 : CSSValue(PrimitiveClass)
22032222{

Source/WebCore/css/CSSProperty.cpp

@@bool CSSProperty::isInheritedProperty(CSSPropertyID propertyID)
634634 case CSSPropertyWebkitPerspectiveOrigin:
635635 case CSSPropertyWebkitPerspectiveOriginX:
636636 case CSSPropertyWebkitPerspectiveOriginY:
 637 case CSSPropertyWebkitTextDecorationStyle:
637638 case CSSPropertyWebkitTransform:
638639 case CSSPropertyWebkitTransformOrigin:
639640 case CSSPropertyWebkitTransformOriginX:

Source/WebCore/css/CSSPropertyNames.in

@@z-index
351351-webkit-rtl-ordering
352352-webkit-text-combine
353353-epub-text-combine = -webkit-text-combine
 354-webkit-text-decoration-style
354355-webkit-text-decorations-in-effect
355356-webkit-text-emphasis
356357-epub-text-emphasis = -webkit-text-emphasis

Source/WebCore/css/CSSValueKeywords.in

@@static
452452thick
453453thin
454454underline
 455wavy
455456-webkit-nowrap
456457
457458// CSS3 Values

Source/WebCore/css/StyleBuilder.cpp

@@StyleBuilder::StyleBuilder()
19331933 setPropertyHandler(CSSPropertyTabSize, ApplyPropertyDefault<unsigned, &RenderStyle::tabSize, unsigned, &RenderStyle::setTabSize, unsigned, &RenderStyle::initialTabSize>::createHandler());
19341934 setPropertyHandler(CSSPropertyTextAlign, ApplyPropertyTextAlign::createHandler());
19351935 setPropertyHandler(CSSPropertyTextDecoration, ApplyPropertyTextDecoration::createHandler());
 1936 setPropertyHandler(CSSPropertyWebkitTextDecorationStyle, ApplyPropertyDefault<TextDecorationStyle, &RenderStyle::textDecorationStyle, TextDecorationStyle, &RenderStyle::setTextDecorationStyle, TextDecorationStyle, &RenderStyle::initialTextDecorationStyle>::createHandler());
19361937 setPropertyHandler(CSSPropertyTextIndent, ApplyPropertyLength<&RenderStyle::textIndent, &RenderStyle::setTextIndent, &RenderStyle::initialTextIndent>::createHandler());
19371938 setPropertyHandler(CSSPropertyTextOverflow, ApplyPropertyDefault<TextOverflow, &RenderStyle::textOverflow, TextOverflow, &RenderStyle::setTextOverflow, TextOverflow, &RenderStyle::initialTextOverflow>::createHandler());
19381939 setPropertyHandler(CSSPropertyTextRendering, ApplyPropertyFont<TextRenderingMode, &FontDescription::textRenderingMode, &FontDescription::setTextRenderingMode, AutoTextRendering>::createHandler());

Source/WebCore/css/StyleResolver.cpp

@@void StyleResolver::applyProperty(CSSPropertyID id, CSSValue* value)
44004400#endif
44014401 case CSSPropertyWebkitRtlOrdering:
44024402 case CSSPropertyWebkitTextCombine:
 4403 case CSSPropertyWebkitTextDecorationStyle:
44034404 case CSSPropertyWebkitTextEmphasisColor:
44044405 case CSSPropertyWebkitTextEmphasisPosition:
44054406 case CSSPropertyWebkitTextEmphasisStyle:

Source/WebCore/platform/graphics/GraphicsContext.h

@@namespace WebCore {
138138 enum StrokeStyle {
139139 NoStroke,
140140 SolidStroke,
 141 DoubleStroke,
141142 DottedStroke,
142  DashedStroke
 143 DashedStroke,
 144 WavyStroke
143145 };
144146
145147 enum InterpolationQuality {

Source/WebCore/rendering/InlineTextBox.cpp

@@void InlineTextBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset,
754754
755755 // Paint decorations
756756 int textDecorations = styleToUse->textDecorationsInEffect();
 757 int textStyle = styleToUse->textDecorationStyle();
757758 if (textDecorations != TDNONE && paintInfo.phase != PaintPhaseSelection) {
758759 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrokeWidth, styleToUse->colorSpace());
759  paintDecoration(context, boxOrigin, textDecorations, textShadow);
 760 paintDecoration(context, boxOrigin, textDecorations, textStyle, textShadow);
760761 }
761762
762763 if (paintInfo.phase == PaintPhaseForeground) {

@@void InlineTextBox::paintCustomHighlight(const LayoutPoint& paintOffset, const A
907908
908909#endif
909910
910 void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint& boxOrigin, int deco, const ShadowData* shadow)
 911void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint& boxOrigin, int deco, int style, const ShadowData* shadow)
911912{
 913 // FIXME: We should improve this rule and not always just assume 1.
 914 DEFINE_STATIC_LOCAL(float, textDecorationThickness, (1.0f));
 915
912916 if (m_truncation == cFullTruncation)
913917 return;
914918

@@void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
927931
928932 // Use a special function for underlines to get the positioning exactly right.
929933 bool isPrinting = textRenderer()->document()->printing();
930  context->setStrokeThickness(1.0f); // FIXME: We should improve this rule and not always just assume 1.
 934 context->setStrokeThickness(textDecorationThickness);
931935
932936 bool linesAreOpaque = !isPrinting && (!(deco & UNDERLINE) || underline.alpha() == 255) && (!(deco & OVERLINE) || overline.alpha() == 255) && (!(deco & LINE_THROUGH) || linethrough.alpha() == 255);
933937

@@void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
956960
957961 ColorSpace colorSpace = renderer()->style()->colorSpace();
958962 bool setShadow = false;
959 
 963
 964 StrokeStyle strokeStyle = SolidStroke;
 965 switch (style) {
 966 case TextDecorationStyleSolid:
 967 case TextDecorationStyleDouble:
 968 // Double acts like Solid, only twice
 969 break;
 970 case TextDecorationStyleDotted:
 971 strokeStyle = DottedStroke;
 972 break;
 973 case TextDecorationStyleDashed:
 974 strokeStyle = DashedStroke;
 975 break;
 976 case TextDecorationStyleWavy:
 977 // FIXME: Currently not supported
 978 strokeStyle = WavyStroke;
 979 break;
 980 default:
 981 break;
 982 }
 983
960984 do {
961985 if (shadow) {
962986 if (!shadow->next()) {

@@void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
971995 shadow = shadow->next();
972996 }
973997
 998 context->setStrokeStyle(strokeStyle);
974999 if (deco & UNDERLINE) {
9751000 context->setStrokeColor(underline, colorSpace);
976  context->setStrokeStyle(SolidStroke);
9771001 // Leave one pixel of white between the baseline and the underline.
9781002 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + baseline + 1), width, isPrinting);
 1003 if (style == TextDecorationStyleDouble)
 1004 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + baseline + 1 + textDecorationThickness + 1), width, isPrinting);
9791005 }
9801006 if (deco & OVERLINE) {
9811007 context->setStrokeColor(overline, colorSpace);
982  context->setStrokeStyle(SolidStroke);
9831008 context->drawLineForText(localOrigin, width, isPrinting);
 1009 if (style == TextDecorationStyleDouble)
 1010 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() - 1 - textDecorationThickness), width, isPrinting);
9841011 }
9851012 if (deco & LINE_THROUGH) {
9861013 context->setStrokeColor(linethrough, colorSpace);
987  context->setStrokeStyle(SolidStroke);
988  context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + 2 * baseline / 3), width, isPrinting);
 1014 if (style == TextDecorationStyleDouble) {
 1015 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + 1.5 * baseline / 3), width, isPrinting);
 1016 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + 2.5 * baseline / 3), width, isPrinting);
 1017 } else
 1018 context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + 2 * baseline / 3), width, isPrinting);
9891019 }
9901020 } while (shadow);
9911021

Source/WebCore/rendering/InlineTextBox.h

@@protected:
180180#endif
181181
182182private:
183  void paintDecoration(GraphicsContext*, const FloatPoint& boxOrigin, int decoration, const ShadowData*);
 183 void paintDecoration(GraphicsContext*, const FloatPoint& boxOrigin, int decoration, int style, const ShadowData*);
184184 void paintSelection(GraphicsContext*, const FloatPoint& boxOrigin, RenderStyle*, const Font&, Color textColor);
185185 void paintDocumentMarker(GraphicsContext*, const FloatPoint& boxOrigin, DocumentMarker*, RenderStyle*, const Font&, bool grammar);
186186 void paintTextMatchMarker(GraphicsContext*, const FloatPoint& boxOrigin, DocumentMarker*, RenderStyle*, const Font&);

Source/WebCore/rendering/style/RenderStyle.cpp

@@StyleDifference RenderStyle::diff(const RenderStyle* other, unsigned& changedCon
643643 || rareInheritedData->userSelect != other->rareInheritedData->userSelect
644644 || rareNonInheritedData->userDrag != other->rareNonInheritedData->userDrag
645645 || rareNonInheritedData->m_borderFit != other->rareNonInheritedData->m_borderFit
 646 || rareNonInheritedData->m_textDecorationStyle != other->rareNonInheritedData->m_textDecorationStyle
646647 || rareInheritedData->textFillColor != other->rareInheritedData->textFillColor
647648 || rareInheritedData->textStrokeColor != other->rareInheritedData->textStrokeColor
648649 || rareInheritedData->textEmphasisColor != other->rareInheritedData->textEmphasisColor

Source/WebCore/rendering/style/RenderStyle.h

@@public:
604604 ETextTransform textTransform() const { return static_cast<ETextTransform>(inherited_flags._text_transform); }
605605 ETextDecoration textDecorationsInEffect() const { return static_cast<ETextDecoration>(inherited_flags._text_decorations); }
606606 ETextDecoration textDecoration() const { return static_cast<ETextDecoration>(visual->textDecoration); }
 607 TextDecorationStyle textDecorationStyle() const { return static_cast<TextDecorationStyle>(rareNonInheritedData->m_textDecorationStyle); }
607608 int wordSpacing() const { return inherited->font.wordSpacing(); }
608609 int letterSpacing() const { return inherited->font.letterSpacing(); }
609610

@@public:
11351136 void addToTextDecorationsInEffect(ETextDecoration v) { inherited_flags._text_decorations |= v; }
11361137 void setTextDecorationsInEffect(ETextDecoration v) { inherited_flags._text_decorations = v; }
11371138 void setTextDecoration(ETextDecoration v) { SET_VAR(visual, textDecoration, v); }
 1139 void setTextDecorationStyle(TextDecorationStyle v) { SET_VAR(rareNonInheritedData, m_textDecorationStyle, v); }
11381140 void setDirection(TextDirection v) { inherited_flags._direction = v; }
11391141 void setLineHeight(Length v) { SET_VAR(inherited, line_height, v) }
11401142 bool setZoom(float);

@@public:
15831585 static Length initialLineHeight() { return Length(-100.0, Percent); }
15841586 static ETextAlign initialTextAlign() { return TASTART; }
15851587 static ETextDecoration initialTextDecoration() { return TDNONE; }
 1588 static TextDecorationStyle initialTextDecorationStyle() { return TextDecorationStyleSolid; }
15861589 static float initialZoom() { return 1.0f; }
15871590 static int initialOutlineOffset() { return 0; }
15881591 static float initialOpacity() { return 1.0f; }

Source/WebCore/rendering/style/RenderStyleConstants.h

@@enum ETextDecoration {
345345inline ETextDecoration operator|(ETextDecoration a, ETextDecoration b) { return ETextDecoration(int(a) | int(b)); }
346346inline ETextDecoration& operator|=(ETextDecoration& a, ETextDecoration b) { return a = a | b; }
347347
 348static const size_t TextDecorationStyleBits = 3;
 349enum TextDecorationStyle {
 350 TextDecorationStyleSolid, TextDecorationStyleDouble, TextDecorationStyleDotted, TextDecorationStyleDashed, TextDecorationStyleWavy
 351};
 352
348353enum EPageBreak {
349354 PBAUTO, PBALWAYS, PBAVOID
350355};

Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp

@@StyleRareNonInheritedData::StyleRareNonInheritedData()
7272 , m_appearance(RenderStyle::initialAppearance())
7373 , m_borderFit(RenderStyle::initialBorderFit())
7474 , m_textCombine(RenderStyle::initialTextCombine())
 75 , m_textDecorationStyle(RenderStyle::initialTextDecorationStyle())
7576 , m_wrapFlow(RenderStyle::initialWrapFlow())
7677 , m_wrapThrough(RenderStyle::initialWrapThrough())
7778#if USE(ACCELERATED_COMPOSITING)

@@StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonInherited
143144 , m_appearance(o.m_appearance)
144145 , m_borderFit(o.m_borderFit)
145146 , m_textCombine(o.m_textCombine)
 147 , m_textDecorationStyle(o.m_textDecorationStyle)
146148 , m_wrapFlow(o.m_wrapFlow)
147149 , m_wrapThrough(o.m_wrapThrough)
148150#if USE(ACCELERATED_COMPOSITING)

@@bool StyleRareNonInheritedData::operator==(const StyleRareNonInheritedData& o) c
220222 && m_appearance == o.m_appearance
221223 && m_borderFit == o.m_borderFit
222224 && m_textCombine == o.m_textCombine
 225 && m_textDecorationStyle == o.m_textDecorationStyle
223226 && m_wrapFlow == o.m_wrapFlow
224227 && m_wrapThrough == o.m_wrapThrough
225228#if USE(ACCELERATED_COMPOSITING)

Source/WebCore/rendering/style/StyleRareNonInheritedData.h

@@public:
175175 unsigned m_appearance : 6; // EAppearance
176176 unsigned m_borderFit : 1; // EBorderFit
177177 unsigned m_textCombine : 1; // CSS3 text-combine properties
 178 unsigned m_textDecorationStyle : TextDecorationStyleBits; // TextDecorationStyle
178179
179180 unsigned m_wrapFlow: 3; // WrapFlow
180181 unsigned m_wrapThrough: 1; // WrapThrough

LayoutTests/ChangeLog

 12012-08-06 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
 2
 3 [css3-text] Add support for -webkit-text-decoration-style
 4 https://bugs.webkit.org/show_bug.cgi?id=90958
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 This patch implements the "text-decoration-style" property specified in CSS3
 9 working draft, with "-webkit-" prefix. The specification can be found below:
 10 http://dev.w3.org/csswg/css3-text/#text-decoration-style
 11
 12 Additionally, Mozilla implementation details can be found here:
 13 https://developer-dev.allizom.org/en-US/docs/CSS/text-decoration-style
 14
 15 The "wavy" value is parsed, but not rendered (requires platform support).
 16
 17 * fast/css/getComputedStyle/computed-style-expected.txt:
 18 * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
 19 * fast/css/getComputedStyle/resources/property-names.js:
 20 * fast/css/text-decoration-style.html: Added.
 21 * platform/qt/fast/css/text-decoration-style-expected.png: Added.
 22 * platform/qt/fast/css/text-decoration-style-expected.txt: Added.
 23 * svg/css/getComputedStyle-basic-expected.txt:
 24
1252012-08-06 Max Vujovic <mvujovic@adobe.com>
226
327 [CSS Shaders] Parse mix function

LayoutTests/fast/css/getComputedStyle/computed-style-expected.txt

@@table-layout: auto;
8585tab-size: 8;
8686text-align: start;
8787text-decoration: none;
 88-webkit-text-decoration-style: solid;
8889text-indent: 0px;
8990text-rendering: auto;
9091text-shadow: none;

LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt

@@table-layout: auto
8484tab-size: 8
8585text-align: start
8686text-decoration: none
 87-webkit-text-decoration-style: solid
8788text-indent: 0px
8889text-rendering: auto
8990text-shadow: none

LayoutTests/fast/css/getComputedStyle/resources/property-names.js

@@var propertiesToTest = {
232232 "text-align": true,
233233 "text-anchor": true,
234234 "text-decoration": true,
 235 "-webkit-text-decoration-style": true,
235236 "text-indent": true,
236237 "text-overflow": true,
237238 "text-rendering": true,

LayoutTests/fast/css/text-decoration-style.html

 1<html>
 2<head>
 3 <style>
 4 .none { -webkit-text-decoration-line: none; }
 5 .underline { -webkit-text-decoration-line: underline; }
 6 .overline { -webkit-text-decoration-line: overline; }
 7 .line-through { -webkit-text-decoration-line: line-through; }
 8 .all { -webkit-text-decoration-line: underline overline line-through; }
 9 </style>
 10</head>
 11<body>
 12 <div>Each line of this test should match its text decoration line description:</div><br/>
 13 <div class="none" style="-webkit-text-decoration-style: solid;">line: none style: solid</div><br/>
 14 <div class="underline" style="-webkit-text-decoration-style: solid;">line: underline style: solid</div><br/>
 15 <div class="underline" style="-webkit-text-decoration-style: double;">line: underline style: double</div><br/>
 16 <div class="underline" style="-webkit-text-decoration-style: dotted;">line: underline style: dotted</div><br/>
 17 <div class="underline" style="-webkit-text-decoration-style: dashed;">line: underline style: dashed</div><br/>
 18 <div class="underline" style="-webkit-text-decoration-style: wavy;">line: underline style: wavy</div><br/>
 19 <div class="overline" style="-webkit-text-decoration-style: solid;">line: overline style: solid</div><br/>
 20 <div class="overline" style="-webkit-text-decoration-style: double;">line: overline style: double</div><br/>
 21 <div class="overline" style="-webkit-text-decoration-style: dotted;">line: overline style: dotted</div><br/>
 22 <div class="overline" style="-webkit-text-decoration-style: dashed;">line: overline style: dashed</div><br/>
 23 <div class="overline" style="-webkit-text-decoration-style: wavy;">line: overline style: wavy</div><br/>
 24 <div class="line-through" style="-webkit-text-decoration-style: solid;">line: line-through style: solid</div><br/>
 25 <div class="line-through" style="-webkit-text-decoration-style: double;">line: line-through style: double</div><br/>
 26 <div class="line-through" style="-webkit-text-decoration-style: dotted;">line: line-through style: dotted</div><br/>
 27 <div class="line-through" style="-webkit-text-decoration-style: dashed;">line: line-through style: dashed</div><br/>
 28 <div class="line-through" style="-webkit-text-decoration-style: wavy;">line: line-through style: wavy</div><br/>
 29 <div class="all" style="-webkit-text-decoration-style: solid;">line: underline + overline + line-through style: solid</div><br/>
 30 <div class="all" style="-webkit-text-decoration-style: double;">line: underline + overline + line-through style: double</div><br/>
 31 <div class="all" style="-webkit-text-decoration-style: dotted;">line: underline + overline + line-through style: dotted</div><br/>
 32 <div class="all" style="-webkit-text-decoration-style: dashed;">line: underline + overline + line-through style: dashed</div><br/>
 33 <div class="all" style="-webkit-text-decoration-style: wavy;">line: underline + overline + line-through style: wavy</div><br/>
 34</div>
 35</body>
 36</html>

LayoutTests/platform/qt/fast/css/text-decoration-style-expected.png

Exception raised during decoding git binary patch:
Error running git apply --directory=/tmp
with patch:
diff --git a/PrettyPatch20260325-3366-8dasfs.bin b/PrettyPatch20260325-3366-8dasfs.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 0
HcmV?d00001

...
error: invalid path '/tmp/PrettyPatch20260325-3366-8dasfs.bin'

/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:924:in `run_git_apply_on_patch'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:935:in `extract_contents_from_git_binary_literal_chunk'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:950:in `extract_contents_from_remote'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:713:in `initialize'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `new'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `block in parse'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `collect'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:845:in `parse'
/var/www/bugs.webkit.org/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:21:in `prettify'
/var/www/html/PrettyPatch/prettify.rb:30:in `<main>'

LayoutTests/platform/qt/fast/css/text-decoration-style-expected.txt

 1layer at (0,0) size 784x852
 2 RenderView at (0,0) size 784x600
 3layer at (0,0) size 784x852
 4 RenderBlock {HTML} at (0,0) size 784x852
 5 RenderBody {BODY} at (8,8) size 768x836
 6 RenderBlock {DIV} at (0,0) size 768x19
 7 RenderText {#text} at (0,0) size 410x19
 8 text run at (0,0) width 410: "Each line of this test should match its text decoration line description:"
 9 RenderBlock (anonymous) at (0,19) size 768x19
 10 RenderBR {BR} at (0,0) size 0x19
 11 RenderBlock {DIV} at (0,38) size 768x19
 12 RenderText {#text} at (0,0) size 122x19
 13 text run at (0,0) width 122: "line: none style: solid"
 14 RenderBlock (anonymous) at (0,57) size 768x19
 15 RenderBR {BR} at (0,0) size 0x19
 16 RenderBlock {DIV} at (0,76) size 768x19
 17 RenderText {#text} at (0,0) size 147x19
 18 text run at (0,0) width 147: "line: underline style: solid"
 19 RenderBlock (anonymous) at (0,95) size 768x19
 20 RenderBR {BR} at (0,0) size 0x19
 21 RenderBlock {DIV} at (0,114) size 768x19
 22 RenderText {#text} at (0,0) size 160x19
 23 text run at (0,0) width 160: "line: underline style: double"
 24 RenderBlock (anonymous) at (0,133) size 768x19
 25 RenderBR {BR} at (0,0) size 0x19
 26 RenderBlock {DIV} at (0,152) size 768x19
 27 RenderText {#text} at (0,0) size 158x19
 28 text run at (0,0) width 158: "line: underline style: dotted"
 29 RenderBlock (anonymous) at (0,171) size 768x19
 30 RenderBR {BR} at (0,0) size 0x19
 31 RenderBlock {DIV} at (0,190) size 768x19
 32 RenderText {#text} at (0,0) size 162x19
 33 text run at (0,0) width 162: "line: underline style: dashed"
 34 RenderBlock (anonymous) at (0,209) size 768x19
 35 RenderBR {BR} at (0,0) size 0x19
 36 RenderBlock {DIV} at (0,228) size 768x19
 37 RenderText {#text} at (0,0) size 151x19
 38 text run at (0,0) width 151: "line: underline style: wavy"
 39 RenderBlock (anonymous) at (0,247) size 768x19
 40 RenderBR {BR} at (0,0) size 0x19
 41 RenderBlock {DIV} at (0,266) size 768x19
 42 RenderText {#text} at (0,0) size 140x19
 43 text run at (0,0) width 140: "line: overline style: solid"
 44 RenderBlock (anonymous) at (0,285) size 768x19
 45 RenderBR {BR} at (0,0) size 0x19
 46 RenderBlock {DIV} at (0,304) size 768x19
 47 RenderText {#text} at (0,0) size 153x19
 48 text run at (0,0) width 153: "line: overline style: double"
 49 RenderBlock (anonymous) at (0,323) size 768x19
 50 RenderBR {BR} at (0,0) size 0x19
 51 RenderBlock {DIV} at (0,342) size 768x19
 52 RenderText {#text} at (0,0) size 151x19
 53 text run at (0,0) width 151: "line: overline style: dotted"
 54 RenderBlock (anonymous) at (0,361) size 768x19
 55 RenderBR {BR} at (0,0) size 0x19
 56 RenderBlock {DIV} at (0,380) size 768x19
 57 RenderText {#text} at (0,0) size 155x19
 58 text run at (0,0) width 155: "line: overline style: dashed"
 59 RenderBlock (anonymous) at (0,399) size 768x19
 60 RenderBR {BR} at (0,0) size 0x19
 61 RenderBlock {DIV} at (0,418) size 768x19
 62 RenderText {#text} at (0,0) size 144x19
 63 text run at (0,0) width 144: "line: overline style: wavy"
 64 RenderBlock (anonymous) at (0,437) size 768x19
 65 RenderBR {BR} at (0,0) size 0x19
 66 RenderBlock {DIV} at (0,456) size 768x19
 67 RenderText {#text} at (0,0) size 164x19
 68 text run at (0,0) width 164: "line: line-through style: solid"
 69 RenderBlock (anonymous) at (0,475) size 768x19
 70 RenderBR {BR} at (0,0) size 0x19
 71 RenderBlock {DIV} at (0,494) size 768x19
 72 RenderText {#text} at (0,0) size 177x19
 73 text run at (0,0) width 177: "line: line-through style: double"
 74 RenderBlock (anonymous) at (0,513) size 768x19
 75 RenderBR {BR} at (0,0) size 0x19
 76 RenderBlock {DIV} at (0,532) size 768x19
 77 RenderText {#text} at (0,0) size 175x19
 78 text run at (0,0) width 175: "line: line-through style: dotted"
 79 RenderBlock (anonymous) at (0,551) size 768x19
 80 RenderBR {BR} at (0,0) size 0x19
 81 RenderBlock {DIV} at (0,570) size 768x19
 82 RenderText {#text} at (0,0) size 179x19
 83 text run at (0,0) width 179: "line: line-through style: dashed"
 84 RenderBlock (anonymous) at (0,589) size 768x19
 85 RenderBR {BR} at (0,0) size 0x19
 86 RenderBlock {DIV} at (0,608) size 768x19
 87 RenderText {#text} at (0,0) size 168x19
 88 text run at (0,0) width 168: "line: line-through style: wavy"
 89 RenderBlock (anonymous) at (0,627) size 768x19
 90 RenderBR {BR} at (0,0) size 0x19
 91 RenderBlock {DIV} at (0,646) size 768x19
 92 RenderText {#text} at (0,0) size 299x19
 93 text run at (0,0) width 299: "line: underline + overline + line-through style: solid"
 94 RenderBlock (anonymous) at (0,665) size 768x19
 95 RenderBR {BR} at (0,0) size 0x19
 96 RenderBlock {DIV} at (0,684) size 768x19
 97 RenderText {#text} at (0,0) size 312x19
 98 text run at (0,0) width 312: "line: underline + overline + line-through style: double"
 99 RenderBlock (anonymous) at (0,703) size 768x19
 100 RenderBR {BR} at (0,0) size 0x19
 101 RenderBlock {DIV} at (0,722) size 768x19
 102 RenderText {#text} at (0,0) size 310x19
 103 text run at (0,0) width 310: "line: underline + overline + line-through style: dotted"
 104 RenderBlock (anonymous) at (0,741) size 768x19
 105 RenderBR {BR} at (0,0) size 0x19
 106 RenderBlock {DIV} at (0,760) size 768x19
 107 RenderText {#text} at (0,0) size 314x19
 108 text run at (0,0) width 314: "line: underline + overline + line-through style: dashed"
 109 RenderBlock (anonymous) at (0,779) size 768x19
 110 RenderBR {BR} at (0,0) size 0x19
 111 RenderBlock {DIV} at (0,798) size 768x19
 112 RenderText {#text} at (0,0) size 303x19
 113 text run at (0,0) width 303: "line: underline + overline + line-through style: wavy"
 114 RenderBlock (anonymous) at (0,817) size 768x19
 115 RenderBR {BR} at (0,0) size 0x19

LayoutTests/svg/css/getComputedStyle-basic-expected.txt

@@rect: style.getPropertyValue(text-align) : start
168168rect: style.getPropertyCSSValue(text-align) : [object CSSPrimitiveValue]
169169rect: style.getPropertyValue(text-decoration) : none
170170rect: style.getPropertyCSSValue(text-decoration) : [object CSSPrimitiveValue]
 171rect: style.getPropertyValue(-webkit-text-decoration-style) : solid
 172rect: style.getPropertyCSSValue(-webkit-text-decoration-style) : [object CSSPrimitiveValue]
171173rect: style.getPropertyValue(text-indent) : 0px
172174rect: style.getPropertyCSSValue(text-indent) : [object CSSPrimitiveValue]
173175rect: style.getPropertyValue(text-rendering) : auto

@@g: style.getPropertyValue(text-align) : start
670672g: style.getPropertyCSSValue(text-align) : [object CSSPrimitiveValue]
671673g: style.getPropertyValue(text-decoration) : none
672674g: style.getPropertyCSSValue(text-decoration) : [object CSSPrimitiveValue]
 675g: style.getPropertyValue(-webkit-text-decoration-style) : solid
 676g: style.getPropertyCSSValue(-webkit-text-decoration-style) : [object CSSPrimitiveValue]
673677g: style.getPropertyValue(text-indent) : 0px
674678g: style.getPropertyCSSValue(text-indent) : [object CSSPrimitiveValue]
675679g: style.getPropertyValue(text-rendering) : auto