<!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>[237509] releases/WebKitGTK/webkit-2.22</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/237509">237509</a></dd>
<dt>Author</dt> <dd>aperez@igalia.com</dd>
<dt>Date</dt> <dd>2018-10-28 06:42:48 -0700 (Sun, 28 Oct 2018)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merged <a href="http://trac.webkit.org/projects/webkit/changeset/236991">r236991</a> - REGRESSION(<a href="http://trac.webkit.org/projects/webkit/changeset/234620">r234620</a>): SVGLangSpace::svgAttributeChanged() should invalidate the renderer of the SVGGeometryElement descendant only
https://bugs.webkit.org/show_bug.cgi?id=190411

Reviewed by Simon Fraser.

Source/WebCore:

Test: svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html

When changing the attributes of the SVGLangSpace, we should invalidate
the renderer of the SVGGeometryElement descendant only. Renderer of other
elements, like SVGStopElement, should not be invalidated because they do
not have geometry and they can be used as resources for drawing another
SVGGeometryElement.

* svg/SVGElement.h:
(WebCore::SVGElement::isSVGGeometryElement const):
* svg/SVGGeometryElement.h:
(isType):
* svg/SVGLangSpace.cpp:
(WebCore::SVGLangSpace::svgAttributeChanged):

LayoutTests:

* svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt: Added.
* svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit222LayoutTestsChangeLog">releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit222SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit222SourceWebCoresvgSVGElementh">releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#releasesWebKitGTKwebkit222SourceWebCoresvgSVGGeometryElementh">releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGGeometryElement.h</a></li>
<li><a href="#releasesWebKitGTKwebkit222SourceWebCoresvgSVGLangSpacecpp">releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGLangSpace.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit222LayoutTestssvgdynamicupdatesSVGStopElementdomxmllangattrrexpectedtxt">releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit222LayoutTestssvgdynamicupdatesSVGStopElementdomxmllangattrrhtml">releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit222LayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog (237508 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog     2018-10-28 13:42:39 UTC (rev 237508)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog        2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2018-10-09  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        REGRESSION(r234620): SVGLangSpace::svgAttributeChanged() should invalidate the renderer of the SVGGeometryElement descendant only
+        https://bugs.webkit.org/show_bug.cgi?id=190411
+
+        Reviewed by Simon Fraser.
+
+        * svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt: Added.
+        * svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html: Added.
+
</ins><span class="cx"> 2018-10-09  Philippe Normand  <pnormand@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         [GStreamer] Stealing cross-origin video pixel with HLS
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit222LayoutTestssvgdynamicupdatesSVGStopElementdomxmllangattrrexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt (0 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt                            (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr-expected.txt       2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Passes if no crash happens.
+
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit222LayoutTestssvgdynamicupdatesSVGStopElementdomxmllangattrrhtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html (0 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html                            (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html       2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+<body>
+    <p>Passes if no crash happens.</p>
+    <svg>
+        <linearGradient id="gradient">
+            <stop id="stop1" offset="0%" stop-color="green" />
+            <stop id="stop2" offset="50%" stop-color="green" />
+        </linearGradient>
+        <rect fill="url(#gradient)" x="10" y="10" width="200" height="100"/>
+    </svg>
+    <script>
+        if (window.testRunner) {
+            testRunner.dumpAsText();
+            testRunner.waitUntilDone();
+        }
+        setTimeout(function(){ 
+            stop1.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "jw");
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }, 0);
+    </script>
+</body>
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit222SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog (237508 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog  2018-10-28 13:42:39 UTC (rev 237508)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog     2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2018-10-09  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        REGRESSION(r234620): SVGLangSpace::svgAttributeChanged() should invalidate the renderer of the SVGGeometryElement descendant only
+        https://bugs.webkit.org/show_bug.cgi?id=190411
+
+        Reviewed by Simon Fraser.
+
+        Test: svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html
+
+        When changing the attributes of the SVGLangSpace, we should invalidate
+        the renderer of the SVGGeometryElement descendant only. Renderer of other
+        elements, like SVGStopElement, should not be invalidated because they do
+        not have geometry and they can be used as resources for drawing another
+        SVGGeometryElement.
+
+        * svg/SVGElement.h:
+        (WebCore::SVGElement::isSVGGeometryElement const):
+        * svg/SVGGeometryElement.h:
+        (isType):
+        * svg/SVGLangSpace.cpp:
+        (WebCore::SVGLangSpace::svgAttributeChanged):
+
</ins><span class="cx"> 2018-10-09  Michael Catanzaro  <mcatanzaro@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         [WPE][GTK] Complex text crashes with harfbuzz 1.8.8
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit222SourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGElement.h (237508 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGElement.h   2018-10-28 13:42:39 UTC (rev 237508)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGElement.h      2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const;
</span><span class="cx"> 
</span><span class="cx">     virtual bool isSVGGraphicsElement() const { return false; }
</span><ins>+    virtual bool isSVGGeometryElement() const { return false; }
</ins><span class="cx">     virtual bool isFilterEffect() const { return false; }
</span><span class="cx">     virtual bool isGradientStop() const { return false; }
</span><span class="cx">     virtual bool isTextContent() const { return false; }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit222SourceWebCoresvgSVGGeometryElementh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGGeometryElement.h (237508 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGGeometryElement.h   2018-10-28 13:42:39 UTC (rev 237508)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGGeometryElement.h      2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx">     void svgAttributeChanged(const QualifiedName&) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    bool isSVGGeometryElement() const override { return true; }
</ins><span class="cx">     const SVGAttributeOwnerProxy& attributeOwnerProxy() const override { return m_attributeOwnerProxy; }
</span><span class="cx"> 
</span><span class="cx">     static void registerAttributes();
</span><span class="lines">@@ -64,3 +65,8 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::SVGGeometryElement)
+    static bool isType(const WebCore::SVGElement& element) { return element.isSVGGeometryElement(); }
+    static bool isType(const WebCore::Node& node) { return is<WebCore::SVGElement>(node) && isType(downcast<WebCore::SVGElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit222SourceWebCoresvgSVGLangSpacecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGLangSpace.cpp (237508 => 237509)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGLangSpace.cpp       2018-10-28 13:42:39 UTC (rev 237508)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/svg/SVGLangSpace.cpp  2018-10-28 13:42:48 UTC (rev 237509)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include "RenderSVGResource.h"
</span><span class="cx"> #include "RenderSVGShape.h"
</span><del>-#include "SVGElement.h"
</del><ins>+#include "SVGGeometryElement.h"
</ins><span class="cx"> #include "XMLNames.h"
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> 
</span><span class="lines">@@ -67,10 +67,13 @@
</span><span class="cx">     if (!isKnownAttribute(attrName))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (auto* renderer = downcast<RenderSVGShape>(m_contextElement.renderer())) {
-        SVGElement::InstanceInvalidationGuard guard(m_contextElement);
-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
-    }
</del><ins>+    auto* renderer = m_contextElement.renderer();
+    if (!is<RenderSVGShape>(renderer))
+        return;
+
+    ASSERT(is<SVGGeometryElement>(m_contextElement));
+    SVGElement::InstanceInvalidationGuard guard(m_contextElement);
+    RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>