<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[145785] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/145785">145785</a></dd>
<dt>Author</dt> <dd>bruno.abinader@basyskom.com</dd>
<dt>Date</dt> <dd>2013-03-13 21:06:20 -0700 (Wed, 13 Mar 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>[css3-text] Add support for text-decoration-color
https://bugs.webkit.org/show_bug.cgi?id=91638

Reviewed by Julien Chaffraix.

Source/WebCore:

This patch implements the CSS3's 'text-decoration-color' property, with
'-webkit' vendor prefix.

More info about &quot;text-decoration-color&quot; property can be found here:
http://dev.w3.org/csswg/css-text-decor-3/#text-decoration-color-property

Mozilla implementation (using -moz prefix) is described here:
https://developer.mozilla.org/en/CSS/text-decoration-color

Tests: fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html
       fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html
       fast/css3-text/css3-text-decoration/text-decoration-color.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
* css/CSSParser.cpp:
(WebCore::isColorPropertyID):
(WebCore::CSSParser::parseValue):
* css/CSSProperty.cpp:
(WebCore::CSSProperty::isInheritedProperty):
Added parsing checks for '-webkit-text-decoration-color' property.

* css/CSSPropertyNames.in:
Added '-webkit-text-decoration-color' property name.

* css/StyleBuilder.cpp:
(WebCore::StyleBuilder::StyleBuilder):
Set property handler for '-webkit-text-decoration-color'.

* css/StyleResolver.cpp:
(WebCore::isValidVisitedLinkProperty):
(WebCore::StyleResolver::applyProperty):
Added switch case checks for text-decoration-color property on visited
link checks and property appliance.

* rendering/RenderObject.cpp:
(WebCore::decorationColor):
The newly added property needs to checked here when selecting the text
decoration color.

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::diff):
(WebCore::RenderStyle::colorIncludingFallback):
(WebCore::RenderStyle::visitedDependentColor):
There is no proper way to check if a property has been set or not, so if
text decoration color fallbacks to default color, it would override the
check for 'text-fill-color' and 'text-stroke-color' properties on
WebCore::decorationColor() static function, changing current behavior,
which can be verified by new failing layout tests (ie.
fast/text/stroking-decorations.html).

* rendering/style/RenderStyle.h:
Added {non-}visited text decoration color getters and setters.

* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
Added {non-}visited text decoration color variables initialization to
copy constructor and operator assignment functions.

* rendering/style/StyleRareNonInheritedData.h:
(StyleRareNonInheritedData):
Added here as this property is not used regularly.

LayoutTests:

Added layout tests (paint,repaint and getComputedStyle) for
'text-decoration-color' property, with '-webkit' vendor prefix.

* fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt: Added.
* fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html: Added.
* fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js: Added.
Added getComputedStyle-based layout test covering a bunch of valid/invalid values.

* fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.png: Added.
* fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt: Added.
* fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html: Added.
Added cross-platform repaint layout test using 'Ahem' font.

* fast/css3-text/css3-text-decoration/text-decoration-color-expected.html: Added.
* fast/css3-text/css3-text-decoration/text-decoration-color.html: Added.
Added cross-platform reference test.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertycpp">trunk/Source/WebCore/css/CSSProperty.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuildercpp">trunk/Source/WebCore/css/StyleBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStylecpp">trunk/Source/WebCore/rendering/style/RenderStyle.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylegetComputedStyletextdecorationcolorexpectedtxt">trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylegetComputedStyletextdecorationcolorhtml">trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylescripttestsgetComputedStyletextdecorationcolorjs">trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorexpectedpng">trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.png</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorexpectedtxt">trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorhtml">trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationtextdecorationcolorexpectedhtml">trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastcss3textcss3textdecorationtextdecorationcolorhtml">trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/LayoutTests/ChangeLog        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2013-03-13  Bruno de Oliveira Abinader  &lt;bruno.abinader@basyskom.com&gt;
+
+        [css3-text] Add support for text-decoration-color
+        https://bugs.webkit.org/show_bug.cgi?id=91638
+
+        Reviewed by Julien Chaffraix.
+
+        Added layout tests (paint,repaint and getComputedStyle) for
+        'text-decoration-color' property, with '-webkit' vendor prefix.
+
+        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt: Added.
+        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html: Added.
+        * fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js: Added.
+        Added getComputedStyle-based layout test covering a bunch of valid/invalid values.
+
+        * fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.png: Added.
+        * fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt: Added.
+        * fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html: Added.
+        Added cross-platform repaint layout test using 'Ahem' font.
+
+        * fast/css3-text/css3-text-decoration/text-decoration-color-expected.html: Added.
+        * fast/css3-text/css3-text-decoration/text-decoration-color.html: Added.
+        Added cross-platform reference test.
+
</ins><span class="cx"> 2013-03-11  Kinuko Yasuda  &lt;kinuko@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Quota API: Update IDL to make it match the latest WD
</span></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylegetComputedStyletextdecorationcolorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color-expected.txt        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+Test to make sure -webkit-text-decoration-color property returns CSSPrimitiveValue properly.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Ancestor should not inherit 'green' value from parent (fallback to initial value):
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color') is null
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 0)'
+
+Parent should contain 'green':
+PASS e.style.webkitTextDecorationColor is 'green'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'green'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 128, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 128, 0)'
+
+JavaScript setter tests for valid, initial, invalid and blank values:
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color') is null
+
+Valid value 'blue':
+PASS e.style.webkitTextDecorationColor is 'blue'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'blue'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 255)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 255)'
+
+Valid value '#FFFFFF':
+PASS e.style.webkitTextDecorationColor is 'rgb(255, 255, 255)'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(255, 255, 255)'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(255, 255, 255)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(255, 255, 255)'
+
+Valid value 'rgb(0, 255, 0)':
+PASS e.style.webkitTextDecorationColor is 'rgb(0, 255, 0)'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 255, 0)'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 255, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 255, 0)'
+
+Valid value 'rgba(100, 100, 100, 0.5)':
+PASS e.style.webkitTextDecorationColor is 'rgba(100, 100, 100, 0.498039)'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgba(100, 100, 100, 0.498039)'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgba(100, 100, 100, 0.498039)'
+PASS computedStyle.webkitTextDecorationColor is 'rgba(100, 100, 100, 0.498039)'
+
+Valid value 'hsl(240, 100%, 50%)':
+PASS e.style.webkitTextDecorationColor is 'rgb(0, 0, 255)'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 255)'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 255)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 255)'
+
+Valid value 'hsla(240, 100%, 50%, 0.5)':
+PASS e.style.webkitTextDecorationColor is 'rgba(0, 0, 255, 0.498039)'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgba(0, 0, 255, 0.498039)'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgba(0, 0, 255, 0.498039)'
+PASS computedStyle.webkitTextDecorationColor is 'rgba(0, 0, 255, 0.498039)'
+
+Initial value:
+PASS e.style.webkitTextDecorationColor is 'initial'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'initial'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 0)'
+
+Invalid value (ie. 'unknown'):
+PASS e.style.webkitTextDecorationColor is 'initial'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSValue]'
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'initial'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 0)'
+
+Empty value (resets the property):
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color') is null
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 0, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 0, 0)'
+
+Empty value with different 'currentColor' initial value (green):
+PASS e.style.getPropertyCSSValue('-webkit-text-decoration-color') is null
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText is 'rgb(0, 128, 0)'
+PASS computedStyle.webkitTextDecorationColor is 'rgb(0, 128, 0)'
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylegetComputedStyletextdecorationcolorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;script-tests/getComputedStyle-text-decoration-color.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../js/resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationgetComputedStylescripttestsgetComputedStyletextdecorationcolorjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/script-tests/getComputedStyle-text-decoration-color.js        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+function testElementStyle(type, value)
+{
+    if (type != null) {
+        shouldBe(&quot;e.style.webkitTextDecorationColor&quot;, &quot;'&quot; + value + &quot;'&quot;);
+        shouldBe(&quot;e.style.getPropertyCSSValue('-webkit-text-decoration-color').toString()&quot;, &quot;'&quot; + type + &quot;'&quot;);
+        shouldBe(&quot;e.style.getPropertyCSSValue('-webkit-text-decoration-color').cssText&quot;, &quot;'&quot; + value + &quot;'&quot;);
+    } else
+        shouldBeNull(&quot;e.style.getPropertyCSSValue('-webkit-text-decoration-color')&quot;);
+}
+
+function testComputedStyleValue(type, value)
+{
+    computedStyle = window.getComputedStyle(e, null);
+    shouldBe(&quot;computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').toString()&quot;, &quot;'&quot; + type + &quot;'&quot;);
+    shouldBe(&quot;computedStyle.getPropertyCSSValue('-webkit-text-decoration-color').cssText&quot;, &quot;'&quot; + value + &quot;'&quot;);
+    shouldBe(&quot;computedStyle.webkitTextDecorationColor&quot;, &quot;'&quot; + value + &quot;'&quot;);
+}
+
+function testValue(value, elementValue, elementStyle, computedValue, computedStyle)
+{
+    if (value != null)
+        e.style.webkitTextDecorationColor = value;
+    testElementStyle(elementStyle, elementValue);
+    testComputedStyleValue(computedStyle, computedValue);
+    debug('');
+}
+
+description(&quot;Test to make sure -webkit-text-decoration-color property returns CSSPrimitiveValue properly.&quot;)
+
+var testContainer = document.createElement(&quot;div&quot;);
+testContainer.contentEditable = true;
+document.body.appendChild(testContainer);
+
+testContainer.innerHTML = '&lt;div id=&quot;test-parent&quot; style=&quot;-webkit-text-decoration-color: green !important;&quot;&gt;hello &lt;span id=&quot;test-ancestor&quot;&gt;world&lt;/span&gt;&lt;/div&gt;';
+debug(&quot;Ancestor should not inherit 'green' value from parent (fallback to initial value):&quot;)
+e = document.getElementById('test-ancestor');
+testValue(null, &quot;&quot;, null, &quot;rgb(0, 0, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Parent should contain 'green':&quot;);
+e = document.getElementById('test-parent');
+testValue(null, &quot;green&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgb(0, 128, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+testContainer.innerHTML = '&lt;div id=&quot;test-js&quot;&gt;test&lt;/div&gt;';
+debug(&quot;JavaScript setter tests for valid, initial, invalid and blank values:&quot;);
+e = document.getElementById('test-js');
+shouldBeNull(&quot;e.style.getPropertyCSSValue('-webkit-text-decoration-color')&quot;);
+
+debug(&quot;\nValid value 'blue':&quot;);
+testValue(&quot;blue&quot;, &quot;blue&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgb(0, 0, 255)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Valid value '#FFFFFF':&quot;);
+testValue(&quot;#FFFFFF&quot;, &quot;rgb(255, 255, 255)&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgb(255, 255, 255)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Valid value 'rgb(0, 255, 0)':&quot;);
+testValue(&quot;rgb(0, 255, 0)&quot;, &quot;rgb(0, 255, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgb(0, 255, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Valid value 'rgba(100, 100, 100, 0.5)':&quot;);
+testValue(&quot;rgba(100, 100, 100, 0.5)&quot;, &quot;rgba(100, 100, 100, 0.498039)&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgba(100, 100, 100, 0.498039)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Valid value 'hsl(240, 100%, 50%)':&quot;);
+testValue(&quot;hsl(240, 100%, 50%)&quot;, &quot;rgb(0, 0, 255)&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgb(0, 0, 255)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Valid value 'hsla(240, 100%, 50%, 0.5)':&quot;);
+testValue(&quot;hsla(240, 100%, 50%, 0.5)&quot;, &quot;rgba(0, 0, 255, 0.498039)&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;rgba(0, 0, 255, 0.498039)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Initial value:&quot;);
+testValue(&quot;initial&quot;, &quot;initial&quot;, &quot;[object CSSValue]&quot;, &quot;rgb(0, 0, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Invalid value (ie. 'unknown'):&quot;);
+testValue(&quot;unknown&quot;, &quot;initial&quot;, &quot;[object CSSValue]&quot;, &quot;rgb(0, 0, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Empty value (resets the property):&quot;);
+testValue(&quot;&quot;, &quot;&quot;, null, &quot;rgb(0, 0, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+debug(&quot;Empty value with different 'currentColor' initial value (green):&quot;)
+e.style.color = 'green';
+testValue(&quot;&quot;, &quot;&quot;, null, &quot;rgb(0, 128, 0)&quot;, &quot;[object CSSPrimitiveValue]&quot;);
+
+document.body.removeChild(testContainer);
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorexpectedpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color-expected.txt        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+lorem ipsum ipsum ipsum
+
+lorem ipsum ipsum ipsum
+
+lorem ipsum ipsum ipsum
+
+lorem ipsum ipsum ipsum
+
+lorem ipsum
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationrepaintrepainttextdecorationcolorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;CSS Test: CSS3 text-decoration-color repaint&lt;/title&gt;
+        &lt;meta name=&quot;flags&quot; content=&quot;ahem&quot;/&gt;
+        &lt;script&gt;
+            if (window.testRunner)
+                testRunner.dumpAsText();
+        &lt;/script&gt;
+        &lt;script src=&quot;../../repaint/resources/repaint.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script&gt;
+            function runRepaintTest() {
+                document.getElementById(&quot;test-underline&quot;).style.webkitTextDecorationColor = 'gray';
+                document.getElementById(&quot;test-overline&quot;).style.webkitTextDecorationColor = 'yellow';
+                document.getElementById(&quot;test-line-through&quot;).style.webkitTextDecorationColor = 'white';
+                document.getElementById(&quot;test-parent&quot;).style.webkitTextDecorationColor = 'green';
+                document.getElementById(&quot;test-ancestor-1&quot;).style.webkitTextDecorationColor = 'black';
+                document.getElementById(&quot;test-ancestor-2&quot;).style.webkitTextDecorationColor = 'inherit';
+                document.getElementById(&quot;test-mixed-1&quot;).style.webkitTextDecorationColor = 'black';
+                document.getElementById(&quot;test-mixed-2&quot;).style.webkitTextDecorationColor = 'green';
+                document.getElementById(&quot;test-mixed-3&quot;).style.webkitTextDecorationColor = 'blue';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .underline {
+                text-decoration: underline;
+            }
+            .overline {
+                text-decoration: overline;
+            }
+            .line-through {
+                text-decoration: line-through;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;runRepaintTest();&quot; style=&quot;font: 10px Ahem; -webkit-font-smoothing: none;&quot;&gt;
+        &lt;!-- Green text with gray underline on repaint --&gt;
+        &lt;p&gt;&lt;span class=&quot;underline&quot; id=&quot;test-underline&quot; style=&quot;color: green;&quot;&gt;lorem ipsum &lt;sub&gt;ipsum&lt;/sub&gt; &lt;sup&gt;ipsum&lt;/sup&gt;&lt;/span&gt;&lt;/p&gt;
+
+        &lt;!-- Navy text with yellow overline on repaint --&gt;
+        &lt;p&gt;&lt;span class=&quot;overline&quot; id=&quot;test-overline&quot; style=&quot;color: navy;&quot;&gt;lorem ipsum &lt;sub&gt;ipsum&lt;/sub&gt; &lt;sup&gt;ipsum&lt;/sup&gt;&lt;/span&gt;&lt;/p&gt;
+
+        &lt;!-- Black text with white line-through on repaint --&gt;
+        &lt;p&gt;&lt;span class=&quot;line-through&quot; id=&quot;test-line-through&quot; style=&quot;color: black;&quot;&gt;lorem ipsum &lt;sub&gt;ipsum&lt;/sub&gt; &lt;sup&gt;ipsum&lt;/sup&gt;&lt;/span&gt;&lt;/p&gt;
+
+        &lt;!-- Parent color is grey, with green underline, first ancestor has black overline and latter has inherited text decoration color from parent on repaint --&gt;
+        &lt;p&gt;&lt;span class=&quot;underline&quot; id=&quot;test-parent&quot; style=&quot;color: rgb(100, 100, 100);&quot;&gt;lorem &lt;span class=&quot;overline&quot; id=&quot;test-ancestor-1&quot;&gt;ipsum&lt;/span&gt; &lt;span class=&quot;line-through&quot; id=&quot;test-ancestor-2&quot;&gt;ipsum&lt;/span&gt; ipsum&lt;/span&gt;&lt;/p&gt;
+
+        &lt;!-- Transparent text with green overline, blue line-through and black underline on repaint --&gt;
+        &lt;p style=&quot;color: transparent;&quot;&gt;&lt;span id=&quot;test-mixed-1&quot; class=&quot;underline&quot;&gt;&lt;span id=&quot;test-mixed-2&quot; class=&quot;overline&quot;&gt;&lt;span id=&quot;test-mixed-3&quot; class=&quot;line-through&quot;&gt;lorem ipsum&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationtextdecorationcolorexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color-expected.html (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color-expected.html        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;CSS Test: CSS3 text-decoration-color&lt;/title&gt;
+        &lt;style&gt;
+            .underline {
+                text-decoration: underline;
+            }
+            .overline {
+                text-decoration: overline;
+            }
+            .line-through {
+                text-decoration: line-through;
+            }
+            .black-fill {
+                -webkit-text-fill-color: black;
+            }
+            .transparent-fill {
+                -webkit-text-fill-color: transparent;
+                -webkit-text-stroke-width: 1px;
+                -webkit-text-stroke-color: black;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h3&gt;Each line of this test should match its text decoration color description:&lt;/h3&gt;
+        &lt;div class=&quot;underline&quot; style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;-webkit-text-fill-color: gray;&quot;&gt;Gray text with blue underline&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;overline&quot; style=&quot;color: black;&quot;&gt;&lt;span style=&quot;-webkit-text-fill-color: green;&quot;&gt;Green text with black overline&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;line-through&quot; style=&quot;color: gold;&quot;&gt;&lt;span style=&quot;-webkit-text-fill-color: black;&quot;&gt;Black text with gold line-through&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;underline&quot; style=&quot;color: blue;&quot;&gt;
+            &lt;span class=&quot;overline&quot; style=&quot;color: gray;&quot;&gt;
+                &lt;span class=&quot;line-through&quot; style=&quot;color: green;&quot;&gt;
+                    &lt;span class=&quot;black-fill&quot;&gt;Black text with blue underline, gray overline and green line-through&lt;/span&gt;
+                &lt;/span&gt;
+            &lt;/span&gt;
+        &lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;line-through&quot; style=&quot;color: green;&quot;&gt;
+            &lt;sub class=&quot;overline&quot; style=&quot;color: gray;&quot;&gt;&lt;span class=&quot;black-fill&quot;&gt;subscript text&lt;/span&gt;&lt;/sub&gt;
+            &lt;sup class=&quot;underline&quot; style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;black-fill&quot;&gt;superscript text&lt;/span&gt;&lt;/sup&gt;
+        &lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;underline&quot; style=&quot;color: green;&quot;&gt;&lt;span class=&quot;transparent-fill&quot;&gt;Transparent fill with black stroke text and green underline&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcss3textcss3textdecorationtextdecorationcolorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color.html (0 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color.html                                (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-color.html        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;CSS Test: CSS3 text-decoration-color&lt;/title&gt;
+        &lt;style&gt;
+            .underline {
+                text-decoration: underline;
+            }
+            .overline {
+                text-decoration: overline;
+            }
+            .line-through {
+                text-decoration: line-through;
+            }
+            #blue-underline {
+                text-decoration: underline;
+                -webkit-text-decoration-color: blue;
+            }
+            #gray-overline {
+                text-decoration: overline;
+                -webkit-text-decoration-color: gray;
+            }
+            #green-line-through {
+                text-decoration: line-through;
+                -webkit-text-decoration-color: green;
+            }
+            #transparent-fill {
+                -webkit-text-fill-color: transparent;
+                -webkit-text-stroke-width: 1px;
+                -webkit-text-stroke-color: black;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h3&gt;Each line of this test should match its text decoration color description:&lt;/h3&gt;
+
+        &lt;!-- Valid values for underline, overline and line-through text decoration lines --&gt;
+        &lt;div class=&quot;underline&quot; style=&quot;color: gray; -webkit-text-decoration-color: blue;&quot;&gt;Gray text with blue underline&lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;overline&quot; style=&quot;color: green; -webkit-text-decoration-color: black;&quot;&gt;Green text with black overline&lt;/div&gt;&lt;br/&gt;
+        &lt;div class=&quot;line-through&quot; style=&quot;-webkit-text-decoration-color: gold;&quot;&gt;Black text with gold line-through&lt;/div&gt;&lt;br/&gt;
+
+        &lt;!-- Mix of underline, overline and line-through with different colors for each --&gt;
+        &lt;div&gt;
+            &lt;span id=&quot;blue-underline&quot;&gt;
+                &lt;span id=&quot;gray-overline&quot;&gt;
+                    &lt;span id=&quot;green-line-through&quot;&gt;Black text with blue underline, gray overline and green line-through&lt;/span&gt;
+                &lt;/span&gt;
+            &lt;/span&gt;
+        &lt;/div&gt;&lt;br/&gt;
+
+        &lt;!-- Test behavior on subscript and superscript text --&gt;
+        &lt;div&gt;
+            &lt;span id=&quot;green-line-through&quot;&gt;
+                &lt;sub id=&quot;gray-overline&quot;&gt;subscript text&lt;/sub&gt;
+                &lt;sup id=&quot;blue-underline&quot;&gt;superscript text&lt;/sup&gt;
+            &lt;/span&gt;
+        &lt;/div&gt;&lt;br/&gt;
+
+        &lt;!-- Test with text-fill-color and text-stroke-color values set --&gt;
+        &lt;div class=&quot;underline&quot; id=&quot;transparent-fill&quot; style=&quot;-webkit-text-decoration-color: green;&quot;&gt;Transparent fill with black stroke text and green underline&lt;/div&gt;&lt;br/&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/ChangeLog        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -1,3 +1,74 @@
</span><ins>+2013-03-13  Bruno de Oliveira Abinader  &lt;bruno.abinader@basyskom.com&gt;
+
+        [css3-text] Add support for text-decoration-color
+        https://bugs.webkit.org/show_bug.cgi?id=91638
+
+        Reviewed by Julien Chaffraix.
+
+        This patch implements the CSS3's 'text-decoration-color' property, with
+        '-webkit' vendor prefix.
+
+        More info about &quot;text-decoration-color&quot; property can be found here:
+        http://dev.w3.org/csswg/css-text-decor-3/#text-decoration-color-property
+
+        Mozilla implementation (using -moz prefix) is described here:
+        https://developer.mozilla.org/en/CSS/text-decoration-color
+
+        Tests: fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color.html
+               fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-color.html
+               fast/css3-text/css3-text-decoration/text-decoration-color.html
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+        * css/CSSParser.cpp:
+        (WebCore::isColorPropertyID):
+        (WebCore::CSSParser::parseValue):
+        * css/CSSProperty.cpp:
+        (WebCore::CSSProperty::isInheritedProperty):
+        Added parsing checks for '-webkit-text-decoration-color' property.
+
+        * css/CSSPropertyNames.in:
+        Added '-webkit-text-decoration-color' property name.
+
+        * css/StyleBuilder.cpp:
+        (WebCore::StyleBuilder::StyleBuilder):
+        Set property handler for '-webkit-text-decoration-color'.
+
+        * css/StyleResolver.cpp:
+        (WebCore::isValidVisitedLinkProperty):
+        (WebCore::StyleResolver::applyProperty):
+        Added switch case checks for text-decoration-color property on visited
+        link checks and property appliance.
+
+        * rendering/RenderObject.cpp:
+        (WebCore::decorationColor):
+        The newly added property needs to checked here when selecting the text
+        decoration color.
+
+        * rendering/style/RenderStyle.cpp:
+        (WebCore::RenderStyle::diff):
+        (WebCore::RenderStyle::colorIncludingFallback):
+        (WebCore::RenderStyle::visitedDependentColor):
+        There is no proper way to check if a property has been set or not, so if
+        text decoration color fallbacks to default color, it would override the
+        check for 'text-fill-color' and 'text-stroke-color' properties on
+        WebCore::decorationColor() static function, changing current behavior,
+        which can be verified by new failing layout tests (ie.
+        fast/text/stroking-decorations.html).
+
+        * rendering/style/RenderStyle.h:
+        Added {non-}visited text decoration color getters and setters.
+
+        * rendering/style/StyleRareNonInheritedData.cpp:
+        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+        (WebCore::StyleRareNonInheritedData::operator==):
+        Added {non-}visited text decoration color variables initialization to
+        copy constructor and operator assignment functions.
+
+        * rendering/style/StyleRareNonInheritedData.h:
+        (StyleRareNonInheritedData):
+        Added here as this property is not used regularly.
+
</ins><span class="cx"> 2013-03-13  Rik Cabanier  &lt;cabanier@adobe.com&gt;
</span><span class="cx"> 
</span><span class="cx">         create runtime flags for CSS Compositing
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -190,6 +190,7 @@
</span><span class="cx"> #if ENABLE(CSS3_TEXT)
</span><span class="cx">     CSSPropertyWebkitTextDecorationLine,
</span><span class="cx">     CSSPropertyWebkitTextDecorationStyle,
</span><ins>+    CSSPropertyWebkitTextDecorationColor,
</ins><span class="cx">     CSSPropertyWebkitTextAlignLast,
</span><span class="cx">     CSSPropertyWebkitTextUnderlinePosition,
</span><span class="cx"> #endif // CSS3_TEXT
</span><span class="lines">@@ -2154,6 +2155,8 @@
</span><span class="cx">             return renderTextDecorationFlagsToCSSValue(style-&gt;textDecoration());
</span><span class="cx">         case CSSPropertyWebkitTextDecorationStyle:
</span><span class="cx">             return renderTextDecorationStyleFlagsToCSSValue(style-&gt;textDecorationStyle());
</span><ins>+        case CSSPropertyWebkitTextDecorationColor:
+            return currentColorOrValidColor(style.get(), style-&gt;textDecorationColor());
</ins><span class="cx">         case CSSPropertyWebkitTextAlignLast:
</span><span class="cx">             return cssValuePool().createValue(style-&gt;textAlignLast());
</span><span class="cx">         case CSSPropertyWebkitTextUnderlinePosition:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -515,6 +515,9 @@
</span><span class="cx">     case CSSPropertyWebkitBorderEndColor:
</span><span class="cx">     case CSSPropertyWebkitBorderStartColor:
</span><span class="cx">     case CSSPropertyWebkitColumnRuleColor:
</span><ins>+#if ENABLE(CSS3_TEXT)
+    case CSSPropertyWebkitTextDecorationColor:
+#endif // CSS3_TEXT
</ins><span class="cx">     case CSSPropertyWebkitTextEmphasisColor:
</span><span class="cx">     case CSSPropertyWebkitTextFillColor:
</span><span class="cx">     case CSSPropertyWebkitTextStrokeColor:
</span><span class="lines">@@ -1979,6 +1982,9 @@
</span><span class="cx">     case CSSPropertyTextUnderlineColor:
</span><span class="cx">     case CSSPropertyTextOverlineColor:
</span><span class="cx">     case CSSPropertyWebkitColumnRuleColor:
</span><ins>+#if ENABLE(CSS3_TEXT)
+    case CSSPropertyWebkitTextDecorationColor:
+#endif // CSS3_TEXT
</ins><span class="cx">     case CSSPropertyWebkitTextEmphasisColor:
</span><span class="cx">     case CSSPropertyWebkitTextFillColor:
</span><span class="cx">     case CSSPropertyWebkitTextStrokeColor:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSProperty.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSProperty.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/CSSProperty.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -642,6 +642,7 @@
</span><span class="cx">     case CSSPropertyWebkitPerspectiveOriginY:
</span><span class="cx"> #if ENABLE(CSS3_TEXT)
</span><span class="cx">     case CSSPropertyWebkitTextDecorationStyle:
</span><ins>+    case CSSPropertyWebkitTextDecorationColor:
</ins><span class="cx"> #endif // CSS3_TEXT
</span><span class="cx">     case CSSPropertyWebkitTransform:
</span><span class="cx">     case CSSPropertyWebkitTransformOrigin:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -371,6 +371,7 @@
</span><span class="cx"> #if defined(ENABLE_CSS3_TEXT) &amp;&amp; ENABLE_CSS3_TEXT
</span><span class="cx"> -webkit-text-decoration-line
</span><span class="cx"> -webkit-text-decoration-style
</span><ins>+-webkit-text-decoration-color
</ins><span class="cx"> -webkit-text-align-last
</span><span class="cx"> -webkit-text-underline-position
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilder.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilder.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/StyleBuilder.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -1931,6 +1931,7 @@
</span><span class="cx"> #if ENABLE(CSS3_TEXT)
</span><span class="cx">     setPropertyHandler(CSSPropertyWebkitTextDecorationLine, ApplyPropertyTextDecoration::createHandler());
</span><span class="cx">     setPropertyHandler(CSSPropertyWebkitTextDecorationStyle, ApplyPropertyDefault&lt;TextDecorationStyle, &amp;RenderStyle::textDecorationStyle, TextDecorationStyle, &amp;RenderStyle::setTextDecorationStyle, TextDecorationStyle, &amp;RenderStyle::initialTextDecorationStyle&gt;::createHandler());
</span><ins>+    setPropertyHandler(CSSPropertyWebkitTextDecorationColor, ApplyPropertyColor&lt;NoInheritFromParent, &amp;RenderStyle::textDecorationColor, &amp;RenderStyle::setTextDecorationColor, &amp;RenderStyle::setVisitedLinkTextDecorationColor, &amp;RenderStyle::color&gt;::createHandler());
</ins><span class="cx">     setPropertyHandler(CSSPropertyWebkitTextAlignLast, ApplyPropertyDefault&lt;TextAlignLast, &amp;RenderStyle::textAlignLast, TextAlignLast, &amp;RenderStyle::setTextAlignLast, TextAlignLast, &amp;RenderStyle::initialTextAlignLast&gt;::createHandler());
</span><span class="cx">     setPropertyHandler(CSSPropertyWebkitTextUnderlinePosition, ApplyPropertyTextUnderlinePosition::createHandler());
</span><span class="cx"> #endif // CSS3_TEXT
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -1978,6 +1978,9 @@
</span><span class="cx">     case CSSPropertyColor:
</span><span class="cx">     case CSSPropertyOutlineColor:
</span><span class="cx">     case CSSPropertyWebkitColumnRuleColor:
</span><ins>+#if ENABLE(CSS3_TEXT)
+    case CSSPropertyWebkitTextDecorationColor:
+#endif // CSS3_TEXT
</ins><span class="cx">     case CSSPropertyWebkitTextEmphasisColor:
</span><span class="cx">     case CSSPropertyWebkitTextFillColor:
</span><span class="cx">     case CSSPropertyWebkitTextStrokeColor:
</span><span class="lines">@@ -3253,6 +3256,7 @@
</span><span class="cx"> #if ENABLE(CSS3_TEXT)
</span><span class="cx">     case CSSPropertyWebkitTextDecorationLine:
</span><span class="cx">     case CSSPropertyWebkitTextDecorationStyle:
</span><ins>+    case CSSPropertyWebkitTextDecorationColor:
</ins><span class="cx">     case CSSPropertyWebkitTextAlignLast:
</span><span class="cx">     case CSSPropertyWebkitTextUnderlinePosition:
</span><span class="cx"> #endif // CSS3_TEXT
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -2804,6 +2804,12 @@
</span><span class="cx"> static Color decorationColor(RenderStyle* style)
</span><span class="cx"> {
</span><span class="cx">     Color result;
</span><ins>+#if ENABLE(CSS3_TEXT)
+    // Check for text decoration color first.
+    result = style-&gt;visitedDependentColor(CSSPropertyWebkitTextDecorationColor);
+    if (result.isValid())
+        return result;
+#endif // CSS3_TEXT
</ins><span class="cx">     if (style-&gt;textStrokeWidth() &gt; 0) {
</span><span class="cx">         // Prefer stroke color if possible but not if it's fully transparent.
</span><span class="cx">         result = style-&gt;visitedDependentColor(CSSPropertyWebkitTextStrokeColor);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -682,6 +682,7 @@
</span><span class="cx">         || rareNonInheritedData-&gt;m_borderFit != other-&gt;rareNonInheritedData-&gt;m_borderFit
</span><span class="cx"> #if ENABLE(CSS3_TEXT)
</span><span class="cx">         || rareNonInheritedData-&gt;m_textDecorationStyle != other-&gt;rareNonInheritedData-&gt;m_textDecorationStyle
</span><ins>+        || rareNonInheritedData-&gt;m_textDecorationColor != other-&gt;rareNonInheritedData-&gt;m_textDecorationColor
</ins><span class="cx"> #endif // CSS3_TEXT
</span><span class="cx">         || rareInheritedData-&gt;textFillColor != other-&gt;rareInheritedData-&gt;textFillColor
</span><span class="cx">         || rareInheritedData-&gt;textStrokeColor != other-&gt;rareInheritedData-&gt;textStrokeColor
</span><span class="lines">@@ -1427,6 +1428,11 @@
</span><span class="cx">     case CSSPropertyWebkitColumnRuleColor:
</span><span class="cx">         result = visitedLink ? visitedLinkColumnRuleColor() : columnRuleColor();
</span><span class="cx">         break;
</span><ins>+#if ENABLE(CSS3_TEXT)
+    case CSSPropertyWebkitTextDecorationColor:
+        // Text decoration color fallback is handled in RenderObject::decorationColor.
+        return visitedLink ? visitedLinkTextDecorationColor() : textDecorationColor();
+#endif // CSS3_TEXT
</ins><span class="cx">     case CSSPropertyWebkitTextEmphasisColor:
</span><span class="cx">         result = visitedLink ? visitedLinkTextEmphasisColor() : textEmphasisColor();
</span><span class="cx">         break;
</span><span class="lines">@@ -1458,6 +1464,12 @@
</span><span class="cx"> 
</span><span class="cx">     Color visitedColor = colorIncludingFallback(colorProperty, true);
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS3_TEXT)
+    // Text decoration color validity is preserved (checked in RenderObject::decorationColor).
+    if (colorProperty == CSSPropertyWebkitTextDecorationColor)
+        return visitedColor;
+#endif // CSS3_TEXT
+
</ins><span class="cx">     // FIXME: Technically someone could explicitly specify the color transparent, but for now we'll just
</span><span class="cx">     // assume that if the background color is transparent that it wasn't set. Note that it's weird that
</span><span class="cx">     // we're returning unvisited info for a visited link, but given our restriction that the alpha values
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -1346,6 +1346,9 @@
</span><span class="cx">     void setTransformOriginZ(float f) { SET_VAR(rareNonInheritedData.access()-&gt;m_transform, m_z, f); }
</span><span class="cx">     void setSpeak(ESpeak s) { SET_VAR(rareInheritedData, speak, s); }
</span><span class="cx">     void setTextCombine(TextCombine v) { SET_VAR(rareNonInheritedData, m_textCombine, v); }
</span><ins>+#if ENABLE(CSS3_TEXT)
+    void setTextDecorationColor(const Color&amp; c) { SET_VAR(rareNonInheritedData, m_textDecorationColor, c); }
+#endif // CSS3_TEXT
</ins><span class="cx">     void setTextEmphasisColor(const Color&amp; c) { SET_VAR(rareInheritedData, textEmphasisColor, c); }
</span><span class="cx">     void setTextEmphasisFill(TextEmphasisFill fill) { SET_VAR(rareInheritedData, textEmphasisFill, fill); }
</span><span class="cx">     void setTextEmphasisMark(TextEmphasisMark mark) { SET_VAR(rareInheritedData, textEmphasisMark, mark); }
</span><span class="lines">@@ -1749,6 +1752,9 @@
</span><span class="cx">     void setVisitedLinkBorderTopColor(const Color&amp; v) { SET_VAR(rareNonInheritedData, m_visitedLinkBorderTopColor, v); }
</span><span class="cx">     void setVisitedLinkOutlineColor(const Color&amp; v) { SET_VAR(rareNonInheritedData, m_visitedLinkOutlineColor, v); }
</span><span class="cx">     void setVisitedLinkColumnRuleColor(const Color&amp; v) { SET_VAR(rareNonInheritedData.access()-&gt;m_multiCol, m_visitedLinkColumnRuleColor, v); }
</span><ins>+#if ENABLE(CSS3_TEXT)
+    void setVisitedLinkTextDecorationColor(const Color&amp; v) { SET_VAR(rareNonInheritedData, m_visitedLinkTextDecorationColor, v); }
+#endif // CSS3_TEXT
</ins><span class="cx">     void setVisitedLinkTextEmphasisColor(const Color&amp; v) { SET_VAR(rareInheritedData, visitedLinkTextEmphasisColor, v); }
</span><span class="cx">     void setVisitedLinkTextFillColor(const Color&amp; v) { SET_VAR(rareInheritedData, visitedLinkTextFillColor, v); }
</span><span class="cx">     void setVisitedLinkTextStrokeColor(const Color&amp; v) { SET_VAR(rareInheritedData, visitedLinkTextStrokeColor, v); }
</span><span class="lines">@@ -1799,6 +1805,10 @@
</span><span class="cx">     Color visitedLinkBorderTopColor() const { return rareNonInheritedData-&gt;m_visitedLinkBorderTopColor; }
</span><span class="cx">     Color visitedLinkOutlineColor() const { return rareNonInheritedData-&gt;m_visitedLinkOutlineColor; }
</span><span class="cx">     Color visitedLinkColumnRuleColor() const { return rareNonInheritedData-&gt;m_multiCol-&gt;m_visitedLinkColumnRuleColor; }
</span><ins>+#if ENABLE(CSS3_TEXT)
+    Color textDecorationColor() const { return rareNonInheritedData-&gt;m_textDecorationColor; }
+    Color visitedLinkTextDecorationColor() const { return rareNonInheritedData-&gt;m_visitedLinkTextDecorationColor; }
+#endif // CSS3_TEXT
</ins><span class="cx">     Color visitedLinkTextEmphasisColor() const { return rareInheritedData-&gt;visitedLinkTextEmphasisColor; }
</span><span class="cx">     Color visitedLinkTextFillColor() const { return rareInheritedData-&gt;visitedLinkTextFillColor; }
</span><span class="cx">     Color visitedLinkTextStrokeColor() const { return rareInheritedData-&gt;visitedLinkTextStrokeColor; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -129,6 +129,10 @@
</span><span class="cx">     , m_shapeMargin(o.m_shapeMargin)
</span><span class="cx">     , m_shapePadding(o.m_shapePadding)
</span><span class="cx">     , m_clipPath(o.m_clipPath)
</span><ins>+#if ENABLE(CSS3_TEXT)
+    , m_textDecorationColor(o.m_textDecorationColor)
+    , m_visitedLinkTextDecorationColor(o.m_visitedLinkTextDecorationColor)
+#endif // CSS3_TEXT
</ins><span class="cx">     , m_visitedLinkBackgroundColor(o.m_visitedLinkBackgroundColor)
</span><span class="cx">     , m_visitedLinkOutlineColor(o.m_visitedLinkOutlineColor)
</span><span class="cx">     , m_visitedLinkBorderLeftColor(o.m_visitedLinkBorderLeftColor)
</span><span class="lines">@@ -214,6 +218,10 @@
</span><span class="cx">         &amp;&amp; m_shapeMargin == o.m_shapeMargin
</span><span class="cx">         &amp;&amp; m_shapePadding == o.m_shapePadding
</span><span class="cx">         &amp;&amp; m_clipPath == o.m_clipPath
</span><ins>+#if ENABLE(CSS3_TEXT)
+        &amp;&amp; m_textDecorationColor == o.m_textDecorationColor
+        &amp;&amp; m_visitedLinkTextDecorationColor == o.m_visitedLinkTextDecorationColor
+#endif // CSS3_TEXT
</ins><span class="cx">         &amp;&amp; m_visitedLinkBackgroundColor == o.m_visitedLinkBackgroundColor
</span><span class="cx">         &amp;&amp; m_visitedLinkOutlineColor == o.m_visitedLinkOutlineColor
</span><span class="cx">         &amp;&amp; m_visitedLinkBorderLeftColor == o.m_visitedLinkBorderLeftColor
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h (145784 => 145785)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h        2013-03-14 03:52:55 UTC (rev 145784)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h        2013-03-14 04:06:20 UTC (rev 145785)
</span><span class="lines">@@ -145,6 +145,10 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ClipPathOperation&gt; m_clipPath;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS3_TEXT)
+    Color m_textDecorationColor;
+    Color m_visitedLinkTextDecorationColor;
+#endif // CSS3_TEXT
</ins><span class="cx">     Color m_visitedLinkBackgroundColor;
</span><span class="cx">     Color m_visitedLinkOutlineColor;
</span><span class="cx">     Color m_visitedLinkBorderLeftColor;
</span></span></pre>
</div>
</div>

</body>
</html>