<!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>[46508] 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/46508">46508</a></dd>
<dt>Author</dt> <dd>mitz@apple.com</dd>
<dt>Date</dt> <dd>2009-07-28 17:16:53 -0700 (Tue, 28 Jul 2009)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebCore:

        Reviewed by Simon Fraser.

        [CSS3 Backgrounds and Borders] Drop the prefix from the border-radius
        properties
        https://bugs.webkit.org/show_bug.cgi?id=27578

        [CSS3 Backgrounds and Borders] Handle the / and 4 values in
        border-radius
        https://bugs.webkit.org/show_bug.cgi?id=27584

        Test: fast/borders/border-radius-parsing.html

        Dropped the -webkit- prefix from the individual corner border-radius
        properties. Added border-radius with the / and 4-value syntax, and
        maintained -webkit-border-radius with legacy 2-value syntax.

        * css/CSSComputedStyleDeclaration.cpp:
        (computedProperties): Removed Webkit prefix.
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): Ditto.
        * css/CSSParser.cpp:
        (WebCore::CSSParser::parseValue): Removed Webkit prefix from the
            single-corner properties. Call out to parseBorderRadius() to parse
            border-radius and -webkit-border-radius. 
        (WebCore::completeBorderRadii): Added this helper function that
            completes the values for all four corners when fewer than four are
            specified.
        (WebCore::CSSParser::parseBorderRadius): Added.
        (WebCore::cssPropertyID): Map -webkit-border-*-*-radius to the
            unprefixed property.
        * css/CSSParser.h:
        * css/CSSPropertyLonghand.cpp:
        (WebCore::initShorthandMap): Removed the Webkit prefix. Added an entry
            for border-radius. Kept the entry for -webkit-border-radius.
        * css/CSSPropertyNames.in: Removed the -webkit- prefix from the
            single-corenr properties. Added border-radius. Kept
            -webkit-border-radius because of its conflicting syntax.
        * css/CSSStyleSelector.cpp:
        (WebCore::CSSStyleSelector::applyProperty): Removed the Webkit prefix.
        * page/animation/AnimationBase.cpp:
        (WebCore::ensurePropertyMap): Ditto.

LayoutTests:

        Reviewed by Simon Fraser.

        New test, updated test, and updated test results for:

        [CSS3 Backgrounds and Borders] Drop the prefix from the border-radius
        properties
        https://bugs.webkit.org/show_bug.cgi?id=27578

        [CSS3 Backgrounds and Borders] Handle the / and 4 values in
        border-radius
        https://bugs.webkit.org/show_bug.cgi?id=27584

        * fast/borders/border-radius-parsing-expected.txt: Added.
        * fast/borders/border-radius-parsing.html: Added.
        * fast/css/remove-shorthand-expected.txt:
        * fast/css/remove-shorthand.html: Added a test for border-radius.
        * platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
        * platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastcssremoveshorthandexpectedtxt">trunk/LayoutTests/fast/css/remove-shorthand-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssremoveshorthandhtml">trunk/LayoutTests/fast/css/remove-shorthand.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastcssgetComputedStylecomputedstyleexpectedtxt">trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastcssgetComputedStylecomputedstylewithoutrendererexpectedtxt">trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvgcssgetComputedStylebasicexpectedtxt">trunk/LayoutTests/svg/css/getComputedStyle-basic-expected.txt</a></li>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCorecssCSSComputedStyleDeclarationcpp">trunk/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkWebCorecssCSSParsercpp">trunk/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkWebCorecssCSSParserh">trunk/WebCore/css/CSSParser.h</a></li>
<li><a href="#trunkWebCorecssCSSPropertyLonghandcpp">trunk/WebCore/css/CSSPropertyLonghand.cpp</a></li>
<li><a href="#trunkWebCorecssCSSPropertyNamesin">trunk/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkWebCorecssCSSStyleSelectorcpp">trunk/WebCore/css/CSSStyleSelector.cpp</a></li>
<li><a href="#trunkWebCorepageanimationAnimationBasecpp">trunk/WebCore/page/animation/AnimationBase.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastbordersborderradiusparsingexpectedtxt">trunk/LayoutTests/fast/borders/border-radius-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbordersborderradiusparsinghtml">trunk/LayoutTests/fast/borders/border-radius-parsing.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/ChangeLog        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2009-07-28  Dan Bernstein  &lt;mitz@apple.com&gt;
+
+        Reviewed by Simon Fraser.
+
+        New test, updated test, and updated test results for:
+
+        [CSS3 Backgrounds and Borders] Drop the prefix from the border-radius
+        properties
+        https://bugs.webkit.org/show_bug.cgi?id=27578
+
+        [CSS3 Backgrounds and Borders] Handle the / and 4 values in
+        border-radius
+        https://bugs.webkit.org/show_bug.cgi?id=27584
+
+        * fast/borders/border-radius-parsing-expected.txt: Added.
+        * fast/borders/border-radius-parsing.html: Added.
+        * fast/css/remove-shorthand-expected.txt:
+        * fast/css/remove-shorthand.html: Added a test for border-radius.
+        * platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * svg/css/getComputedStyle-basic-expected.txt:
+
</ins><span class="cx"> 2009-07-28  Brian Weinstein  &lt;bweinstein@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rubber-stamped by Adam Roben.
</span></span></pre></div>
<a id="trunkLayoutTestsfastbordersborderradiusparsingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/borders/border-radius-parsing-expected.txt (0 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/borders/border-radius-parsing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/borders/border-radius-parsing-expected.txt        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+Testing border-radius: 10px;
+SUCCESS
+Testing border-radius: 10px 20px;
+SUCCESS
+Testing -webkit-border-radius: 10px 20px;
+SUCCESS
+Testing border-radius: 10px 20px 30px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px 50px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px 25px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px 25px 35px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px 25px 35px 45px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px 25px 35px 45px 55px;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / 15px 25px 35px 45px /;
+SUCCESS
+Testing border-radius: 10px 20px 30px 40px / / 25px 35px 45px;
+SUCCESS
+Testing border-radius: / 10px 20px 30px 40px;
+SUCCESS
+Testing border-radius: 10px / 20px 30px 40px;
+SUCCESS
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastbordersborderradiusparsinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/borders/border-radius-parsing.html (0 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/borders/border-radius-parsing.html                                (rev 0)
+++ trunk/LayoutTests/fast/borders/border-radius-parsing.html        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;pre id=&quot;console&quot;&gt;&lt;/pre&gt;
+&lt;script&gt;
+    function log(message)
+    {
+        document.getElementById(&quot;console&quot;).appendChild(document.createTextNode(message + &quot;\n&quot;));
+    }
+
+    function testBorderRadiusValue(property, value, expectedRadii)
+    {
+        log (&quot;Testing &quot; + property + &quot;: &quot; + value + &quot;;&quot;);
+
+        var element = document.createElement(&quot;div&quot;);
+        document.body.appendChild(element);
+        element.style.setProperty(property, value);
+        var computedStyle = getComputedStyle(element);
+        var properties = [&quot;border-top-left-radius&quot;, &quot;border-top-right-radius&quot;,
+                          &quot;border-bottom-right-radius&quot;, &quot;border-bottom-left-radius&quot;];
+        var failed = false;
+        for (var i = 0; i &lt; 4; ++i) {
+            actualRadius = computedStyle.getPropertyValue(properties[i]);
+            if (actualRadius === expectedRadii[i])
+                continue;
+
+            failed = true;
+            log(&quot;FAILED: &quot; + properties[i] + &quot; was &quot; + actualRadius + &quot; instead of &quot; + expectedRadii[i])
+        }
+        if (!failed)
+            log(&quot;SUCCESS&quot;);
+        document.body.removeChild(element);
+    }
+
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px&quot;, [&quot;10px&quot;, &quot;10px&quot;, &quot;10px&quot;, &quot;10px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px&quot;, [&quot;10px&quot;, &quot;20px&quot;, &quot;10px&quot;, &quot;20px&quot;]);
+    testBorderRadiusValue(&quot;-webkit-border-radius&quot;, &quot;10px 20px&quot;, [&quot;10px 20px&quot;, &quot;10px 20px&quot;, &quot;10px 20px&quot;, &quot;10px 20px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px&quot;, [&quot;10px&quot;, &quot;20px&quot;, &quot;30px&quot;, &quot;20px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px&quot;, [&quot;10px&quot;, &quot;20px&quot;, &quot;30px&quot;, &quot;40px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px 50px&quot;, [&quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px&quot;, [&quot;10px 15px&quot;, &quot;20px 15px&quot;, &quot;30px 15px&quot;, &quot;40px 15px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px 25px&quot;, [&quot;10px 15px&quot;, &quot;20px 25px&quot;, &quot;30px 15px&quot;, &quot;40px 25px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px 25px 35px&quot;, [&quot;10px 15px&quot;, &quot;20px 25px&quot;, &quot;30px 35px&quot;, &quot;40px 25px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px 25px 35px 45px&quot;, [&quot;10px 15px&quot;, &quot;20px 25px&quot;, &quot;30px 35px&quot;, &quot;40px 45px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px 25px 35px 45px 55px&quot;, [&quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / 15px 25px 35px 45px /&quot;, [&quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px 20px 30px 40px / / 25px 35px 45px&quot;, [&quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;/ 10px 20px 30px 40px&quot;, [&quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;, &quot;0px&quot;]);
+    testBorderRadiusValue(&quot;border-radius&quot;, &quot;10px / 20px 30px 40px&quot;, [&quot;10px 20px&quot;, &quot;10px 30px&quot;, &quot;10px 40px&quot;, &quot;10px 30px&quot;]);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssremoveshorthandexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/remove-shorthand-expected.txt (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/remove-shorthand-expected.txt        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/fast/css/remove-shorthand-expected.txt        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -12,7 +12,8 @@
</span><span class="cx"> Removing border-color removes border-top-color, border-right-color, border-bottom-color, border-left-color.
</span><span class="cx"> Removing border-style removes border-top-style, border-right-style, border-bottom-style, border-left-style.
</span><span class="cx"> Removing border-width removes border-top-width, border-right-width, border-bottom-width, border-left-width.
</span><del>-Removing -webkit-border-radius removes -webkit-border-top-right-radius, -webkit-border-top-left-radius, -webkit-border-bottom-left-radius, -webkit-border-bottom-right-radius.
</del><ins>+Removing border-radius removes border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius.
+Removing -webkit-border-radius removes border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius.
</ins><span class="cx"> Removing border-spacing removes -webkit-border-horizontal-spacing, -webkit-border-vertical-spacing.
</span><span class="cx"> Removing -webkit-columns removes -webkit-column-width, -webkit-column-count.
</span><span class="cx"> Removing -webkit-column-rule removes -webkit-column-rule-width, -webkit-column-rule-style, -webkit-column-rule-color.
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssremoveshorthandhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/remove-shorthand.html (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/remove-shorthand.html        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/fast/css/remove-shorthand.html        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx">                 &quot;border&quot;,
</span><span class="cx">                 &quot;border-top&quot;, &quot;border-right&quot;, &quot;border-bottom&quot;, &quot;border-left&quot;,
</span><span class="cx">                 &quot;border-color&quot;, &quot;border-style&quot;, &quot;border-width&quot;,
</span><ins>+                &quot;border-radius&quot;,
</ins><span class="cx">                 &quot;-webkit-border-radius&quot;,
</span><span class="cx">                 &quot;border-spacing&quot;,
</span><span class="cx">                 &quot;-webkit-columns&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastcssgetComputedStylecomputedstyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -8,6 +8,8 @@
</span><span class="cx"> background-position: 0% 0%;
</span><span class="cx"> background-repeat: repeat;
</span><span class="cx"> border-bottom-color: rgb(0, 0, 0);
</span><ins>+border-bottom-left-radius: 0px;
+border-bottom-right-radius: 0px;
</ins><span class="cx"> border-bottom-style: none;
</span><span class="cx"> border-bottom-width: 0px;
</span><span class="cx"> border-collapse: separate;
</span><span class="lines">@@ -18,6 +20,8 @@
</span><span class="cx"> border-right-style: none;
</span><span class="cx"> border-right-width: 0px;
</span><span class="cx"> border-top-color: rgb(0, 0, 0);
</span><ins>+border-top-left-radius: 0px;
+border-top-right-radius: 0px;
</ins><span class="cx"> border-top-style: none;
</span><span class="cx"> border-top-width: 0px;
</span><span class="cx"> bottom: auto;
</span><span class="lines">@@ -100,13 +104,9 @@
</span><span class="cx"> -webkit-background-composite: source-over;
</span><span class="cx"> -webkit-background-origin: padding-box;
</span><span class="cx"> -webkit-background-size: auto auto;
</span><del>--webkit-border-bottom-left-radius: 0px;
--webkit-border-bottom-right-radius: 0px;
</del><span class="cx"> -webkit-border-fit: border;
</span><span class="cx"> -webkit-border-horizontal-spacing: 0px;
</span><span class="cx"> -webkit-border-image: none;
</span><del>--webkit-border-top-left-radius: 0px;
--webkit-border-top-right-radius: 0px;
</del><span class="cx"> -webkit-border-vertical-spacing: 0px;
</span><span class="cx"> -webkit-box-align: stretch;
</span><span class="cx"> -webkit-box-direction: normal;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastcssgetComputedStylecomputedstylewithoutrendererexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -7,6 +7,8 @@
</span><span class="cx">     background-position: 0% 0%
</span><span class="cx">     background-repeat: repeat
</span><span class="cx">     border-bottom-color: rgb(0, 0, 0)
</span><ins>+    border-bottom-left-radius: 0px
+    border-bottom-right-radius: 0px
</ins><span class="cx">     border-bottom-style: none
</span><span class="cx">     border-bottom-width: 0px
</span><span class="cx">     border-collapse: separate
</span><span class="lines">@@ -17,6 +19,8 @@
</span><span class="cx">     border-right-style: none
</span><span class="cx">     border-right-width: 0px
</span><span class="cx">     border-top-color: rgb(0, 0, 0)
</span><ins>+    border-top-left-radius: 0px
+    border-top-right-radius: 0px
</ins><span class="cx">     border-top-style: solid
</span><span class="cx">     border-top-width: 16px
</span><span class="cx">     bottom: auto
</span><span class="lines">@@ -99,13 +103,9 @@
</span><span class="cx">     -webkit-background-composite: source-over
</span><span class="cx">     -webkit-background-origin: padding-box
</span><span class="cx">     -webkit-background-size: auto auto
</span><del>-    -webkit-border-bottom-left-radius: 0px
-    -webkit-border-bottom-right-radius: 0px
</del><span class="cx">     -webkit-border-fit: border
</span><span class="cx">     -webkit-border-horizontal-spacing: 0px
</span><span class="cx">     -webkit-border-image: none
</span><del>-    -webkit-border-top-left-radius: 0px
-    -webkit-border-top-right-radius: 0px
</del><span class="cx">     -webkit-border-vertical-spacing: 0px
</span><span class="cx">     -webkit-box-align: stretch
</span><span class="cx">     -webkit-box-direction: normal
</span></span></pre></div>
<a id="trunkLayoutTestssvgcssgetComputedStylebasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/svg/css/getComputedStyle-basic-expected.txt (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/css/getComputedStyle-basic-expected.txt        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/LayoutTests/svg/css/getComputedStyle-basic-expected.txt        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -14,6 +14,10 @@
</span><span class="cx"> rect: style.getPropertyCSSValue(background-repeat) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(border-bottom-color) : rgb(0, 0, 0)
</span><span class="cx"> rect: style.getPropertyCSSValue(border-bottom-color) : [object CSSPrimitiveValue]
</span><ins>+rect: style.getPropertyValue(border-bottom-left-radius) : 0px
+rect: style.getPropertyCSSValue(border-bottom-left-radius) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(border-bottom-right-radius) : 0px
+rect: style.getPropertyCSSValue(border-bottom-right-radius) : [object CSSPrimitiveValue]
</ins><span class="cx"> rect: style.getPropertyValue(border-bottom-style) : none
</span><span class="cx"> rect: style.getPropertyCSSValue(border-bottom-style) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(border-bottom-width) : 0px
</span><span class="lines">@@ -34,6 +38,10 @@
</span><span class="cx"> rect: style.getPropertyCSSValue(border-right-width) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(border-top-color) : rgb(0, 0, 0)
</span><span class="cx"> rect: style.getPropertyCSSValue(border-top-color) : [object CSSPrimitiveValue]
</span><ins>+rect: style.getPropertyValue(border-top-left-radius) : 0px
+rect: style.getPropertyCSSValue(border-top-left-radius) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(border-top-right-radius) : 0px
+rect: style.getPropertyCSSValue(border-top-right-radius) : [object CSSPrimitiveValue]
</ins><span class="cx"> rect: style.getPropertyValue(border-top-style) : none
</span><span class="cx"> rect: style.getPropertyCSSValue(border-top-style) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(border-top-width) : 0px
</span><span class="lines">@@ -198,20 +206,12 @@
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-background-origin) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(-webkit-background-size) : auto auto
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-background-size) : [object CSSValueList]
</span><del>-rect: style.getPropertyValue(-webkit-border-bottom-left-radius) : 0px
-rect: style.getPropertyCSSValue(-webkit-border-bottom-left-radius) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-border-bottom-right-radius) : 0px
-rect: style.getPropertyCSSValue(-webkit-border-bottom-right-radius) : [object CSSPrimitiveValue]
</del><span class="cx"> rect: style.getPropertyValue(-webkit-border-fit) : border
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-border-fit) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(-webkit-border-horizontal-spacing) : 0px
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-border-horizontal-spacing) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(-webkit-border-image) : none
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-border-image) : [object CSSPrimitiveValue]
</span><del>-rect: style.getPropertyValue(-webkit-border-top-left-radius) : 0px
-rect: style.getPropertyCSSValue(-webkit-border-top-left-radius) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-border-top-right-radius) : 0px
-rect: style.getPropertyCSSValue(-webkit-border-top-right-radius) : [object CSSPrimitiveValue]
</del><span class="cx"> rect: style.getPropertyValue(-webkit-border-vertical-spacing) : 0px
</span><span class="cx"> rect: style.getPropertyCSSValue(-webkit-border-vertical-spacing) : [object CSSPrimitiveValue]
</span><span class="cx"> rect: style.getPropertyValue(-webkit-box-align) : stretch
</span><span class="lines">@@ -418,6 +418,10 @@
</span><span class="cx"> g: style.getPropertyCSSValue(background-repeat) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(border-bottom-color) : rgb(0, 0, 0)
</span><span class="cx"> g: style.getPropertyCSSValue(border-bottom-color) : [object CSSPrimitiveValue]
</span><ins>+g: style.getPropertyValue(border-bottom-left-radius) : 0px
+g: style.getPropertyCSSValue(border-bottom-left-radius) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(border-bottom-right-radius) : 0px
+g: style.getPropertyCSSValue(border-bottom-right-radius) : [object CSSPrimitiveValue]
</ins><span class="cx"> g: style.getPropertyValue(border-bottom-style) : none
</span><span class="cx"> g: style.getPropertyCSSValue(border-bottom-style) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(border-bottom-width) : 0px
</span><span class="lines">@@ -438,6 +442,10 @@
</span><span class="cx"> g: style.getPropertyCSSValue(border-right-width) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(border-top-color) : rgb(0, 0, 0)
</span><span class="cx"> g: style.getPropertyCSSValue(border-top-color) : [object CSSPrimitiveValue]
</span><ins>+g: style.getPropertyValue(border-top-left-radius) : 0px
+g: style.getPropertyCSSValue(border-top-left-radius) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(border-top-right-radius) : 0px
+g: style.getPropertyCSSValue(border-top-right-radius) : [object CSSPrimitiveValue]
</ins><span class="cx"> g: style.getPropertyValue(border-top-style) : none
</span><span class="cx"> g: style.getPropertyCSSValue(border-top-style) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(border-top-width) : 0px
</span><span class="lines">@@ -602,20 +610,12 @@
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-background-origin) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(-webkit-background-size) : auto auto
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-background-size) : [object CSSValueList]
</span><del>-g: style.getPropertyValue(-webkit-border-bottom-left-radius) : 0px
-g: style.getPropertyCSSValue(-webkit-border-bottom-left-radius) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-border-bottom-right-radius) : 0px
-g: style.getPropertyCSSValue(-webkit-border-bottom-right-radius) : [object CSSPrimitiveValue]
</del><span class="cx"> g: style.getPropertyValue(-webkit-border-fit) : border
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-border-fit) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(-webkit-border-horizontal-spacing) : 0px
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-border-horizontal-spacing) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(-webkit-border-image) : none
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-border-image) : [object CSSPrimitiveValue]
</span><del>-g: style.getPropertyValue(-webkit-border-top-left-radius) : 0px
-g: style.getPropertyCSSValue(-webkit-border-top-left-radius) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-border-top-right-radius) : 0px
-g: style.getPropertyCSSValue(-webkit-border-top-right-radius) : [object CSSPrimitiveValue]
</del><span class="cx"> g: style.getPropertyValue(-webkit-border-vertical-spacing) : 0px
</span><span class="cx"> g: style.getPropertyCSSValue(-webkit-border-vertical-spacing) : [object CSSPrimitiveValue]
</span><span class="cx"> g: style.getPropertyValue(-webkit-box-align) : stretch
</span></span></pre></div>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/ChangeLog        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -1,3 +1,46 @@
</span><ins>+2009-07-28  Dan Bernstein  &lt;mitz@apple.com&gt;
+
+        Reviewed by Simon Fraser.
+
+        [CSS3 Backgrounds and Borders] Drop the prefix from the border-radius
+        properties
+        https://bugs.webkit.org/show_bug.cgi?id=27578
+
+        [CSS3 Backgrounds and Borders] Handle the / and 4 values in
+        border-radius
+        https://bugs.webkit.org/show_bug.cgi?id=27584
+
+        Test: fast/borders/border-radius-parsing.html
+
+        Dropped the -webkit- prefix from the individual corner border-radius
+        properties. Added border-radius with the / and 4-value syntax, and
+        maintained -webkit-border-radius with legacy 2-value syntax.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (computedProperties): Removed Webkit prefix.
+        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): Ditto.
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseValue): Removed Webkit prefix from the
+            single-corner properties. Call out to parseBorderRadius() to parse
+            border-radius and -webkit-border-radius. 
+        (WebCore::completeBorderRadii): Added this helper function that
+            completes the values for all four corners when fewer than four are
+            specified.
+        (WebCore::CSSParser::parseBorderRadius): Added.
+        (WebCore::cssPropertyID): Map -webkit-border-*-*-radius to the
+            unprefixed property.
+        * css/CSSParser.h:
+        * css/CSSPropertyLonghand.cpp:
+        (WebCore::initShorthandMap): Removed the Webkit prefix. Added an entry
+            for border-radius. Kept the entry for -webkit-border-radius.
+        * css/CSSPropertyNames.in: Removed the -webkit- prefix from the
+            single-corenr properties. Added border-radius. Kept
+            -webkit-border-radius because of its conflicting syntax.
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::applyProperty): Removed the Webkit prefix.
+        * page/animation/AnimationBase.cpp:
+        (WebCore::ensurePropertyMap): Ditto.
+
</ins><span class="cx"> 2009-07-28  Drew Wilson  &lt;atwilson@google.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by David Levin.
</span></span></pre></div>
<a id="trunkWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSComputedStyleDeclaration.cpp (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSComputedStyleDeclaration.cpp        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSComputedStyleDeclaration.cpp        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -59,6 +59,8 @@
</span><span class="cx">     CSSPropertyBackgroundPosition, // more-specific background-position-x/y are non-standard
</span><span class="cx">     CSSPropertyBackgroundRepeat,
</span><span class="cx">     CSSPropertyBorderBottomColor,
</span><ins>+    CSSPropertyBorderBottomLeftRadius,
+    CSSPropertyBorderBottomRightRadius,
</ins><span class="cx">     CSSPropertyBorderBottomStyle,
</span><span class="cx">     CSSPropertyBorderBottomWidth,
</span><span class="cx">     CSSPropertyBorderCollapse,
</span><span class="lines">@@ -69,6 +71,8 @@
</span><span class="cx">     CSSPropertyBorderRightStyle,
</span><span class="cx">     CSSPropertyBorderRightWidth,
</span><span class="cx">     CSSPropertyBorderTopColor,
</span><ins>+    CSSPropertyBorderTopLeftRadius,
+    CSSPropertyBorderTopRightRadius,
</ins><span class="cx">     CSSPropertyBorderTopStyle,
</span><span class="cx">     CSSPropertyBorderTopWidth,
</span><span class="cx">     CSSPropertyBottom,
</span><span class="lines">@@ -152,13 +156,9 @@
</span><span class="cx">     CSSPropertyWebkitBackgroundComposite,
</span><span class="cx">     CSSPropertyWebkitBackgroundOrigin,
</span><span class="cx">     CSSPropertyWebkitBackgroundSize,
</span><del>-    CSSPropertyWebkitBorderBottomLeftRadius,
-    CSSPropertyWebkitBorderBottomRightRadius,
</del><span class="cx">     CSSPropertyWebkitBorderFit,
</span><span class="cx">     CSSPropertyWebkitBorderHorizontalSpacing,
</span><span class="cx">     CSSPropertyWebkitBorderImage,
</span><del>-    CSSPropertyWebkitBorderTopLeftRadius,
-    CSSPropertyWebkitBorderTopRightRadius,
</del><span class="cx">     CSSPropertyWebkitBorderVerticalSpacing,
</span><span class="cx">     CSSPropertyWebkitBoxAlign,
</span><span class="cx">     CSSPropertyWebkitBoxDirection,
</span><span class="lines">@@ -1225,13 +1225,13 @@
</span><span class="cx">             return CSSPrimitiveValue::create(style-&gt;userDrag());
</span><span class="cx">         case CSSPropertyWebkitUserSelect:
</span><span class="cx">             return CSSPrimitiveValue::create(style-&gt;userSelect());
</span><del>-        case CSSPropertyWebkitBorderBottomLeftRadius:
</del><ins>+        case CSSPropertyBorderBottomLeftRadius:
</ins><span class="cx">             return getBorderRadiusCornerValue(style-&gt;borderBottomLeftRadius());
</span><del>-        case CSSPropertyWebkitBorderBottomRightRadius:
</del><ins>+        case CSSPropertyBorderBottomRightRadius:
</ins><span class="cx">             return getBorderRadiusCornerValue(style-&gt;borderBottomRightRadius());
</span><del>-        case CSSPropertyWebkitBorderTopLeftRadius:
</del><ins>+        case CSSPropertyBorderTopLeftRadius:
</ins><span class="cx">             return getBorderRadiusCornerValue(style-&gt;borderTopLeftRadius());
</span><del>-        case CSSPropertyWebkitBorderTopRightRadius:
</del><ins>+        case CSSPropertyBorderTopRightRadius:
</ins><span class="cx">             return getBorderRadiusCornerValue(style-&gt;borderTopRightRadius());
</span><span class="cx">         case CSSPropertyClip: {
</span><span class="cx">             if (!style-&gt;hasClip())
</span><span class="lines">@@ -1297,6 +1297,7 @@
</span><span class="cx">         case CSSPropertyBorderBottom:
</span><span class="cx">         case CSSPropertyBorderColor:
</span><span class="cx">         case CSSPropertyBorderLeft:
</span><ins>+        case CSSPropertyBorderRadius:
</ins><span class="cx">         case CSSPropertyBorderRight:
</span><span class="cx">         case CSSPropertyBorderStyle:
</span><span class="cx">         case CSSPropertyBorderTop:
</span></span></pre></div>
<a id="trunkWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSParser.cpp (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSParser.cpp        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSParser.cpp        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -1147,11 +1147,10 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         break;
</span><del>-    case CSSPropertyWebkitBorderTopRightRadius:
-    case CSSPropertyWebkitBorderTopLeftRadius:
-    case CSSPropertyWebkitBorderBottomLeftRadius:
-    case CSSPropertyWebkitBorderBottomRightRadius:
-    case CSSPropertyWebkitBorderRadius: {
</del><ins>+    case CSSPropertyBorderTopRightRadius:
+    case CSSPropertyBorderTopLeftRadius:
+    case CSSPropertyBorderBottomLeftRadius:
+    case CSSPropertyBorderBottomRightRadius: {
</ins><span class="cx">         if (num != 1 &amp;&amp; num != 2)
</span><span class="cx">             return false;
</span><span class="cx">         valid_primitive = validUnit(value, FLength, m_strict);
</span><span class="lines">@@ -1167,20 +1166,15 @@
</span><span class="cx">             parsedValue2 = CSSPrimitiveValue::create(value-&gt;fValue, (CSSPrimitiveValue::UnitTypes)value-&gt;unit);
</span><span class="cx">         } else
</span><span class="cx">             parsedValue2 = parsedValue1;
</span><del>-        
</del><ins>+
</ins><span class="cx">         RefPtr&lt;Pair&gt; pair = Pair::create(parsedValue1.release(), parsedValue2.release());
</span><span class="cx">         RefPtr&lt;CSSPrimitiveValue&gt; val = CSSPrimitiveValue::create(pair.release());
</span><del>-        if (propId == CSSPropertyWebkitBorderRadius) {
-            const int properties[4] = { CSSPropertyWebkitBorderTopRightRadius,
-                                        CSSPropertyWebkitBorderTopLeftRadius,
-                                        CSSPropertyWebkitBorderBottomLeftRadius,
-                                        CSSPropertyWebkitBorderBottomRightRadius };
-            for (int i = 0; i &lt; 4; i++)
-                addProperty(properties[i], val.get(), important);
-        } else
-            addProperty(propId, val.release(), important);
</del><ins>+        addProperty(propId, val.release(), important);
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><ins>+    case CSSPropertyBorderRadius:
+    case CSSPropertyWebkitBorderRadius:
+        return parseBorderRadius(propId, important);
</ins><span class="cx">     case CSSPropertyOutlineOffset:
</span><span class="cx">         valid_primitive = validUnit(value, FLength, m_strict);
</span><span class="cx">         break;
</span><span class="lines">@@ -3895,6 +3889,75 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static void completeBorderRadii(RefPtr&lt;CSSPrimitiveValue&gt; radii[4])
+{
+    if (radii[3])
+        return;
+    if (!radii[2]) {
+        if (!radii[1])
+            radii[1] = radii[0];
+        radii[2] = radii[0];
+    }
+    radii[3] = radii[1];
+}
+
+bool CSSParser::parseBorderRadius(int propId, bool important)
+{
+    unsigned num = m_valueList-&gt;size();
+    if (num &gt; 9)
+        return false;
+
+    RefPtr&lt;CSSPrimitiveValue&gt; radii[2][4];
+
+    unsigned indexAfterSlash = 0;
+    for (unsigned i = 0; i &lt; num; ++i) {
+        CSSParserValue* value = m_valueList-&gt;valueAt(i);
+        if (value-&gt;unit == CSSParserValue::Operator) {
+            if (value-&gt;iValue != '/')
+                return false;
+
+            if (!i || indexAfterSlash || i + 1 == num || num &gt; i + 5)
+                return false;
+
+            indexAfterSlash = i + 1;
+            completeBorderRadii(radii[0]);
+            continue;
+        }
+
+        if (i - indexAfterSlash &gt;= 4)
+            return false;
+
+        if (!validUnit(value, FLength, m_strict))
+            return false;
+
+        RefPtr&lt;CSSPrimitiveValue&gt; radius = CSSPrimitiveValue::create(value-&gt;fValue, static_cast&lt;CSSPrimitiveValue::UnitTypes&gt;(value-&gt;unit));
+
+        if (!indexAfterSlash) {
+            radii[0][i] = radius;
+
+            // Legacy syntax: -webkit-border-radius: l1 l2; is equivalent to border-radius: l1 / l2;
+            if (num == 2 &amp;&amp; propId == CSSPropertyWebkitBorderRadius) {
+                indexAfterSlash = 1;
+                completeBorderRadii(radii[0]);
+            }
+        } else
+            radii[1][i - indexAfterSlash] = radius.release();
+    }
+
+    if (!indexAfterSlash) {
+        completeBorderRadii(radii[0]);
+        for (unsigned i = 0; i &lt; 4; ++i)
+            radii[1][i] = radii[0][i];
+    } else
+        completeBorderRadii(radii[1]);
+
+    addProperty(CSSPropertyBorderTopLeftRadius, CSSPrimitiveValue::create(Pair::create(radii[0][0].release(), radii[1][0].release())), important);
+    addProperty(CSSPropertyBorderTopRightRadius, CSSPrimitiveValue::create(Pair::create(radii[0][1].release(), radii[1][1].release())), important);
+    addProperty(CSSPropertyBorderBottomRightRadius, CSSPrimitiveValue::create(Pair::create(radii[0][2].release(), radii[1][2].release())), important);
+    addProperty(CSSPropertyBorderBottomLeftRadius, CSSPrimitiveValue::create(Pair::create(radii[0][3].release(), radii[1][3].release())), important);
+    return true;
+}
+
</ins><span class="cx"> bool CSSParser::parseCounter(int propId, int defaultValue, bool important)
</span><span class="cx"> {
</span><span class="cx">     enum { ID, VAL } state = ID;
</span><span class="lines">@@ -4988,6 +5051,16 @@
</span><span class="cx">                 const char* const boxShadow = &quot;box-shadow&quot;;
</span><span class="cx">                 name = boxShadow;
</span><span class="cx">                 length = strlen(boxShadow);
</span><ins>+            } else if (hasPrefix(buffer + 7, length - 7, &quot;-border-&quot;)) {
+                // -webkit-border-*-*-radius worked in Safari 4 and earlier. -webkit-border-radius syntax
+                // differs from border-radius, so it is remains as a distinct property.
+                if (!strcmp(buffer + 15, &quot;top-left-radius&quot;)
+                        || !strcmp(buffer + 15, &quot;top-right-radius&quot;)
+                        || !strcmp(buffer + 15, &quot;bottom-right-radius&quot;)
+                        || !strcmp(buffer + 15, &quot;bottom-left-radius&quot;)) {
+                    name = buffer + 8;
+                    length -= 8;
+                }
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkWebCorecssCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSParser.h (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSParser.h        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSParser.h        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -139,6 +139,7 @@
</span><span class="cx">         // CSS3 Parsing Routines (for properties specific to CSS3)
</span><span class="cx">         bool parseShadow(int propId, bool important);
</span><span class="cx">         bool parseBorderImage(int propId, bool important, RefPtr&lt;CSSValue&gt;&amp;);
</span><ins>+        bool parseBorderRadius(int propId, bool important);
</ins><span class="cx">         
</span><span class="cx">         bool parseReflect(int propId, bool important);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebCorecssCSSPropertyLonghandcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSPropertyLonghand.cpp (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSPropertyLonghand.cpp        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSPropertyLonghand.cpp        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -152,11 +152,12 @@
</span><span class="cx">     SET_SHORTHAND_MAP_ENTRY(shorthandMap, CSSPropertyOverflow, overflowProperties);
</span><span class="cx"> 
</span><span class="cx">     static const int borderRadiusProperties[] = {
</span><del>-        CSSPropertyWebkitBorderTopRightRadius,
-        CSSPropertyWebkitBorderTopLeftRadius,
-        CSSPropertyWebkitBorderBottomLeftRadius,
-        CSSPropertyWebkitBorderBottomRightRadius
</del><ins>+        CSSPropertyBorderTopRightRadius,
+        CSSPropertyBorderTopLeftRadius,
+        CSSPropertyBorderBottomLeftRadius,
+        CSSPropertyBorderBottomRightRadius
</ins><span class="cx">     };
</span><ins>+    SET_SHORTHAND_MAP_ENTRY(shorthandMap, CSSPropertyBorderRadius, borderRadiusProperties);
</ins><span class="cx">     SET_SHORTHAND_MAP_ENTRY(shorthandMap, CSSPropertyWebkitBorderRadius, borderRadiusProperties);
</span><span class="cx"> 
</span><span class="cx">     static const int maskPositionProperties[] = { CSSPropertyWebkitMaskPositionX, CSSPropertyWebkitMaskPositionY };
</span></span></pre></div>
<a id="trunkWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSPropertyNames.in (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSPropertyNames.in        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSPropertyNames.in        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -21,6 +21,8 @@
</span><span class="cx"> border
</span><span class="cx"> border-bottom
</span><span class="cx"> border-bottom-color
</span><ins>+border-bottom-left-radius
+border-bottom-right-radius
</ins><span class="cx"> border-bottom-style
</span><span class="cx"> border-bottom-width
</span><span class="cx"> border-collapse
</span><span class="lines">@@ -29,6 +31,7 @@
</span><span class="cx"> border-left-color
</span><span class="cx"> border-left-style
</span><span class="cx"> border-left-width
</span><ins>+border-radius
</ins><span class="cx"> border-right
</span><span class="cx"> border-right-color
</span><span class="cx"> border-right-style
</span><span class="lines">@@ -37,6 +40,8 @@
</span><span class="cx"> border-style
</span><span class="cx"> border-top
</span><span class="cx"> border-top-color
</span><ins>+border-top-left-radius
+border-top-right-radius
</ins><span class="cx"> border-top-style
</span><span class="cx"> border-top-width
</span><span class="cx"> border-width
</span><span class="lines">@@ -153,14 +158,14 @@
</span><span class="cx"> -webkit-background-origin
</span><span class="cx"> -webkit-background-size
</span><span class="cx"> -webkit-binding
</span><del>--webkit-border-bottom-left-radius
--webkit-border-bottom-right-radius
</del><span class="cx"> -webkit-border-fit
</span><span class="cx"> -webkit-border-horizontal-spacing
</span><span class="cx"> -webkit-border-image
</span><ins>+
+# -webkit-border-radius differs from border-radius only in the interpretation of
+# a value consisting of two lengths: &quot;-webkit-border-radius: l1 l2;&quot; is equivalent
+# to &quot;border-radius: l1 / l2;&quot;
</ins><span class="cx"> -webkit-border-radius
</span><del>--webkit-border-top-left-radius
--webkit-border-top-right-radius
</del><span class="cx"> -webkit-border-vertical-spacing
</span><span class="cx"> -webkit-box-align
</span><span class="cx"> -webkit-box-direction
</span></span></pre></div>
<a id="trunkWebCorecssCSSStyleSelectorcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/css/CSSStyleSelector.cpp (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/css/CSSStyleSelector.cpp        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/css/CSSStyleSelector.cpp        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -4445,6 +4445,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    case CSSPropertyBorderRadius:
</ins><span class="cx">     case CSSPropertyWebkitBorderRadius:
</span><span class="cx">         if (isInherit) {
</span><span class="cx">             m_style-&gt;setBorderTopLeftRadius(m_parentStyle-&gt;borderTopLeftRadius());
</span><span class="lines">@@ -4458,23 +4459,23 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         // Fall through
</span><del>-    case CSSPropertyWebkitBorderTopLeftRadius:
-    case CSSPropertyWebkitBorderTopRightRadius:
-    case CSSPropertyWebkitBorderBottomLeftRadius:
-    case CSSPropertyWebkitBorderBottomRightRadius: {
</del><ins>+    case CSSPropertyBorderTopLeftRadius:
+    case CSSPropertyBorderTopRightRadius:
+    case CSSPropertyBorderBottomLeftRadius:
+    case CSSPropertyBorderBottomRightRadius: {
</ins><span class="cx">         if (isInherit) {
</span><del>-            HANDLE_INHERIT_COND(CSSPropertyWebkitBorderTopLeftRadius, borderTopLeftRadius, BorderTopLeftRadius)
-            HANDLE_INHERIT_COND(CSSPropertyWebkitBorderTopRightRadius, borderTopRightRadius, BorderTopRightRadius)
-            HANDLE_INHERIT_COND(CSSPropertyWebkitBorderBottomLeftRadius, borderBottomLeftRadius, BorderBottomLeftRadius)
-            HANDLE_INHERIT_COND(CSSPropertyWebkitBorderBottomRightRadius, borderBottomRightRadius, BorderBottomRightRadius)
</del><ins>+            HANDLE_INHERIT_COND(CSSPropertyBorderTopLeftRadius, borderTopLeftRadius, BorderTopLeftRadius)
+            HANDLE_INHERIT_COND(CSSPropertyBorderTopRightRadius, borderTopRightRadius, BorderTopRightRadius)
+            HANDLE_INHERIT_COND(CSSPropertyBorderBottomLeftRadius, borderBottomLeftRadius, BorderBottomLeftRadius)
+            HANDLE_INHERIT_COND(CSSPropertyBorderBottomRightRadius, borderBottomRightRadius, BorderBottomRightRadius)
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         if (isInitial) {
</span><del>-            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyWebkitBorderTopLeftRadius, BorderTopLeftRadius, BorderRadius)
-            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyWebkitBorderTopRightRadius, BorderTopRightRadius, BorderRadius)
-            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyWebkitBorderBottomLeftRadius, BorderBottomLeftRadius, BorderRadius)
-            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyWebkitBorderBottomRightRadius, BorderBottomRightRadius, BorderRadius)
</del><ins>+            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyBorderTopLeftRadius, BorderTopLeftRadius, BorderRadius)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyBorderTopRightRadius, BorderTopRightRadius, BorderRadius)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyBorderBottomLeftRadius, BorderBottomLeftRadius, BorderRadius)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSSPropertyBorderBottomRightRadius, BorderBottomRightRadius, BorderRadius)
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -4497,16 +4498,16 @@
</span><span class="cx"> 
</span><span class="cx">         IntSize size(width, height);
</span><span class="cx">         switch (id) {
</span><del>-            case CSSPropertyWebkitBorderTopLeftRadius:
</del><ins>+            case CSSPropertyBorderTopLeftRadius:
</ins><span class="cx">                 m_style-&gt;setBorderTopLeftRadius(size);
</span><span class="cx">                 break;
</span><del>-            case CSSPropertyWebkitBorderTopRightRadius:
</del><ins>+            case CSSPropertyBorderTopRightRadius:
</ins><span class="cx">                 m_style-&gt;setBorderTopRightRadius(size);
</span><span class="cx">                 break;
</span><del>-            case CSSPropertyWebkitBorderBottomLeftRadius:
</del><ins>+            case CSSPropertyBorderBottomLeftRadius:
</ins><span class="cx">                 m_style-&gt;setBorderBottomLeftRadius(size);
</span><span class="cx">                 break;
</span><del>-            case CSSPropertyWebkitBorderBottomRightRadius:
</del><ins>+            case CSSPropertyBorderBottomRightRadius:
</ins><span class="cx">                 m_style-&gt;setBorderBottomRightRadius(size);
</span><span class="cx">                 break;
</span><span class="cx">             default:
</span></span></pre></div>
<a id="trunkWebCorepageanimationAnimationBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/animation/AnimationBase.cpp (46507 => 46508)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/animation/AnimationBase.cpp        2009-07-29 00:08:02 UTC (rev 46507)
+++ trunk/WebCore/page/animation/AnimationBase.cpp        2009-07-29 00:16:53 UTC (rev 46508)
</span><span class="lines">@@ -460,10 +460,10 @@
</span><span class="cx">         gPropertyWrappers-&gt;append(new PropertyWrapper&lt;Length&gt;(CSSPropertyWebkitTransformOriginX, &amp;RenderStyle::transformOriginX, &amp;RenderStyle::setTransformOriginX));
</span><span class="cx">         gPropertyWrappers-&gt;append(new PropertyWrapper&lt;Length&gt;(CSSPropertyWebkitTransformOriginY, &amp;RenderStyle::transformOriginY, &amp;RenderStyle::setTransformOriginY));
</span><span class="cx">         gPropertyWrappers-&gt;append(new PropertyWrapper&lt;float&gt;(CSSPropertyWebkitTransformOriginZ, &amp;RenderStyle::transformOriginZ, &amp;RenderStyle::setTransformOriginZ));
</span><del>-        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyWebkitBorderTopLeftRadius, &amp;RenderStyle::borderTopLeftRadius, &amp;RenderStyle::setBorderTopLeftRadius));
-        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyWebkitBorderTopRightRadius, &amp;RenderStyle::borderTopRightRadius, &amp;RenderStyle::setBorderTopRightRadius));
-        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyWebkitBorderBottomLeftRadius, &amp;RenderStyle::borderBottomLeftRadius, &amp;RenderStyle::setBorderBottomLeftRadius));
-        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyWebkitBorderBottomRightRadius, &amp;RenderStyle::borderBottomRightRadius, &amp;RenderStyle::setBorderBottomRightRadius));
</del><ins>+        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyBorderTopLeftRadius, &amp;RenderStyle::borderTopLeftRadius, &amp;RenderStyle::setBorderTopLeftRadius));
+        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyBorderTopRightRadius, &amp;RenderStyle::borderTopRightRadius, &amp;RenderStyle::setBorderTopRightRadius));
+        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyBorderBottomLeftRadius, &amp;RenderStyle::borderBottomLeftRadius, &amp;RenderStyle::setBorderBottomLeftRadius));
+        gPropertyWrappers-&gt;append(new PropertyWrapper&lt;const IntSize&amp;&gt;(CSSPropertyBorderBottomRightRadius, &amp;RenderStyle::borderBottomRightRadius, &amp;RenderStyle::setBorderBottomRightRadius));
</ins><span class="cx">         gPropertyWrappers-&gt;append(new PropertyWrapper&lt;EVisibility&gt;(CSSPropertyVisibility, &amp;RenderStyle::visibility, &amp;RenderStyle::setVisibility));
</span><span class="cx">         gPropertyWrappers-&gt;append(new PropertyWrapper&lt;float&gt;(CSSPropertyZoom, &amp;RenderStyle::zoom, &amp;RenderStyle::setZoom));
</span><span class="cx">         
</span></span></pre>
</div>
</div>

</body>
</html>