<!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>[188183] trunk/Source/WebCore</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/188183">188183</a></dd>
<dt>Author</dt> <dd>zalan@apple.com</dd>
<dt>Date</dt> <dd>2015-08-07 20:06:52 -0700 (Fri, 07 Aug 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move painting functions from RenderObject to RenderElement.
https://bugs.webkit.org/show_bug.cgi?id=147764

Reviewed by Simon Fraser.

Ideally they should live in RenderBoxModelObject, but the current SVG architecture makes is difficult
to move them there.

No change in functionality.

* platform/graphics/FloatRect.h:
(WebCore::FloatRect::FloatRect):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintOneBorderSide):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::drawLineForBoxSide):
(WebCore::RenderElement::paintFocusRing):
(WebCore::RenderElement::paintOutline):
* rendering/RenderElement.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::paintOutline):
(WebCore::RenderInline::paintOutlineForLine):
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::paintColumnRules):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::drawLineForBoxSide): Deleted.
(WebCore::RenderObject::paintFocusRing): Deleted.
(WebCore::RenderObject::paintOutline): Deleted.
* rendering/RenderObject.h:
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::paintCollapsedBorders):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::paintRowGroupBorder):
* rendering/RenderTheme.h:
(WebCore::RenderTheme::paintMenuListButtonDecorations):
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintMenuListButtonDecorations):
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintMenuListButtonDecorations):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformeflRenderThemeEflcpp">trunk/Source/WebCore/platform/efl/RenderThemeEfl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformeflRenderThemeEflh">trunk/Source/WebCore/platform/efl/RenderThemeEfl.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFloatRecth">trunk/Source/WebCore/platform/graphics/FloatRect.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementcpp">trunk/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementh">trunk/Source/WebCore/rendering/RenderElement.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlinecpp">trunk/Source/WebCore/rendering/RenderInline.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSetcpp">trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjecth">trunk/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellcpp">trunk/Source/WebCore/rendering/RenderTableCell.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableSectioncpp">trunk/Source/WebCore/rendering/RenderTableSection.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeh">trunk/Source/WebCore/rendering/RenderTheme.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeGtkcpp">trunk/Source/WebCore/rendering/RenderThemeGtk.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeGtkh">trunk/Source/WebCore/rendering/RenderThemeGtk.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeIOSh">trunk/Source/WebCore/rendering/RenderThemeIOS.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeIOSmm">trunk/Source/WebCore/rendering/RenderThemeIOS.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMach">trunk/Source/WebCore/rendering/RenderThemeMac.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeWincpp">trunk/Source/WebCore/rendering/RenderThemeWin.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeWinh">trunk/Source/WebCore/rendering/RenderThemeWin.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/ChangeLog        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1,3 +1,47 @@
</span><ins>+2015-08-07  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        Move painting functions from RenderObject to RenderElement.
+        https://bugs.webkit.org/show_bug.cgi?id=147764
+
+        Reviewed by Simon Fraser.
+
+        Ideally they should live in RenderBoxModelObject, but the current SVG architecture makes is difficult
+        to move them there.
+
+        No change in functionality.
+
+        * platform/graphics/FloatRect.h:
+        (WebCore::FloatRect::FloatRect):
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::paintOneBorderSide):
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::drawLineForBoxSide):
+        (WebCore::RenderElement::paintFocusRing):
+        (WebCore::RenderElement::paintOutline):
+        * rendering/RenderElement.h:
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::paintOutline):
+        (WebCore::RenderInline::paintOutlineForLine):
+        * rendering/RenderMultiColumnSet.cpp:
+        (WebCore::RenderMultiColumnSet::paintColumnRules):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::drawLineForBoxSide): Deleted.
+        (WebCore::RenderObject::paintFocusRing): Deleted.
+        (WebCore::RenderObject::paintOutline): Deleted.
+        * rendering/RenderObject.h:
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::paintCollapsedBorders):
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::paintRowGroupBorder):
+        * rendering/RenderTheme.h:
+        (WebCore::RenderTheme::paintMenuListButtonDecorations):
+        * rendering/RenderThemeIOS.h:
+        * rendering/RenderThemeIOS.mm:
+        (WebCore::RenderThemeIOS::paintMenuListButtonDecorations):
+        * rendering/RenderThemeMac.h:
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::paintMenuListButtonDecorations):
+
</ins><span class="cx"> 2015-08-07  James Craig  &lt;jcraig@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION(r184722) AX: WebKit video playback toolbar removed from DOM; no longer accessible to VoiceOver
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformeflRenderThemeEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/efl/RenderThemeEfl.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/efl/RenderThemeEfl.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/platform/efl/RenderThemeEfl.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -874,7 +874,7 @@
</span><span class="cx">     adjustMenuListStyle(styleResolver, style, element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeEfl::paintMenuListButtonDecorations(const RenderObject&amp; object, const PaintInfo&amp; info, const FloatRect&amp; rect)
</del><ins>+bool RenderThemeEfl::paintMenuListButtonDecorations(const RenderBox&amp; object, const PaintInfo&amp; info, const FloatRect&amp; rect)
</ins><span class="cx"> {
</span><span class="cx">     return paintMenuList(object, info, rect);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformeflRenderThemeEflh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/efl/RenderThemeEfl.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/efl/RenderThemeEfl.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/platform/efl/RenderThemeEfl.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx">     virtual bool paintMenuList(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx">     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFloatRecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FloatRect.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FloatRect.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/platform/graphics/FloatRect.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -62,6 +62,8 @@
</span><span class="cx">         : m_location(location), m_size(size) { }
</span><span class="cx">     FloatRect(float x, float y, float width, float height)
</span><span class="cx">         : m_location(FloatPoint(x, y)), m_size(FloatSize(width, height)) { }
</span><ins>+    FloatRect(const FloatPoint&amp; topLeft, const FloatPoint&amp; bottomRight)
+        : m_location(topLeft), m_size(FloatSize(bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y())) { }
</ins><span class="cx">     WEBCORE_EXPORT FloatRect(const IntRect&amp;);
</span><span class="cx"> 
</span><span class="cx">     static FloatRect narrowPrecision(double x, double y, double width, double height);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1479,9 +1479,7 @@
</span><span class="cx">             mitreAdjacentSide1 = false;
</span><span class="cx">             mitreAdjacentSide2 = false;
</span><span class="cx">         }
</span><del>-        
-        drawLineForBoxSide(graphicsContext, sideRect.x(), sideRect.y(), sideRect.maxX(), sideRect.maxY(), side, colorToPaint, edgeToRender.style(),
-            mitreAdjacentSide1 ? adjacentEdge1.widthForPainting() : 0, mitreAdjacentSide2 ? adjacentEdge2.widthForPainting() : 0, antialias);
</del><ins>+        drawLineForBoxSide(*graphicsContext, sideRect, side, colorToPaint, edgeToRender.style(), mitreAdjacentSide1 ? adjacentEdge1.widthForPainting() : 0, mitreAdjacentSide2 ? adjacentEdge2.widthForPainting() : 0, antialias);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;CursorList.h&quot;
</span><span class="cx"> #include &quot;ElementChildIterator.h&quot;
</span><span class="cx"> #include &quot;EventHandler.h&quot;
</span><ins>+#include &quot;FocusController.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameSelection.h&quot;
</span><span class="cx"> #include &quot;HTMLBodyElement.h&quot;
</span><span class="lines">@@ -1783,4 +1784,339 @@
</span><span class="cx">     return current;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderElement::drawLineForBoxSide(GraphicsContext&amp; graphicsContext, const FloatRect&amp; rect, BoxSide side, Color color, EBorderStyle borderStyle, float adjacentWidth1, float adjacentWidth2, bool antialias) const
+{
+    float x1 = rect.x();
+    float x2 = rect.maxX();
+    float y1 = rect.y();
+    float y2 = rect.maxY();
+    float thickness;
+    float length;
+    if (side == BSTop || side == BSBottom) {
+        thickness = y2 - y1;
+        length = x2 - x1;
+    } else {
+        thickness = x2 - x1;
+        length = y2 - y1;
+    }
+    // FIXME: We really would like this check to be an ASSERT as we don't want to draw empty borders. However
+    // nothing guarantees that the following recursive calls to drawLineForBoxSide will have non-null dimensions.
+    if (!thickness || !length)
+        return;
+
+    float deviceScaleFactor = document().deviceScaleFactor();
+    if (borderStyle == DOUBLE &amp;&amp; (thickness * deviceScaleFactor) &lt; 3)
+        borderStyle = SOLID;
+
+    const RenderStyle&amp; style = this-&gt;style();
+    switch (borderStyle) {
+    case BNONE:
+    case BHIDDEN:
+        return;
+    case DOTTED:
+    case DASHED: {
+        bool wasAntialiased = graphicsContext.shouldAntialias();
+        StrokeStyle oldStrokeStyle = graphicsContext.strokeStyle();
+        graphicsContext.setShouldAntialias(antialias);
+        graphicsContext.setStrokeColor(color, style.colorSpace());
+        graphicsContext.setStrokeThickness(thickness);
+        graphicsContext.setStrokeStyle(borderStyle == DASHED ? DashedStroke : DottedStroke);
+        graphicsContext.drawLine(roundPointToDevicePixels(LayoutPoint(x1, y1), deviceScaleFactor), roundPointToDevicePixels(LayoutPoint(x2, y2), deviceScaleFactor));
+        graphicsContext.setShouldAntialias(wasAntialiased);
+        graphicsContext.setStrokeStyle(oldStrokeStyle);
+        break;
+    }
+    case DOUBLE: {
+        float thirdOfThickness = ceilToDevicePixel(thickness / 3, deviceScaleFactor);
+        ASSERT(thirdOfThickness);
+
+        if (!adjacentWidth1 &amp;&amp; !adjacentWidth2) {
+            StrokeStyle oldStrokeStyle = graphicsContext.strokeStyle();
+            graphicsContext.setStrokeStyle(NoStroke);
+            graphicsContext.setFillColor(color, style.colorSpace());
+
+            bool wasAntialiased = graphicsContext.shouldAntialias();
+            graphicsContext.setShouldAntialias(antialias);
+
+            switch (side) {
+            case BSTop:
+            case BSBottom:
+                graphicsContext.drawRect(snapRectToDevicePixels(x1, y1, length, thirdOfThickness, deviceScaleFactor));
+                graphicsContext.drawRect(snapRectToDevicePixels(x1, y2 - thirdOfThickness, length, thirdOfThickness, deviceScaleFactor));
+                break;
+            case BSLeft:
+            case BSRight:
+                graphicsContext.drawRect(snapRectToDevicePixels(x1, y1, thirdOfThickness, length, deviceScaleFactor));
+                graphicsContext.drawRect(snapRectToDevicePixels(x2 - thirdOfThickness, y1, thirdOfThickness, length, deviceScaleFactor));
+                break;
+            }
+
+            graphicsContext.setShouldAntialias(wasAntialiased);
+            graphicsContext.setStrokeStyle(oldStrokeStyle);
+        } else {
+            float adjacent1BigThird = ceilToDevicePixel(adjacentWidth1 / 3, deviceScaleFactor);
+            float adjacent2BigThird = ceilToDevicePixel(adjacentWidth2 / 3, deviceScaleFactor);
+
+            float offset1 = floorToDevicePixel(fabs(adjacentWidth1) * 2 / 3, deviceScaleFactor);
+            float offset2 = floorToDevicePixel(fabs(adjacentWidth2) * 2 / 3, deviceScaleFactor);
+
+            float mitreOffset1 = adjacentWidth1 &lt; 0 ? offset1 : 0;
+            float mitreOffset2 = adjacentWidth1 &gt; 0 ? offset1 : 0;
+            float mitreOffset3 = adjacentWidth2 &lt; 0 ? offset2 : 0;
+            float mitreOffset4 = adjacentWidth2 &gt; 0 ? offset2 : 0;
+
+            FloatRect paintBorderRect;
+            switch (side) {
+            case BSTop:
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset1, y1, (x2 - mitreOffset3) - (x1 + mitreOffset1), thirdOfThickness), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset2, y2 - thirdOfThickness, (x2 - mitreOffset4) - (x1 + mitreOffset2), thirdOfThickness), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+                break;
+            case BSLeft:
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1, y1 + mitreOffset1, thirdOfThickness, (y2 - mitreOffset3) - (y1 + mitreOffset1)), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x2 - thirdOfThickness, y1 + mitreOffset2, thirdOfThickness, (y2 - mitreOffset4) - (y1 + mitreOffset2)), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+                break;
+            case BSBottom:
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset2, y1, (x2 - mitreOffset4) - (x1 + mitreOffset2), thirdOfThickness), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset1, y2 - thirdOfThickness, (x2 - mitreOffset3) - (x1 + mitreOffset1), thirdOfThickness), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+                break;
+            case BSRight:
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x1, y1 + mitreOffset2, thirdOfThickness, (y2 - mitreOffset4) - (y1 + mitreOffset2)), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+
+                paintBorderRect = snapRectToDevicePixels(LayoutRect(x2 - thirdOfThickness, y1 + mitreOffset1, thirdOfThickness, (y2 - mitreOffset3) - (y1 + mitreOffset1)), deviceScaleFactor);
+                drawLineForBoxSide(graphicsContext, paintBorderRect, side, color, SOLID,
+                    adjacent1BigThird, adjacent2BigThird, antialias);
+                break;
+            default:
+                break;
+            }
+        }
+        break;
+    }
+    case RIDGE:
+    case GROOVE: {
+        EBorderStyle s1;
+        EBorderStyle s2;
+        if (borderStyle == GROOVE) {
+            s1 = INSET;
+            s2 = OUTSET;
+        } else {
+            s1 = OUTSET;
+            s2 = INSET;
+        }
+
+        float adjacent1BigHalf = ceilToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
+        float adjacent2BigHalf = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
+
+        float adjacent1SmallHalf = floorToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
+        float adjacent2SmallHalf = floorToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
+
+        float offset1 = 0;
+        float offset2 = 0;
+        float offset3 = 0;
+        float offset4 = 0;
+
+        if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth1 &lt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth1 &gt; 0))
+            offset1 = floorToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
+
+        if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth2 &lt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth2 &gt; 0))
+            offset2 = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
+
+        if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth1 &gt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth1 &lt; 0))
+            offset3 = floorToDevicePixel(fabs(adjacentWidth1) / 2, deviceScaleFactor);
+
+        if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth2 &gt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth2 &lt; 0))
+            offset4 = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
+
+        float adjustedX = ceilToDevicePixel((x1 + x2) / 2, deviceScaleFactor);
+        float adjustedY = ceilToDevicePixel((y1 + y2) / 2, deviceScaleFactor);
+        // Quads can't use the default snapping rect functions.
+        x1 = roundToDevicePixel(x1, deviceScaleFactor);
+        x2 = roundToDevicePixel(x2, deviceScaleFactor);
+        y1 = roundToDevicePixel(y1, deviceScaleFactor);
+        y2 = roundToDevicePixel(y2, deviceScaleFactor);
+
+        switch (side) {
+        case BSTop:
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1 + offset1, y1), FloatPoint(x2 - offset2, adjustedY)), side, color, s1, adjacent1BigHalf, adjacent2BigHalf, antialias);
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1 + offset3, adjustedY), FloatPoint(x2 - offset4, y2)), side, color, s2, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
+            break;
+        case BSLeft:
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1, y1 + offset1), FloatPoint(adjustedX, y2 - offset2)), side, color, s1, adjacent1BigHalf, adjacent2BigHalf, antialias);
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(adjustedX, y1 + offset3), FloatPoint(x2, y2 - offset4)), side, color, s2, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
+            break;
+        case BSBottom:
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1 + offset1, y1), FloatPoint(x2 - offset2, adjustedY)), side, color, s2, adjacent1BigHalf, adjacent2BigHalf, antialias);
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1 + offset3, adjustedY), FloatPoint(x2 - offset4, y2)), side, color, s1, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
+            break;
+        case BSRight:
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(x1, y1 + offset1), FloatPoint(adjustedX, y2 - offset2)), side, color, s2, adjacent1BigHalf, adjacent2BigHalf, antialias);
+            drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(adjustedX, y1 + offset3), FloatPoint(x2, y2 - offset4)), side, color, s1, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
+            break;
+        }
+        break;
+    }
+    case INSET:
+    case OUTSET:
+        calculateBorderStyleColor(borderStyle, side, color);
+        FALLTHROUGH;
+    case SOLID: {
+        StrokeStyle oldStrokeStyle = graphicsContext.strokeStyle();
+        ASSERT(x2 &gt;= x1);
+        ASSERT(y2 &gt;= y1);
+        if (!adjacentWidth1 &amp;&amp; !adjacentWidth2) {
+            // Turn off antialiasing to match the behavior of drawConvexPolygon();
+            // this matters for rects in transformed contexts.
+            graphicsContext.setStrokeStyle(NoStroke);
+            graphicsContext.setFillColor(color, style.colorSpace());
+            bool wasAntialiased = graphicsContext.shouldAntialias();
+            graphicsContext.setShouldAntialias(antialias);
+            graphicsContext.drawRect(snapRectToDevicePixels(x1, y1, x2 - x1, y2 - y1, deviceScaleFactor));
+            graphicsContext.setShouldAntialias(wasAntialiased);
+            graphicsContext.setStrokeStyle(oldStrokeStyle);
+            return;
+        }
+
+        // FIXME: These roundings should be replaced by ASSERT(device pixel positioned) when all the callers have transitioned to device pixels.
+        x1 = roundToDevicePixel(x1, deviceScaleFactor);
+        y1 = roundToDevicePixel(y1, deviceScaleFactor);
+        x2 = roundToDevicePixel(x2, deviceScaleFactor);
+        y2 = roundToDevicePixel(y2, deviceScaleFactor);
+
+        FloatPoint quad[4];
+        switch (side) {
+        case BSTop:
+            quad[0] = FloatPoint(x1 + std::max&lt;float&gt;(-adjacentWidth1, 0), y1);
+            quad[1] = FloatPoint(x1 + std::max&lt;float&gt;(adjacentWidth1, 0), y2);
+            quad[2] = FloatPoint(x2 - std::max&lt;float&gt;(adjacentWidth2, 0), y2);
+            quad[3] = FloatPoint(x2 - std::max&lt;float&gt;(-adjacentWidth2, 0), y1);
+            break;
+        case BSBottom:
+            quad[0] = FloatPoint(x1 + std::max&lt;float&gt;(adjacentWidth1, 0), y1);
+            quad[1] = FloatPoint(x1 + std::max&lt;float&gt;(-adjacentWidth1, 0), y2);
+            quad[2] = FloatPoint(x2 - std::max&lt;float&gt;(-adjacentWidth2, 0), y2);
+            quad[3] = FloatPoint(x2 - std::max&lt;float&gt;(adjacentWidth2, 0), y1);
+            break;
+        case BSLeft:
+            quad[0] = FloatPoint(x1, y1 + std::max&lt;float&gt;(-adjacentWidth1, 0));
+            quad[1] = FloatPoint(x1, y2 - std::max&lt;float&gt;(-adjacentWidth2, 0));
+            quad[2] = FloatPoint(x2, y2 - std::max&lt;float&gt;(adjacentWidth2, 0));
+            quad[3] = FloatPoint(x2, y1 + std::max&lt;float&gt;(adjacentWidth1, 0));
+            break;
+        case BSRight:
+            quad[0] = FloatPoint(x1, y1 + std::max&lt;float&gt;(adjacentWidth1, 0));
+            quad[1] = FloatPoint(x1, y2 - std::max&lt;float&gt;(adjacentWidth2, 0));
+            quad[2] = FloatPoint(x2, y2 - std::max&lt;float&gt;(-adjacentWidth2, 0));
+            quad[3] = FloatPoint(x2, y1 + std::max&lt;float&gt;(-adjacentWidth1, 0));
+            break;
+        }
+
+        graphicsContext.setStrokeStyle(NoStroke);
+        graphicsContext.setFillColor(color, style.colorSpace());
+        graphicsContext.drawConvexPolygon(4, quad, antialias);
+        graphicsContext.setStrokeStyle(oldStrokeStyle);
+        break;
+    }
+    }
</ins><span class="cx"> }
</span><ins>+
+void RenderElement::paintFocusRing(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset, const RenderStyle&amp; style)
+{
+    ASSERT(style.outlineStyleIsAuto());
+
+    Vector&lt;IntRect&gt; focusRingRects;
+    addFocusRingRects(focusRingRects, paintOffset, paintInfo.paintContainer);
+#if PLATFORM(MAC)
+    bool needsRepaint;
+    paintInfo.context-&gt;drawFocusRing(focusRingRects, style.outlineWidth(), style.outlineOffset(), document().page()-&gt;focusController().timeSinceFocusWasSet(), needsRepaint);
+    if (needsRepaint)
+        document().page()-&gt;focusController().setFocusedElementNeedsRepaint();
+#else
+    paintInfo.context-&gt;drawFocusRing(focusRingRects, style.outlineWidth(), style.outlineOffset(), style.visitedDependentColor(CSSPropertyOutlineColor));
+#endif
+}
+
+void RenderElement::paintOutline(PaintInfo&amp; paintInfo, const LayoutRect&amp; paintRect)
+{
+    if (!hasOutline())
+        return;
+
+    RenderStyle&amp; styleToUse = style();
+    LayoutUnit outlineWidth = styleToUse.outlineWidth();
+
+    int outlineOffset = styleToUse.outlineOffset();
+
+    // Only paint the focus ring by hand if the theme isn't able to draw it.
+    if (styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
+        paintFocusRing(paintInfo, paintRect.location(), styleToUse);
+
+    if (hasOutlineAnnotation() &amp;&amp; !styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
+        addPDFURLRect(paintInfo, paintRect.location());
+
+    if (styleToUse.outlineStyleIsAuto() || styleToUse.outlineStyle() == BNONE)
+        return;
+
+    IntRect inner = snappedIntRect(paintRect);
+    inner.inflate(outlineOffset);
+
+    IntRect outer = snappedIntRect(inner);
+    outer.inflate(outlineWidth);
+
+    // FIXME: This prevents outlines from painting inside the object. See bug 12042
+    if (outer.isEmpty())
+        return;
+
+    EBorderStyle outlineStyle = styleToUse.outlineStyle();
+    Color outlineColor = styleToUse.visitedDependentColor(CSSPropertyOutlineColor);
+
+    GraphicsContext&amp; graphicsContext = *paintInfo.context;
+    bool useTransparencyLayer = outlineColor.hasAlpha();
+    if (useTransparencyLayer) {
+        if (outlineStyle == SOLID) {
+            Path path;
+            path.addRect(outer);
+            path.addRect(inner);
+            graphicsContext.setFillRule(RULE_EVENODD);
+            graphicsContext.setFillColor(outlineColor, styleToUse.colorSpace());
+            graphicsContext.fillPath(path);
+            return;
+        }
+        graphicsContext.beginTransparencyLayer(static_cast&lt;float&gt;(outlineColor.alpha()) / 255);
+        outlineColor = Color(outlineColor.red(), outlineColor.green(), outlineColor.blue());
+    }
+
+    int leftOuter = outer.x();
+    int leftInner = inner.x();
+    int rightOuter = outer.maxX();
+    int rightInner = inner.maxX();
+    int topOuter = outer.y();
+    int topInner = inner.y();
+    int bottomOuter = outer.maxY();
+    int bottomInner = inner.maxY();
+
+    drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(leftOuter, topOuter), FloatPoint(leftInner, bottomOuter)), BSLeft, outlineColor, outlineStyle, outlineWidth, outlineWidth);
+    drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(leftOuter, topOuter), FloatPoint(rightOuter, topInner)), BSTop, outlineColor, outlineStyle, outlineWidth, outlineWidth);
+    drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(rightInner, topOuter), FloatPoint(rightOuter, bottomOuter)), BSRight, outlineColor, outlineStyle, outlineWidth, outlineWidth);
+    drawLineForBoxSide(graphicsContext, FloatRect(FloatPoint(leftOuter, bottomInner), FloatPoint(rightOuter, bottomOuter)), BSBottom, outlineColor, outlineStyle, outlineWidth, outlineWidth);
+
+    if (useTransparencyLayer)
+        graphicsContext.endTransparencyLayer();
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderElement.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -208,6 +208,7 @@
</span><span class="cx">     void setIsCSSAnimating(bool b) { m_isCSSAnimating = b; }
</span><span class="cx">     
</span><span class="cx">     const RenderElement* enclosingRendererWithTextDecoration(TextDecoration, bool firstLine) const;
</span><ins>+    void drawLineForBoxSide(GraphicsContext&amp;, const FloatRect&amp;, BoxSide, Color, EBorderStyle, float adjacentWidth1, float adjacentWidth2, bool antialias = false) const;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     enum BaseTypeFlags {
</span><span class="lines">@@ -264,6 +265,9 @@
</span><span class="cx">     unsigned renderBlockFlowLineLayoutPath() const { return m_renderBlockFlowLineLayoutPath; }
</span><span class="cx">     bool renderBlockFlowHasMarkupTruncation() const { return m_renderBlockFlowHasMarkupTruncation; }
</span><span class="cx"> 
</span><ins>+    void paintFocusRing(PaintInfo&amp;, const LayoutPoint&amp;, const RenderStyle&amp;);
+    void paintOutline(PaintInfo&amp;, const LayoutRect&amp;);
+
</ins><span class="cx"> private:
</span><span class="cx">     RenderElement(ContainerNode&amp;, Ref&lt;RenderStyle&gt;&amp;&amp;, unsigned baseTypeFlags);
</span><span class="cx">     void node() const = delete;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1555,7 +1555,7 @@
</span><span class="cx">     RenderStyle&amp; styleToUse = style();
</span><span class="cx">     // Only paint the focus ring by hand if the theme isn't able to draw it.
</span><span class="cx">     if (styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
</span><del>-        paintFocusRing(paintInfo, paintOffset, &amp;styleToUse);
</del><ins>+        paintFocusRing(paintInfo, paintOffset, styleToUse);
</ins><span class="cx"> 
</span><span class="cx">     if (hasOutlineAnnotation() &amp;&amp; !styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
</span><span class="cx">         addPDFURLRect(paintInfo, paintOffset);
</span><span class="lines">@@ -1614,11 +1614,11 @@
</span><span class="cx">     IntRect pixelSnappedNextLine = snappedIntRect(paintOffset.x() + nextline.x(), 0, nextline.width(), 0);
</span><span class="cx">     
</span><span class="cx">     // left edge
</span><del>-    drawLineForBoxSide(graphicsContext,
-        pixelSnappedBox.x() - outlineWidth,
-        pixelSnappedBox.y() - (lastline.isEmpty() || thisline.x() &lt; lastline.x() || (lastline.maxX() - 1) &lt;= thisline.x() ? outlineWidth : 0),
-        pixelSnappedBox.x(),
-        pixelSnappedBox.maxY() + (nextline.isEmpty() || thisline.x() &lt;= nextline.x() || (nextline.maxX() - 1) &lt;= thisline.x() ? outlineWidth : 0),
</del><ins>+    drawLineForBoxSide(*graphicsContext,
+        FloatRect(FloatPoint(pixelSnappedBox.x() - outlineWidth,
+        pixelSnappedBox.y() - (lastline.isEmpty() || thisline.x() &lt; lastline.x() || (lastline.maxX() - 1) &lt;= thisline.x() ? outlineWidth : 0)),
+        FloatPoint(pixelSnappedBox.x(),
+        pixelSnappedBox.maxY() + (nextline.isEmpty() || thisline.x() &lt;= nextline.x() || (nextline.maxX() - 1) &lt;= thisline.x() ? outlineWidth : 0))),
</ins><span class="cx">         BSLeft,
</span><span class="cx">         outlineColor, outlineStyle,
</span><span class="cx">         (lastline.isEmpty() || thisline.x() &lt; lastline.x() || (lastline.maxX() - 1) &lt;= thisline.x() ? outlineWidth : -outlineWidth),
</span><span class="lines">@@ -1626,11 +1626,11 @@
</span><span class="cx">         antialias);
</span><span class="cx">     
</span><span class="cx">     // right edge
</span><del>-    drawLineForBoxSide(graphicsContext,
-        pixelSnappedBox.maxX(),
-        pixelSnappedBox.y() - (lastline.isEmpty() || lastline.maxX() &lt; thisline.maxX() || (thisline.maxX() - 1) &lt;= lastline.x() ? outlineWidth : 0),
-        pixelSnappedBox.maxX() + outlineWidth,
-        pixelSnappedBox.maxY() + (nextline.isEmpty() || nextline.maxX() &lt;= thisline.maxX() || (thisline.maxX() - 1) &lt;= nextline.x() ? outlineWidth : 0),
</del><ins>+    drawLineForBoxSide(*graphicsContext,
+        FloatRect(FloatPoint(pixelSnappedBox.maxX(),
+        pixelSnappedBox.y() - (lastline.isEmpty() || lastline.maxX() &lt; thisline.maxX() || (thisline.maxX() - 1) &lt;= lastline.x() ? outlineWidth : 0)),
+        FloatPoint(pixelSnappedBox.maxX() + outlineWidth,
+        pixelSnappedBox.maxY() + (nextline.isEmpty() || nextline.maxX() &lt;= thisline.maxX() || (thisline.maxX() - 1) &lt;= nextline.x() ? outlineWidth : 0))),
</ins><span class="cx">         BSRight,
</span><span class="cx">         outlineColor, outlineStyle,
</span><span class="cx">         (lastline.isEmpty() || lastline.maxX() &lt; thisline.maxX() || (thisline.maxX() - 1) &lt;= lastline.x() ? outlineWidth : -outlineWidth),
</span><span class="lines">@@ -1638,32 +1638,32 @@
</span><span class="cx">         antialias);
</span><span class="cx">     // upper edge
</span><span class="cx">     if (thisline.x() &lt; lastline.x())
</span><del>-        drawLineForBoxSide(graphicsContext,
-            pixelSnappedBox.x() - outlineWidth,
-            pixelSnappedBox.y() - outlineWidth,
-            std::min(pixelSnappedBox.maxX() + outlineWidth, (lastline.isEmpty() ? 1000000 : pixelSnappedLastLine.x())),
-            pixelSnappedBox.y(),
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(pixelSnappedBox.x() - outlineWidth,
+            pixelSnappedBox.y() - outlineWidth),
+            FloatPoint(std::min(pixelSnappedBox.maxX() + outlineWidth, (lastline.isEmpty() ? 1000000 : pixelSnappedLastLine.x())),
+            pixelSnappedBox.y())),
</ins><span class="cx">             BSTop, outlineColor, outlineStyle,
</span><span class="cx">             outlineWidth,
</span><span class="cx">             (!lastline.isEmpty() &amp;&amp; paintOffset.x() + lastline.x() + 1 &lt; pixelSnappedBox.maxX() + outlineWidth) ? -outlineWidth : outlineWidth,
</span><span class="cx">             antialias);
</span><span class="cx">     
</span><span class="cx">     if (lastline.maxX() &lt; thisline.maxX())
</span><del>-        drawLineForBoxSide(graphicsContext,
-            std::max(lastline.isEmpty() ? -1000000 : pixelSnappedLastLine.maxX(), pixelSnappedBox.x() - outlineWidth),
-            pixelSnappedBox.y() - outlineWidth,
-            pixelSnappedBox.maxX() + outlineWidth,
-            pixelSnappedBox.y(),
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(std::max(lastline.isEmpty() ? -1000000 : pixelSnappedLastLine.maxX(), pixelSnappedBox.x() - outlineWidth),
+            pixelSnappedBox.y() - outlineWidth),
+            FloatPoint(pixelSnappedBox.maxX() + outlineWidth,
+            pixelSnappedBox.y())),
</ins><span class="cx">             BSTop, outlineColor, outlineStyle,
</span><span class="cx">             (!lastline.isEmpty() &amp;&amp; pixelSnappedBox.x() - outlineWidth &lt; paintOffset.x() + lastline.maxX()) ? -outlineWidth : outlineWidth,
</span><span class="cx">             outlineWidth, antialias);
</span><span class="cx"> 
</span><span class="cx">     if (thisline.x() == thisline.maxX())
</span><del>-          drawLineForBoxSide(graphicsContext,
-            pixelSnappedBox.x() - outlineWidth,
-            pixelSnappedBox.y() - outlineWidth,
-            pixelSnappedBox.maxX() + outlineWidth,
-            pixelSnappedBox.y(),
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(pixelSnappedBox.x() - outlineWidth,
+            pixelSnappedBox.y() - outlineWidth),
+            FloatPoint(pixelSnappedBox.maxX() + outlineWidth,
+            pixelSnappedBox.y())),
</ins><span class="cx">             BSTop, outlineColor, outlineStyle,
</span><span class="cx">             outlineWidth,
</span><span class="cx">             outlineWidth,
</span><span class="lines">@@ -1671,32 +1671,32 @@
</span><span class="cx"> 
</span><span class="cx">     // lower edge
</span><span class="cx">     if (thisline.x() &lt; nextline.x())
</span><del>-        drawLineForBoxSide(graphicsContext,
-            pixelSnappedBox.x() - outlineWidth,
-            pixelSnappedBox.maxY(),
-            std::min(pixelSnappedBox.maxX() + outlineWidth, !nextline.isEmpty() ? pixelSnappedNextLine.x() + 1 : 1000000),
-            pixelSnappedBox.maxY() + outlineWidth,
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(pixelSnappedBox.x() - outlineWidth,
+            pixelSnappedBox.maxY()),
+            FloatPoint(std::min(pixelSnappedBox.maxX() + outlineWidth, !nextline.isEmpty() ? pixelSnappedNextLine.x() + 1 : 1000000),
+            pixelSnappedBox.maxY() + outlineWidth)),
</ins><span class="cx">             BSBottom, outlineColor, outlineStyle,
</span><span class="cx">             outlineWidth,
</span><span class="cx">             (!nextline.isEmpty() &amp;&amp; paintOffset.x() + nextline.x() + 1 &lt; pixelSnappedBox.maxX() + outlineWidth) ? -outlineWidth : outlineWidth,
</span><span class="cx">             antialias);
</span><span class="cx">     
</span><span class="cx">     if (nextline.maxX() &lt; thisline.maxX())
</span><del>-        drawLineForBoxSide(graphicsContext,
-            std::max(!nextline.isEmpty() ? pixelSnappedNextLine.maxX() : -1000000, pixelSnappedBox.x() - outlineWidth),
-            pixelSnappedBox.maxY(),
-            pixelSnappedBox.maxX() + outlineWidth,
-            pixelSnappedBox.maxY() + outlineWidth,
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(std::max(!nextline.isEmpty() ? pixelSnappedNextLine.maxX() : -1000000, pixelSnappedBox.x() - outlineWidth),
+            pixelSnappedBox.maxY()),
+            FloatPoint(pixelSnappedBox.maxX() + outlineWidth,
+            pixelSnappedBox.maxY() + outlineWidth)),
</ins><span class="cx">             BSBottom, outlineColor, outlineStyle,
</span><span class="cx">             (!nextline.isEmpty() &amp;&amp; pixelSnappedBox.x() - outlineWidth &lt; paintOffset.x() + nextline.maxX()) ? -outlineWidth : outlineWidth,
</span><span class="cx">             outlineWidth, antialias);
</span><span class="cx"> 
</span><span class="cx">     if (thisline.x() == thisline.maxX())
</span><del>-          drawLineForBoxSide(graphicsContext,
-            pixelSnappedBox.x() - outlineWidth,
-            pixelSnappedBox.maxY(),
-            pixelSnappedBox.maxX() + outlineWidth,
-            pixelSnappedBox.maxY() + outlineWidth,
</del><ins>+        drawLineForBoxSide(*graphicsContext,
+            FloatRect(FloatPoint(pixelSnappedBox.x() - outlineWidth,
+            pixelSnappedBox.maxY()),
+            FloatPoint(pixelSnappedBox.maxX() + outlineWidth,
+            pixelSnappedBox.maxY() + outlineWidth)),
</ins><span class="cx">             BSBottom, outlineColor, outlineStyle,
</span><span class="cx">             outlineWidth,
</span><span class="cx">             outlineWidth,
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -620,7 +620,7 @@
</span><span class="cx">                 LayoutUnit ruleTop = isHorizontalWritingMode() ? paintOffset.y() + borderTop() + paddingTop() : paintOffset.y() + ruleLogicalLeft - ruleThickness / 2 + ruleAdd;
</span><span class="cx">                 LayoutUnit ruleBottom = isHorizontalWritingMode() ? ruleTop + contentHeight() : ruleTop + ruleThickness;
</span><span class="cx">                 IntRect pixelSnappedRuleRect = snappedIntRect(ruleLeft, ruleTop, ruleRight - ruleLeft, ruleBottom - ruleTop);
</span><del>-                drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), boxSide, ruleColor, ruleStyle, 0, 0, antialias);
</del><ins>+                drawLineForBoxSide(*paintInfo.context, pixelSnappedRuleRect, boxSide, ruleColor, ruleStyle, 0, 0, antialias);
</ins><span class="cx">             }
</span><span class="cx">             
</span><span class="cx">             ruleLogicalLeft = currLogicalLeftOffset;
</span><span class="lines">@@ -651,7 +651,7 @@
</span><span class="cx">         for (unsigned i = 1; i &lt; colCount; i++) {
</span><span class="cx">             ruleRect.move(step);
</span><span class="cx">             IntRect pixelSnappedRuleRect = snappedIntRect(ruleRect);
</span><del>-            drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), boxSide, ruleColor, ruleStyle, 0, 0, antialias);
</del><ins>+            drawLineForBoxSide(*paintInfo.context, pixelSnappedRuleRect, boxSide, ruleColor, ruleStyle, 0, 0, antialias);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;EventHandler.h&quot;
</span><span class="cx"> #include &quot;FloatQuad.h&quot;
</span><span class="cx"> #include &quot;FlowThreadController.h&quot;
</span><del>-#include &quot;FocusController.h&quot;
</del><span class="cx"> #include &quot;FrameSelection.h&quot;
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="cx"> #include &quot;GeometryUtilities.h&quot;
</span><span class="lines">@@ -708,271 +707,6 @@
</span><span class="cx">     return downcast&lt;RenderBlock&gt;(parent);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderObject::drawLineForBoxSide(GraphicsContext* graphicsContext, float x1, float y1, float x2, float y2,
-    BoxSide side, Color color, EBorderStyle borderStyle, float adjacentWidth1, float adjacentWidth2, bool antialias) const
-{
-    float deviceScaleFactor = document().deviceScaleFactor();
-    float thickness;
-    float length;
-    if (side == BSTop || side == BSBottom) {
-        thickness = y2 - y1;
-        length = x2 - x1;
-    } else {
-        thickness = x2 - x1;
-        length = y2 - y1;
-    }
-    if (borderStyle == DOUBLE &amp;&amp; (thickness * deviceScaleFactor) &lt; 3)
-        borderStyle = SOLID;
-
-    // FIXME: We really would like this check to be an ASSERT as we don't want to draw empty borders. However
-    // nothing guarantees that the following recursive calls to drawLineForBoxSide will have non-null dimensions.
-    if (!thickness || !length)
-        return;
-
-    const RenderStyle&amp; style = this-&gt;style();
-    switch (borderStyle) {
-        case BNONE:
-        case BHIDDEN:
-            return;
-        case DOTTED:
-        case DASHED: {
-            bool wasAntialiased = graphicsContext-&gt;shouldAntialias();
-            StrokeStyle oldStrokeStyle = graphicsContext-&gt;strokeStyle();
-            graphicsContext-&gt;setShouldAntialias(antialias);
-            graphicsContext-&gt;setStrokeColor(color, style.colorSpace());
-            graphicsContext-&gt;setStrokeThickness(thickness);
-            graphicsContext-&gt;setStrokeStyle(borderStyle == DASHED ? DashedStroke : DottedStroke);
-            graphicsContext-&gt;drawLine(roundPointToDevicePixels(LayoutPoint(x1, y1), deviceScaleFactor), roundPointToDevicePixels(LayoutPoint(x2, y2), deviceScaleFactor));
-            graphicsContext-&gt;setShouldAntialias(wasAntialiased);
-            graphicsContext-&gt;setStrokeStyle(oldStrokeStyle);
-            break;
-        }
-        case DOUBLE: {
-            float thirdOfThickness = ceilToDevicePixel(thickness / 3, deviceScaleFactor);
-            ASSERT(thirdOfThickness);
-
-            if (adjacentWidth1 == 0 &amp;&amp; adjacentWidth2 == 0) {
-                StrokeStyle oldStrokeStyle = graphicsContext-&gt;strokeStyle();
-                graphicsContext-&gt;setStrokeStyle(NoStroke);
-                graphicsContext-&gt;setFillColor(color, style.colorSpace());
-                
-                bool wasAntialiased = graphicsContext-&gt;shouldAntialias();
-                graphicsContext-&gt;setShouldAntialias(antialias);
-
-                switch (side) {
-                    case BSTop:
-                    case BSBottom:
-                        graphicsContext-&gt;drawRect(snapRectToDevicePixels(x1, y1, length, thirdOfThickness, deviceScaleFactor));
-                        graphicsContext-&gt;drawRect(snapRectToDevicePixels(x1, y2 - thirdOfThickness, length, thirdOfThickness, deviceScaleFactor));
-                        break;
-                    case BSLeft:
-                    case BSRight:
-                        graphicsContext-&gt;drawRect(snapRectToDevicePixels(x1, y1, thirdOfThickness, length, deviceScaleFactor));
-                        graphicsContext-&gt;drawRect(snapRectToDevicePixels(x2 - thirdOfThickness, y1, thirdOfThickness, length, deviceScaleFactor));
-                        break;
-                }
-
-                graphicsContext-&gt;setShouldAntialias(wasAntialiased);
-                graphicsContext-&gt;setStrokeStyle(oldStrokeStyle);
-            } else {
-                float adjacent1BigThird = ceilToDevicePixel(adjacentWidth1 / 3, deviceScaleFactor);
-                float adjacent2BigThird = ceilToDevicePixel(adjacentWidth2 / 3, deviceScaleFactor);
-
-                float offset1 = floorToDevicePixel(fabs(adjacentWidth1) * 2 / 3, deviceScaleFactor);
-                float offset2 = floorToDevicePixel(fabs(adjacentWidth2) * 2 / 3, deviceScaleFactor);
-
-                float mitreOffset1 = adjacentWidth1 &lt; 0 ? offset1 : 0;
-                float mitreOffset2 = adjacentWidth1 &gt; 0 ? offset1 : 0;
-                float mitreOffset3 = adjacentWidth2 &lt; 0 ? offset2 : 0;
-                float mitreOffset4 = adjacentWidth2 &gt; 0 ? offset2 : 0;
-
-                FloatRect paintBorderRect;
-                switch (side) {
-                    case BSTop:
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset1, y1, (x2 - mitreOffset3) - (x1 + mitreOffset1), thirdOfThickness), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset2, y2 - thirdOfThickness, (x2 - mitreOffset4) - (x1 + mitreOffset2), thirdOfThickness), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-                        break;
-                    case BSLeft:
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1, y1 + mitreOffset1, thirdOfThickness, (y2 - mitreOffset3) - (y1 + mitreOffset1)), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x2 - thirdOfThickness, y1 + mitreOffset2, thirdOfThickness, (y2 - mitreOffset4) - (y1 + mitreOffset2)), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-                        break;
-                    case BSBottom:
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset2, y1, (x2 - mitreOffset4) - (x1 + mitreOffset2), thirdOfThickness), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1 + mitreOffset1, y2 - thirdOfThickness, (x2 - mitreOffset3) - (x1 + mitreOffset1), thirdOfThickness), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-                        break;
-                    case BSRight:
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x1, y1 + mitreOffset2, thirdOfThickness, (y2 - mitreOffset4) - (y1 + mitreOffset2)), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-
-                        paintBorderRect = snapRectToDevicePixels(LayoutRect(x2 - thirdOfThickness, y1 + mitreOffset1, thirdOfThickness, (y2 - mitreOffset3) - (y1 + mitreOffset1)), deviceScaleFactor);
-                        drawLineForBoxSide(graphicsContext, paintBorderRect.x(), paintBorderRect.y(), paintBorderRect.maxX(), paintBorderRect.maxY(), side, color, SOLID,
-                            adjacent1BigThird, adjacent2BigThird, antialias);
-                        break;
-                    default:
-                        break;
-                }
-            }
-            break;
-        }
-        case RIDGE:
-        case GROOVE: {
-            EBorderStyle s1;
-            EBorderStyle s2;
-            if (borderStyle == GROOVE) {
-                s1 = INSET;
-                s2 = OUTSET;
-            } else {
-                s1 = OUTSET;
-                s2 = INSET;
-            }
-
-            float adjacent1BigHalf = ceilToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
-            float adjacent2BigHalf = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
-
-            float adjacent1SmallHalf = floorToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
-            float adjacent2SmallHalf = floorToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
-
-            float offset1 = 0;
-            float offset2 = 0;
-            float offset3 = 0;
-            float offset4 = 0;
-
-            if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth1 &lt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth1 &gt; 0))
-                offset1 = floorToDevicePixel(adjacentWidth1 / 2, deviceScaleFactor);
-
-            if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth2 &lt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth2 &gt; 0))
-                offset2 = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
-
-            if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth1 &gt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth1 &lt; 0))
-                offset3 = floorToDevicePixel(fabs(adjacentWidth1) / 2, deviceScaleFactor);
-
-            if (((side == BSTop || side == BSLeft) &amp;&amp; adjacentWidth2 &gt; 0) || ((side == BSBottom || side == BSRight) &amp;&amp; adjacentWidth2 &lt; 0))
-                offset4 = ceilToDevicePixel(adjacentWidth2 / 2, deviceScaleFactor);
-
-            float adjustedX = ceilToDevicePixel((x1 + x2) / 2, deviceScaleFactor);
-            float adjustedY = ceilToDevicePixel((y1 + y2) / 2, deviceScaleFactor);
-            /// Quads can't use the default snapping rect functions.
-            x1 = roundToDevicePixel(x1, deviceScaleFactor);
-            x2 = roundToDevicePixel(x2, deviceScaleFactor);
-            y1 = roundToDevicePixel(y1, deviceScaleFactor);
-            y2 = roundToDevicePixel(y2, deviceScaleFactor);
-
-            switch (side) {
-                case BSTop:
-                    drawLineForBoxSide(graphicsContext, x1 + offset1, y1, x2 - offset2, adjustedY, side, color, s1, adjacent1BigHalf, adjacent2BigHalf, antialias);
-                    drawLineForBoxSide(graphicsContext, x1 + offset3, adjustedY, x2 - offset4, y2, side, color, s2, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
-                    break;
-                case BSLeft:
-                    drawLineForBoxSide(graphicsContext, x1, y1 + offset1, adjustedX, y2 - offset2, side, color, s1, adjacent1BigHalf, adjacent2BigHalf, antialias);
-                    drawLineForBoxSide(graphicsContext, adjustedX, y1 + offset3, x2, y2 - offset4, side, color, s2, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
-                    break;
-                case BSBottom:
-                    drawLineForBoxSide(graphicsContext, x1 + offset1, y1, x2 - offset2, adjustedY, side, color, s2, adjacent1BigHalf, adjacent2BigHalf, antialias);
-                    drawLineForBoxSide(graphicsContext, x1 + offset3, adjustedY, x2 - offset4, y2, side, color, s1, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
-                    break;
-                case BSRight:
-                    drawLineForBoxSide(graphicsContext, x1, y1 + offset1, adjustedX, y2 - offset2, side, color, s2, adjacent1BigHalf, adjacent2BigHalf, antialias);
-                    drawLineForBoxSide(graphicsContext, adjustedX, y1 + offset3, x2, y2 - offset4, side, color, s1, adjacent1SmallHalf, adjacent2SmallHalf, antialias);
-                    break;
-            }
-            break;
-        }
-        case INSET:
-        case OUTSET:
-            calculateBorderStyleColor(borderStyle, side, color);
-            FALLTHROUGH;
-        case SOLID: {
-            StrokeStyle oldStrokeStyle = graphicsContext-&gt;strokeStyle();
-            ASSERT(x2 &gt;= x1);
-            ASSERT(y2 &gt;= y1);
-            if (!adjacentWidth1 &amp;&amp; !adjacentWidth2) {
-                // Turn off antialiasing to match the behavior of drawConvexPolygon();
-                // this matters for rects in transformed contexts.
-                graphicsContext-&gt;setStrokeStyle(NoStroke);
-                graphicsContext-&gt;setFillColor(color, style.colorSpace());
-                bool wasAntialiased = graphicsContext-&gt;shouldAntialias();
-                graphicsContext-&gt;setShouldAntialias(antialias);
-                graphicsContext-&gt;drawRect(snapRectToDevicePixels(x1, y1, x2 - x1, y2 - y1, deviceScaleFactor));
-                graphicsContext-&gt;setShouldAntialias(wasAntialiased);
-                graphicsContext-&gt;setStrokeStyle(oldStrokeStyle);
-                return;
-            }
-
-            // FIXME: These roundings should be replaced by ASSERT(device pixel positioned) when all the callers transitioned to device pixels.
-            x1 = roundToDevicePixel(x1, deviceScaleFactor);
-            y1 = roundToDevicePixel(y1, deviceScaleFactor);
-            x2 = roundToDevicePixel(x2, deviceScaleFactor);
-            y2 = roundToDevicePixel(y2, deviceScaleFactor);
-
-            FloatPoint quad[4];
-            switch (side) {
-                case BSTop:
-                    quad[0] = FloatPoint(x1 + std::max&lt;float&gt;(-adjacentWidth1, 0), y1);
-                    quad[1] = FloatPoint(x1 + std::max&lt;float&gt;(adjacentWidth1, 0), y2);
-                    quad[2] = FloatPoint(x2 - std::max&lt;float&gt;(adjacentWidth2, 0), y2);
-                    quad[3] = FloatPoint(x2 - std::max&lt;float&gt;(-adjacentWidth2, 0), y1);
-                    break;
-                case BSBottom:
-                    quad[0] = FloatPoint(x1 + std::max&lt;float&gt;(adjacentWidth1, 0), y1);
-                    quad[1] = FloatPoint(x1 + std::max&lt;float&gt;(-adjacentWidth1, 0), y2);
-                    quad[2] = FloatPoint(x2 - std::max&lt;float&gt;(-adjacentWidth2, 0), y2);
-                    quad[3] = FloatPoint(x2 - std::max&lt;float&gt;(adjacentWidth2, 0), y1);
-                    break;
-                case BSLeft:
-                    quad[0] = FloatPoint(x1, y1 + std::max&lt;float&gt;(-adjacentWidth1, 0));
-                    quad[1] = FloatPoint(x1, y2 - std::max&lt;float&gt;(-adjacentWidth2, 0));
-                    quad[2] = FloatPoint(x2, y2 - std::max&lt;float&gt;(adjacentWidth2, 0));
-                    quad[3] = FloatPoint(x2, y1 + std::max&lt;float&gt;(adjacentWidth1, 0));
-                    break;
-                case BSRight:
-                    quad[0] = FloatPoint(x1, y1 + std::max&lt;float&gt;(adjacentWidth1, 0));
-                    quad[1] = FloatPoint(x1, y2 - std::max&lt;float&gt;(adjacentWidth2, 0));
-                    quad[2] = FloatPoint(x2, y2 - std::max&lt;float&gt;(-adjacentWidth2, 0));
-                    quad[3] = FloatPoint(x2, y1 + std::max&lt;float&gt;(-adjacentWidth1, 0));
-                    break;
-            }
-
-            graphicsContext-&gt;setStrokeStyle(NoStroke);
-            graphicsContext-&gt;setFillColor(color, style.colorSpace());
-            graphicsContext-&gt;drawConvexPolygon(4, quad, antialias);
-            graphicsContext-&gt;setStrokeStyle(oldStrokeStyle);
-            break;
-        }
-    }
-}
-
-void RenderObject::paintFocusRing(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset, RenderStyle* style)
-{
-    ASSERT(style-&gt;outlineStyleIsAuto());
-
-    Vector&lt;IntRect&gt; focusRingRects;
-    addFocusRingRects(focusRingRects, paintOffset, paintInfo.paintContainer);
-#if PLATFORM(MAC)
-    bool needsRepaint;
-    paintInfo.context-&gt;drawFocusRing(focusRingRects, style-&gt;outlineWidth(), style-&gt;outlineOffset(), document().page()-&gt;focusController().timeSinceFocusWasSet(), needsRepaint);
-    if (needsRepaint)
-        document().page()-&gt;focusController().setFocusedElementNeedsRepaint();
-#else
-    paintInfo.context-&gt;drawFocusRing(focusRingRects, style-&gt;outlineWidth(), style-&gt;outlineOffset(), style-&gt;visitedDependentColor(CSSPropertyOutlineColor));
-#endif
-}
-
</del><span class="cx"> void RenderObject::addPDFURLRect(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset)
</span><span class="cx"> {
</span><span class="cx">     Vector&lt;IntRect&gt; focusRingRects;
</span><span class="lines">@@ -990,73 +724,6 @@
</span><span class="cx">     paintInfo.context-&gt;setURLForRect(node-&gt;document().completeURL(href), snappedIntRect(urlRect));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderObject::paintOutline(PaintInfo&amp; paintInfo, const LayoutRect&amp; paintRect)
-{
-    if (!hasOutline())
-        return;
-
-    RenderStyle&amp; styleToUse = style();
-    LayoutUnit outlineWidth = styleToUse.outlineWidth();
-
-    int outlineOffset = styleToUse.outlineOffset();
-
-    // Only paint the focus ring by hand if the theme isn't able to draw it.
-    if (styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
-        paintFocusRing(paintInfo, paintRect.location(), &amp;styleToUse);
-
-    if (hasOutlineAnnotation() &amp;&amp; !styleToUse.outlineStyleIsAuto() &amp;&amp; !theme().supportsFocusRing(styleToUse))
-        addPDFURLRect(paintInfo, paintRect.location());
-
-    if (styleToUse.outlineStyleIsAuto() || styleToUse.outlineStyle() == BNONE)
-        return;
-
-    IntRect inner = snappedIntRect(paintRect);
-    inner.inflate(outlineOffset);
-
-    IntRect outer = snappedIntRect(inner);
-    outer.inflate(outlineWidth);
-
-    // FIXME: This prevents outlines from painting inside the object. See bug 12042
-    if (outer.isEmpty())
-        return;
-
-    EBorderStyle outlineStyle = styleToUse.outlineStyle();
-    Color outlineColor = styleToUse.visitedDependentColor(CSSPropertyOutlineColor);
-
-    GraphicsContext* graphicsContext = paintInfo.context;
-    bool useTransparencyLayer = outlineColor.hasAlpha();
-    if (useTransparencyLayer) {
-        if (outlineStyle == SOLID) {
-            Path path;
-            path.addRect(outer);
-            path.addRect(inner);
-            graphicsContext-&gt;setFillRule(RULE_EVENODD);
-            graphicsContext-&gt;setFillColor(outlineColor, styleToUse.colorSpace());
-            graphicsContext-&gt;fillPath(path);
-            return;
-        }
-        graphicsContext-&gt;beginTransparencyLayer(static_cast&lt;float&gt;(outlineColor.alpha()) / 255);
-        outlineColor = Color(outlineColor.red(), outlineColor.green(), outlineColor.blue());
-    }
-
-    int leftOuter = outer.x();
-    int leftInner = inner.x();
-    int rightOuter = outer.maxX();
-    int rightInner = inner.maxX();
-    int topOuter = outer.y();
-    int topInner = inner.y();
-    int bottomOuter = outer.maxY();
-    int bottomInner = inner.maxY();
-    
-    drawLineForBoxSide(graphicsContext, leftOuter, topOuter, leftInner, bottomOuter, BSLeft, outlineColor, outlineStyle, outlineWidth, outlineWidth);
-    drawLineForBoxSide(graphicsContext, leftOuter, topOuter, rightOuter, topInner, BSTop, outlineColor, outlineStyle, outlineWidth, outlineWidth);
-    drawLineForBoxSide(graphicsContext, rightInner, topOuter, rightOuter, bottomOuter, BSRight, outlineColor, outlineStyle, outlineWidth, outlineWidth);
-    drawLineForBoxSide(graphicsContext, leftOuter, bottomInner, rightOuter, bottomOuter, BSBottom, outlineColor, outlineStyle, outlineWidth, outlineWidth);
-
-    if (useTransparencyLayer)
-        graphicsContext-&gt;endTransparencyLayer();
-}
-
</del><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> // This function is similar in spirit to RenderText::absoluteRectsForRange, but returns rectangles
</span><span class="cx"> // which are annotated with additional state which helps iOS draw selections in its unique way.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderObject.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -857,10 +857,7 @@
</span><span class="cx"> 
</span><span class="cx">     RespectImageOrientationEnum shouldRespectImageOrientation() const;
</span><span class="cx"> 
</span><del>-    void drawLineForBoxSide(GraphicsContext*, float x1, float y1, float x2, float y2, BoxSide, Color, EBorderStyle, float adjbw1, float adjbw2, bool antialias = false) const;
</del><span class="cx"> protected:
</span><del>-    void paintFocusRing(PaintInfo&amp;, const LayoutPoint&amp;, RenderStyle*);
-    void paintOutline(PaintInfo&amp;, const LayoutRect&amp;);
</del><span class="cx">     void addPDFURLRect(PaintInfo&amp;, const LayoutPoint&amp;);
</span><span class="cx">     Node&amp; nodeForNonAnonymous() const { ASSERT(!isAnonymous()); return m_node; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderTableCell.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1244,7 +1244,7 @@
</span><span class="cx">     
</span><span class="cx">     for (CollapsedBorder* border = borders.nextBorder(); border; border = borders.nextBorder()) {
</span><span class="cx">         if (border-&gt;borderValue.isSameIgnoringColor(*table()-&gt;currentBorderValue()))
</span><del>-            drawLineForBoxSide(graphicsContext, border-&gt;x1, border-&gt;y1, border-&gt;x2, border-&gt;y2, border-&gt;side, 
</del><ins>+            drawLineForBoxSide(*graphicsContext, FloatRect(FloatPoint(border-&gt;x1, border-&gt;y1), FloatPoint(border-&gt;x2, border-&gt;y2)), border-&gt;side,
</ins><span class="cx">                 border-&gt;borderValue.color(), border-&gt;style, 0, 0, antialias);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableSectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableSection.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableSection.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderTableSection.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1120,7 +1120,7 @@
</span><span class="cx">     rect.intersect(paintInfo.rect);
</span><span class="cx">     if (rect.isEmpty())
</span><span class="cx">         return;
</span><del>-    drawLineForBoxSide(paintInfo.context, rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height(), side, style().visitedDependentColor(borderColor), borderStyle, 0, 0, antialias);
</del><ins>+    drawLineForBoxSide(*paintInfo.context, rect, side, style().visitedDependentColor(borderColor), borderStyle, 0, 0, antialias);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int RenderTableSection::offsetLeftForRowGroupBorder(RenderTableCell* cell, const LayoutRect&amp; rowGroupRect, unsigned row)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderTheme.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -307,7 +307,7 @@
</span><span class="cx">     virtual bool paintMenuListDecorations(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><span class="cx"> 
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const;
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) { return true; }
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) { return true; }
</ins><span class="cx"> 
</span><span class="cx">     virtual bool paintPushButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><span class="cx">     virtual bool paintSquareButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -860,7 +860,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeGtk::paintMenuListButtonDecorations(const RenderObject&amp; object, const PaintInfo&amp; info, const FloatRect&amp; rect)
</del><ins>+bool RenderThemeGtk::paintMenuListButtonDecorations(const RenderBox&amp; object, const PaintInfo&amp; info, const FloatRect&amp; rect)
</ins><span class="cx"> {
</span><span class="cx">     return paintMenuList(object, info, rect);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeGtkh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeGtk.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     virtual void adjustMenuListStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx">     virtual bool paintMenuList(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx">     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeIOS.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     virtual bool paintTextAreaDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void adjustSliderTrackStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx">     virtual bool paintSliderTrack(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -613,7 +613,7 @@
</span><span class="cx">         adjustInputElementButtonStyle(style, static_cast&lt;HTMLInputElement&amp;&gt;(*element));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeIOS::paintMenuListButtonDecorations(const RenderObject&amp; box, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</del><ins>+bool RenderThemeIOS::paintMenuListButtonDecorations(const RenderBox&amp; box, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</ins><span class="cx"> {
</span><span class="cx">     RenderStyle&amp; style = box.style();
</span><span class="cx">     float borderTopWidth = style.borderTopWidth();
</span><span class="lines">@@ -643,7 +643,7 @@
</span><span class="cx"> 
</span><span class="cx">     float separator = clip.maxX() - MenuListButtonPaddingRight;
</span><span class="cx"> 
</span><del>-    box.drawLineForBoxSide(paintInfo.context, separator - borderTopWidth, clip.y(), separator, clip.maxY(), BSRight, style.visitedDependentColor(CSSPropertyBorderTopColor), style.borderTopStyle(), 0, 0);
</del><ins>+    box.drawLineForBoxSide(*paintInfo.context, FloatRect(FloatPoint(separator - borderTopWidth, clip.y()), FloatPoint(separator, clip.maxY())), BSRight, style.visitedDependentColor(CSSPropertyBorderTopColor), style.borderTopStyle(), 0, 0);
</ins><span class="cx"> 
</span><span class="cx">     FloatRect buttonClip(separator - adjustTop, clip.y() - adjustTop, MenuListButtonPaddingRight + adjustTop + adjustRight, clip.height() + adjustTop + adjustBottom);
</span><span class="cx"> 
</span><span class="lines">@@ -662,7 +662,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Paint Indicators.
</span><span class="cx"> 
</span><del>-    if (box.isMenuList() &amp;&amp; downcast&lt;HTMLSelectElement&gt;(box.node())-&gt;multiple()) {
</del><ins>+    if (box.isMenuList() &amp;&amp; downcast&lt;HTMLSelectElement&gt;(box.element())-&gt;multiple()) {
</ins><span class="cx">         int size = 2;
</span><span class="cx">         int count = 3;
</span><span class="cx">         int padding = 3;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">     virtual bool paintMenuList(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</span><span class="cx">     virtual void adjustMenuListStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx"> 
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</ins><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx"> 
</span><span class="cx">     virtual void adjustProgressBarStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -1285,7 +1285,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeMac::paintMenuListButtonDecorations(const RenderObject&amp; renderer, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</del><ins>+bool RenderThemeMac::paintMenuListButtonDecorations(const RenderBox&amp; renderer, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</ins><span class="cx"> {
</span><span class="cx">     IntRect bounds = IntRect(rect.x() + renderer.style().borderLeftWidth(),
</span><span class="cx">         rect.y() + renderer.style().borderTopWidth(),
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeWin.cpp (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeWin.cpp        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeWin.cpp        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -747,7 +747,7 @@
</span><span class="cx"> 
</span><span class="cx">     drawControl(paintInfo.context, renderer, theme, ThemeData(part, determineState(renderer)), IntRect(rect));
</span><span class="cx">     
</span><del>-    return paintMenuListButtonDecorations(renderer, paintInfo, FloatRect(rect));
</del><ins>+    return paintMenuListButtonDecorations(downcast&lt;RenderBox&gt;(renderer), paintInfo, FloatRect(rect));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeWin::adjustMenuListStyle(StyleResolver&amp; styleResolver, RenderStyle&amp; style, Element* e) const
</span><span class="lines">@@ -787,7 +787,7 @@
</span><span class="cx">     style.setWhiteSpace(PRE);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeWin::paintMenuListButtonDecorations(const RenderObject&amp; renderer, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</del><ins>+bool RenderThemeWin::paintMenuListButtonDecorations(const RenderBox&amp; renderer, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: Don't make hardcoded assumptions about the thickness of the textfield border.
</span><span class="cx">     int borderThickness = haveTheme ? 1 : 2;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeWinh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeWin.h (188182 => 188183)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeWin.h        2015-08-08 02:14:43 UTC (rev 188182)
+++ trunk/Source/WebCore/rendering/RenderThemeWin.h        2015-08-08 03:06:52 UTC (rev 188183)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx">     virtual bool paintMenuList(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</span><span class="cx">     virtual void adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const override;
</span><span class="cx"> 
</span><del>-    virtual bool paintMenuListButtonDecorations(const RenderObject&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</del><ins>+    virtual bool paintMenuListButtonDecorations(const RenderBox&amp;, const PaintInfo&amp;, const FloatRect&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool paintSliderTrack(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span><span class="cx">     virtual bool paintSliderThumb(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span></span></pre>
</div>
</div>

</body>
</html>