<!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>[207924] branches/safari-602-branch</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/207924">207924</a></dd>
<dt>Author</dt> <dd>matthew_hanson@apple.com</dd>
<dt>Date</dt> <dd>2016-10-26 16:18:17 -0700 (Wed, 26 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/207692">r207692</a>. rdar://problem/28810751</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari602branchLayoutTestsChangeLog">branches/safari-602-branch/LayoutTests/ChangeLog</a></li>
<li><a href="#branchessafari602branchSourceWebCoreChangeLog">branches/safari-602-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari602branchSourceWebCorerenderingPaintPhaseh">branches/safari-602-branch/Source/WebCore/rendering/PaintPhase.h</a></li>
<li><a href="#branchessafari602branchSourceWebCorerenderingsvgSVGInlineTextBoxcpp">branches/safari-602-branch/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp</a></li>
<li><a href="#branchessafari602branchSourceWebCorerenderingsvgSVGRenderingContextcpp">branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRenderingContext.cpp</a></li>
<li><a href="#branchessafari602branchSourceWebCorerenderingsvgSVGRootInlineBoxcpp">branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRootInlineBox.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchessafari602branchLayoutTestssvgmaskingmaskshouldnotpaintselectionexpectedhtml">branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection-expected.html</a></li>
<li><a href="#branchessafari602branchLayoutTestssvgmaskingmaskshouldnotpaintselectionhtml">branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari602branchLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/LayoutTests/ChangeLog (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/LayoutTests/ChangeLog        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/LayoutTests/ChangeLog        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -1,5 +1,20 @@
</span><span class="cx"> 2016-10-26  Matthew Hanson  &lt;matthew_hanson@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Merge r207692. rdar://problem/28810751
+
+    2016-10-20  Dean Jackson  &lt;dino@apple.com&gt;
+
+            SVG should not paint selection within a mask
+            https://bugs.webkit.org/show_bug.cgi?id=163772
+            &lt;rdar://problem/28705129&gt;
+
+            Reviewed by Simon Fraser.
+
+            * svg/masking/mask-should-not-paint-selection-expected.html: Added.
+            * svg/masking/mask-should-not-paint-selection.html: Added.
+
+2016-10-26  Matthew Hanson  &lt;matthew_hanson@apple.com&gt;
+
</ins><span class="cx">         Merge r207683. rdar://problem/28849627
</span><span class="cx"> 
</span><span class="cx">     2016-10-21  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span></span></pre></div>
<a id="branchessafari602branchLayoutTestssvgmaskingmaskshouldnotpaintselectionexpectedhtml"></a>
<div class="addfile"><h4>Added: branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection-expected.html (0 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection-expected.html                                (rev 0)
+++ branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection-expected.html        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;body&gt;
+&lt;svg width=&quot;200&quot; height=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
+ &lt;defs&gt;
+  &lt;mask id=&quot;m1&quot; x=&quot;0&quot; y=&quot;0&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;
+   &lt;circle cx=&quot;100&quot; cy=&quot;100&quot; r=&quot;20&quot; fill=&quot;white&quot;/&gt;
+   &lt;text y=&quot;100&quot; fill=&quot;white&quot; font-size=&quot;50&quot;&gt;
+    Text
+   &lt;/text&gt;
+  &lt;/mask&gt;
+ &lt;/defs&gt;
+ &lt;rect id=&quot;id1&quot; mask=&quot;url(#m1)&quot; x=&quot;10&quot; y=&quot;10&quot; width=&quot;180&quot; height=&quot;180&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="branchessafari602branchLayoutTestssvgmaskingmaskshouldnotpaintselectionhtml"></a>
<div class="addfile"><h4>Added: branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection.html (0 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection.html                                (rev 0)
+++ branches/safari-602-branch/LayoutTests/svg/masking/mask-should-not-paint-selection.html        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;style&gt;
+text::selection{
+    color: blue;
+}
+&lt;/style&gt;
+&lt;script&gt;
+window.addEventListener(&quot;load&quot;, function () {
+    var range = document.createRange();
+    var selection = document.getSelection()
+    range.setStart(m1, 0);
+    range.setEnd(id1, id1.childNodes.length);
+    selection.addRange(range);
+}, false);
+&lt;/script&gt;
+&lt;body&gt;
+&lt;svg width=&quot;200&quot; height=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
+ &lt;defs&gt;
+  &lt;mask id=&quot;m1&quot; x=&quot;0&quot; y=&quot;0&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;
+   &lt;circle cx=&quot;100&quot; cy=&quot;100&quot; r=&quot;20&quot; fill=&quot;white&quot;/&gt;
+   &lt;text y=&quot;100&quot; fill=&quot;white&quot; font-size=&quot;50&quot;&gt;
+    Text
+   &lt;/text&gt;
+  &lt;/mask&gt;
+ &lt;/defs&gt;
+ &lt;rect id=&quot;id1&quot; mask=&quot;url(#m1)&quot; x=&quot;10&quot; y=&quot;10&quot; width=&quot;180&quot; height=&quot;180&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="branchessafari602branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/Source/WebCore/ChangeLog (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/Source/WebCore/ChangeLog        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/Source/WebCore/ChangeLog        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -1,5 +1,31 @@
</span><span class="cx"> 2016-10-26  Matthew Hanson  &lt;matthew_hanson@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Merge r207692. rdar://problem/28810751
+
+    2016-10-20  Dean Jackson  &lt;dino@apple.com&gt;
+
+            SVG should not paint selection within a mask
+            https://bugs.webkit.org/show_bug.cgi?id=163772
+            &lt;rdar://problem/28705129&gt;
+
+            Reviewed by Simon Fraser.
+
+            When masking content, we shouldn't paint the text
+            selection as we are rendering into the masking
+            offscreen buffer.
+
+            Test: svg/masking/mask-should-not-paint-selection.html
+
+            * rendering/PaintPhase.h: Add a new behavior - PaintBehaviorSkipSelectionHighlight.
+            * rendering/svg/SVGInlineTextBox.cpp:
+            (WebCore::SVGInlineTextBox::paint): Don't update the selectionStyle if
+            PaintBehaviorSkipSelectionHighlight is true.
+            * rendering/svg/SVGRenderingContext.cpp:
+            (WebCore::SVGRenderingContext::renderSubtreeToImageBuffer): Add PaintBehaviorSkipSelectionHighlight
+            to the PaintInfo.
+
+2016-10-26  Matthew Hanson  &lt;matthew_hanson@apple.com&gt;
+
</ins><span class="cx">         Merge r207683. rdar://problem/28849627
</span><span class="cx"> 
</span><span class="cx">     2016-10-21  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span></span></pre></div>
<a id="branchessafari602branchSourceWebCorerenderingPaintPhaseh"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/Source/WebCore/rendering/PaintPhase.h (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/Source/WebCore/rendering/PaintPhase.h        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/Source/WebCore/rendering/PaintPhase.h        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -54,15 +54,16 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> enum PaintBehaviorFlags {
</span><del>-    PaintBehaviorNormal = 0,
-    PaintBehaviorSelectionOnly = 1 &lt;&lt; 0,
-    PaintBehaviorForceBlackText = 1 &lt;&lt; 1,
-    PaintBehaviorForceWhiteText = 1 &lt;&lt; 2,
-    PaintBehaviorFlattenCompositingLayers = 1 &lt;&lt; 3,
-    PaintBehaviorRenderingSVGMask = 1 &lt;&lt; 4,
-    PaintBehaviorSkipRootBackground = 1 &lt;&lt; 5,
-    PaintBehaviorRootBackgroundOnly = 1 &lt;&lt; 6,
-    PaintBehaviorSelectionAndBackgroundsOnly = 1 &lt;&lt; 7,
</del><ins>+    PaintBehaviorNormal                      = 0,
+    PaintBehaviorSelectionOnly               = 1 &lt;&lt; 0,
+    PaintBehaviorSkipSelectionHighlight      = 1 &lt;&lt; 1,
+    PaintBehaviorForceBlackText              = 1 &lt;&lt; 2,
+    PaintBehaviorForceWhiteText              = 1 &lt;&lt; 3,
+    PaintBehaviorFlattenCompositingLayers    = 1 &lt;&lt; 4,
+    PaintBehaviorRenderingSVGMask            = 1 &lt;&lt; 5,
+    PaintBehaviorSkipRootBackground          = 1 &lt;&lt; 6,
+    PaintBehaviorRootBackgroundOnly          = 1 &lt;&lt; 7,
+    PaintBehaviorSelectionAndBackgroundsOnly = 1 &lt;&lt; 8,
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> typedef unsigned PaintBehavior;
</span></span></pre></div>
<a id="branchessafari602branchSourceWebCorerenderingsvgSVGInlineTextBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -249,6 +249,7 @@
</span><span class="cx">     auto&amp; parentRenderer = parent()-&gt;renderer();
</span><span class="cx"> 
</span><span class="cx">     bool paintSelectedTextOnly = paintInfo.phase == PaintPhaseSelection;
</span><ins>+    bool shouldPaintSelectionHighlight = !(paintInfo.paintBehavior &amp; PaintBehaviorSkipSelectionHighlight);
</ins><span class="cx">     bool hasSelection = !parentRenderer.document().printing() &amp;&amp; selectionState() != RenderObject::SelectionNone;
</span><span class="cx">     if (!hasSelection &amp;&amp; paintSelectedTextOnly)
</span><span class="cx">         return;
</span><span class="lines">@@ -264,7 +265,7 @@
</span><span class="cx">     bool hasVisibleStroke = svgStyle.hasVisibleStroke();
</span><span class="cx"> 
</span><span class="cx">     const RenderStyle* selectionStyle = &amp;style;
</span><del>-    if (hasSelection) {
</del><ins>+    if (hasSelection &amp;&amp; shouldPaintSelectionHighlight) {
</ins><span class="cx">         selectionStyle = parentRenderer.getCachedPseudoStyle(SELECTION);
</span><span class="cx">         if (selectionStyle) {
</span><span class="cx">             const SVGRenderStyle&amp; svgSelectionStyle = selectionStyle-&gt;svgStyle();
</span></span></pre></div>
<a id="branchessafari602branchSourceWebCorerenderingsvgSVGRenderingContextcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRenderingContext.cpp        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRenderingContext.cpp        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -295,7 +295,9 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(image);
</span><span class="cx"> 
</span><del>-    PaintInfo info(image-&gt;context(), LayoutRect::infiniteRect(), PaintPhaseForeground, PaintBehaviorNormal);
</del><ins>+    // Rendering into a buffer implies we're being used for masking, clipping, patterns or filters. In each of these
+    // cases we don't want to paint the selection.
+    PaintInfo info(image-&gt;context(), LayoutRect::infiniteRect(), PaintPhaseForeground, PaintBehaviorSkipSelectionHighlight);
</ins><span class="cx"> 
</span><span class="cx">     AffineTransform&amp; contentTransformation = currentContentTransformation();
</span><span class="cx">     AffineTransform savedContentTransformation = contentTransformation;
</span></span></pre></div>
<a id="branchessafari602branchSourceWebCorerenderingsvgSVGRootInlineBoxcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRootInlineBox.cpp (207923 => 207924)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRootInlineBox.cpp        2016-10-26 23:18:13 UTC (rev 207923)
+++ branches/safari-602-branch/Source/WebCore/rendering/svg/SVGRootInlineBox.cpp        2016-10-26 23:18:17 UTC (rev 207924)
</span><span class="lines">@@ -53,9 +53,10 @@
</span><span class="cx"> 
</span><span class="cx">     bool isPrinting = renderSVGText().document().printing();
</span><span class="cx">     bool hasSelection = !isPrinting &amp;&amp; selectionState() != RenderObject::SelectionNone;
</span><ins>+    bool shouldPaintSelectionHighlight = !(paintInfo.paintBehavior &amp; PaintBehaviorSkipSelectionHighlight);
</ins><span class="cx"> 
</span><span class="cx">     PaintInfo childPaintInfo(paintInfo);
</span><del>-    if (hasSelection) {
</del><ins>+    if (hasSelection &amp;&amp; shouldPaintSelectionHighlight) {
</ins><span class="cx">         for (InlineBox* child = firstChild(); child; child = child-&gt;nextOnLine()) {
</span><span class="cx">             if (is&lt;SVGInlineTextBox&gt;(*child))
</span><span class="cx">                 downcast&lt;SVGInlineTextBox&gt;(*child).paintSelectionBackground(childPaintInfo);
</span></span></pre>
</div>
</div>

</body>
</html>