<!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>[160299] 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/160299">160299</a></dd>
<dt>Author</dt> <dd>rniwa@webkit.org</dd>
<dt>Date</dt> <dd>2013-12-08 21:13:49 -0800 (Sun, 08 Dec 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>getComputedStyle border-radius shorthand omits vertical radius information
https://bugs.webkit.org/show_bug.cgi?id=125394

Reviewed by Andreas Kling.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/4c2866855dddbb28bb7d978ad627acc368af23d0

getComputedStyle of border-radius shows the vertical radius components if they differ from their horizontal counterpants.
We were incorrectly detecting this case and over simplifying the results of getComputedStyle.
This patch ensures we only hide the vertical values if they are identical to the horizontal values.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::getBorderRadiusShorthandValue):

LayoutTests:

* fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandexpectedtxt">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandhtml">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (160298 => 160299)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2013-12-09 04:51:32 UTC (rev 160298)
+++ trunk/LayoutTests/ChangeLog        2013-12-09 05:13:49 UTC (rev 160299)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2013-12-08  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
+
+        getComputedStyle border-radius shorthand omits vertical radius information
+        https://bugs.webkit.org/show_bug.cgi?id=125394
+
+        Reviewed by Andreas Kling.
+
+        * fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt:
+        * fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html:
+
</ins><span class="cx"> 2013-12-08  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed GTK gardening.
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt (160298 => 160299)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt        2013-12-09 04:51:32 UTC (rev 160298)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand-expected.txt        2013-12-09 05:13:49 UTC (rev 160299)
</span><span class="lines">@@ -83,6 +83,38 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '4px 7px'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '6px 8px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><ins>+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 15px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 15px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px 15px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px 25px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 25px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px 25px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 20px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 20px 35px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px 35px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
+PASS computedStyle.getPropertyValue('border-radius') is '10px 20px 30px 40px / 10px 20px 30px 45px'
+PASS computedStyle.getPropertyCSSValue('border-radius').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border-radius').cssText is '10px 20px 30px 40px / 10px 20px 30px 45px'
+PASS computedStyle.getPropertyCSSValue('border-top-left-radius').cssText is '10px'
+PASS computedStyle.getPropertyCSSValue('border-top-right-radius').cssText is '20px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText is '30px'
+PASS computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText is '40px 45px'
+PASS checkComputedStyleValue() is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStyleborderradiusshorthandhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html (160298 => 160299)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html        2013-12-09 04:51:32 UTC (rev 160298)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand.html        2013-12-09 05:13:49 UTC (rev 160299)
</span><span class="lines">@@ -15,17 +15,17 @@
</span><span class="cx"> 
</span><span class="cx"> testContainer.innerHTML = '&lt;div style=&quot;width:100px;height:100px&quot;&gt;&lt;div id=&quot;test&quot;&gt;hello&lt;/div&gt;&lt;/div&gt;';
</span><span class="cx"> 
</span><del>-e = document.getElementById('test');
-computedStyle = window.getComputedStyle(e, null);
</del><ins>+var element = document.getElementById('test');
+var computedStyle = window.getComputedStyle(element, null);
</ins><span class="cx"> 
</span><span class="cx"> function checkComputedStyleValue() {
</span><del>-    var before = window.getComputedStyle(e, null).getPropertyValue('border-radius');
-    e.style.background = 'none';
-    e.style.background = before;
-    return (window.getComputedStyle(e, null).getPropertyValue('border-radius') == before);
</del><ins>+    var before = window.getComputedStyle(element, null).getPropertyValue('border-radius');
+    element.style.background = 'none';
+    element.style.background = before;
+    return (window.getComputedStyle(element, null).getPropertyValue('border-radius') == before);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;4em&quot;;
</del><ins>+element.style.borderRadius = &quot;4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;2em 1em 4em / 0.5em 3em&quot;;
</del><ins>+element.style.borderRadius = &quot;2em 1em 4em / 0.5em 3em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'32px 16px 64px / 8px 48px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'32px 16px 64px / 8px 48px'&quot;);
</span><span class="lines">@@ -45,11 +45,11 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'16px 48px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;&quot;;
-e.style.borderTopLeftRadius = &quot;4em&quot;;
-e.style.borderTopRightRadius = &quot;4em&quot;;
-e.style.borderBottomLeftRadius = &quot;4em&quot;;
-e.style.borderBottomRightRadius = &quot;4em&quot;;
</del><ins>+element.style.borderRadius = &quot;&quot;;
+element.style.borderTopLeftRadius = &quot;4em&quot;;
+element.style.borderTopRightRadius = &quot;4em&quot;;
+element.style.borderBottomLeftRadius = &quot;4em&quot;;
+element.style.borderBottomRightRadius = &quot;4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px'&quot;);
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'2px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px'&quot;);
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'2px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px'&quot;);
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px'&quot;);
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 64px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px'&quot;);
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px'&quot;);
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 3px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><del>-e.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px 8px&quot;;
</del><ins>+element.style.borderRadius = &quot;1px 2px 4px 6px / 4em 3px 7px 8px&quot;;
</ins><span class="cx"> shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px 8px'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'1px 2px 4px 6px / 64px 3px 7px 8px'&quot;);
</span><span class="lines">@@ -129,6 +129,46 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'6px 8px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><ins>+element.style.borderRadius = &quot;10px 20px 30px 40px / 15px 25px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 15px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 15px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px 15px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px 25px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 25px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 25px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px 25px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 20px 35px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 20px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 20px 35px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px 35px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
+element.style.borderRadius = &quot;10px 20px 30px 40px / 10px 20px 30px 45px&quot;;
+shouldBe(&quot;computedStyle.getPropertyValue('border-radius')&quot;, &quot;'10px 20px 30px 40px / 10px 20px 30px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').toString()&quot;, &quot;'[object CSSValueList]'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-radius').cssText&quot;, &quot;'10px 20px 30px 40px / 10px 20px 30px 45px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-left-radius').cssText&quot;, &quot;'10px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-top-right-radius').cssText&quot;, &quot;'20px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-right-radius').cssText&quot;, &quot;'30px'&quot;);
+shouldBe(&quot;computedStyle.getPropertyCSSValue('border-bottom-left-radius').cssText&quot;, &quot;'40px 45px'&quot;);
+shouldBe(&quot;checkComputedStyleValue()&quot;, &quot;true&quot;);
+
</ins><span class="cx"> document.body.removeChild(testContainer);
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (160298 => 160299)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-12-09 04:51:32 UTC (rev 160298)
+++ trunk/Source/WebCore/ChangeLog        2013-12-09 05:13:49 UTC (rev 160299)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2013-12-08  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
+
+        getComputedStyle border-radius shorthand omits vertical radius information
+        https://bugs.webkit.org/show_bug.cgi?id=125394
+
+        Reviewed by Andreas Kling.
+
+        Merge https://chromium.googlesource.com/chromium/blink/+/4c2866855dddbb28bb7d978ad627acc368af23d0
+
+        getComputedStyle of border-radius shows the vertical radius components if they differ from their horizontal counterpants.
+        We were incorrectly detecting this case and over simplifying the results of getComputedStyle.
+        This patch ensures we only hide the vertical values if they are identical to the horizontal values.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::getBorderRadiusShorthandValue):
+
</ins><span class="cx"> 2013-12-08  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Do not skip attributes with only custom setter
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (160298 => 160299)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-12-09 04:51:32 UTC (rev 160298)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-12-09 05:13:49 UTC (rev 160299)
</span><span class="lines">@@ -746,7 +746,6 @@
</span><span class="cx">     bool showVerticalBottomLeft = style-&gt;borderTopRightRadius().height() != style-&gt;borderBottomLeftRadius().height();
</span><span class="cx">     bool showVerticalBottomRight = showVerticalBottomLeft || (style-&gt;borderBottomRightRadius().height() != style-&gt;borderTopLeftRadius().height());
</span><span class="cx">     bool showVerticalTopRight = showVerticalBottomRight || (style-&gt;borderTopRightRadius().height() != style-&gt;borderTopLeftRadius().height());
</span><del>-    bool showVerticalTopLeft = (style-&gt;borderTopLeftRadius().width() != style-&gt;borderTopLeftRadius().height());
</del><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CSSValueList&gt; topLeftRadius = getBorderRadiusCornerValues(style-&gt;borderTopLeftRadius(), style, renderView);
</span><span class="cx">     RefPtr&lt;CSSValueList&gt; topRightRadius = getBorderRadiusCornerValues(style-&gt;borderTopRightRadius(), style, renderView);
</span><span class="lines">@@ -764,17 +763,18 @@
</span><span class="cx"> 
</span><span class="cx">     list.get().append(horizontalRadii.release());
</span><span class="cx"> 
</span><del>-    if (showVerticalTopLeft) {
-        RefPtr&lt;CSSValueList&gt; verticalRadii = CSSValueList::createSpaceSeparated();
-        verticalRadii-&gt;append(topLeftRadius-&gt;item(1));
-        if (showVerticalTopRight)
-            verticalRadii-&gt;append(topRightRadius-&gt;item(1));
-        if (showVerticalBottomRight)
-            verticalRadii-&gt;append(bottomRightRadius-&gt;item(1));
-        if (showVerticalBottomLeft)
-            verticalRadii-&gt;append(bottomLeftRadius-&gt;item(1));
-        list.get().append(verticalRadii.release());
-    }
</del><ins>+    RefPtr&lt;CSSValueList&gt; verticalRadiiList = CSSValueList::createSpaceSeparated();
+    verticalRadiiList-&gt;append(topLeftRadius-&gt;item(1));
+    if (showVerticalTopRight)
+        verticalRadiiList-&gt;append(topRightRadius-&gt;item(1));
+    if (showVerticalBottomRight)
+        verticalRadiiList-&gt;append(bottomRightRadius-&gt;item(1));
+    if (showVerticalBottomLeft)
+        verticalRadiiList-&gt;append(bottomLeftRadius-&gt;item(1));
+
+    if (!verticalRadiiList-&gt;equals(*toCSSValueList(list.get().item(0))))
+        list.get().append(verticalRadiiList.release());
+
</ins><span class="cx">     return list;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>