Diff
Modified: trunk/LayoutTests/ChangeLog (238650 => 238651)
--- trunk/LayoutTests/ChangeLog 2018-11-29 01:22:19 UTC (rev 238650)
+++ trunk/LayoutTests/ChangeLog 2018-11-29 01:29:54 UTC (rev 238651)
@@ -1,3 +1,19 @@
+2018-11-28 Said Abou-Hallawa <[email protected]>
+
+ Updating href on linearGradient and radialGradient doesn't update its rendering
+ https://bugs.webkit.org/show_bug.cgi?id=191934
+
+ Reviewed by Ryosuke Niwa.
+
+ * fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree-expected.html: Added.
+ * fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html: Added.
+ * fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree-expected.html: Added.
+ * fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html: Added.
+ * svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop-expected.html: Added.
+ * svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html: Added.
+ * svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop-expected.html: Added.
+ * svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html: Added.
+
2018-11-28 Truitt Savell <[email protected]>
[ Mojave WK1 ] Layout Test fast/images/animated-image-different-dest-size.html fast/images/animated-image-loop-count.html is failing
Added: trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree-expected.html (0 => 238651)
--- trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree-expected.html (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree-expected.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="host"></div>
+</body>
+</html>
Added: trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html (0 => 238651)
--- trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="host"></div>
+ <svg>
+ <linearGradient id="gradient">
+ <stop offset="0" stop-color="red" />
+ </linearGradient>
+ </svg>
+ <template>
+ <svg viewbox="0 0 100 100">
+ <linearGradient id="gradient">
+ <stop offset="0" stop-color="green" />
+ </linearGradient>
+ <linearGradient id="blue-gradient">
+ <stop offset="0" stop-color="blue" />
+ </linearGradient>
+ <linearGradient id="gradientUse" fill="red" href="" />
+ <rect id="rect" width="100" height="100" fill="url(#gradientUse)" />
+ </svg>
+ </template>
+ <script>
+ window._onload_ = () => {
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ const shadowRoot = host.attachShadow({mode: 'closed'});
+ shadowRoot.appendChild(document.querySelector('template').content.cloneNode(true));
+
+ requestAnimationFrame(() => {
+ shadowRoot.querySelector('#gradientUse').setAttribute('href', '#gradient');
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ }
+ </script>
+</body>
+</html>
Added: trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree-expected.html (0 => 238651)
--- trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree-expected.html (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree-expected.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="host"></div>
+</body>
+</html>
Added: trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html (0 => 238651)
--- trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="host"></div>
+ <svg>
+ <radialGradient id="gradient">
+ <stop offset="0" stop-color="red" />
+ </radialGradient>
+ </svg>
+ <template>
+ <svg viewbox="0 0 100 100">
+ <radialGradient id="gradient">
+ <stop offset="0" stop-color="green" />
+ </radialGradient>
+ <radialGradient id="blue-gradient">
+ <stop offset="0" stop-color="blue" />
+ </radialGradient>
+ <radialGradient id="gradientUse" fill="red" href="" />
+ <rect id="rect" width="100" height="100" fill="url(#gradientUse)" />
+ </svg>
+ </template>
+ <script>
+ window._onload_ = () => {
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ const shadowRoot = host.attachShadow({mode: 'closed'});
+ shadowRoot.appendChild(document.querySelector('template').content.cloneNode(true));
+
+ requestAnimationFrame(() => {
+ shadowRoot.querySelector('#gradientUse').setAttribute('href', '#gradient');
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ }
+ </script>
+</body>
+</html>
Added: trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop-expected.html (0 => 238651)
--- trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop-expected.html (rev 0)
+++ trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop-expected.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #container {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="container"></div>
+</body>
+</html>
Added: trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html (0 => 238651)
--- trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html (rev 0)
+++ trunk/LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #container {
+ width: 100px;
+ height: 100px;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="container">
+ <svg>
+ <linearGradient id="red-gradient">
+ <stop offset="0" stop-color="red"/>
+ </linearGradient>
+ <linearGradient id="green-gradient">
+ <stop offset="0" stop-color="green"/>
+ </linearGradient>
+ <linearGradient id="gradientUse" href=""
+ <rect id="rect" width="100" height="100" fill="url(#gradientUse)"/>
+ </svg>
+ </div>
+ <script>
+ window._onload_ = () => {
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ requestAnimationFrame(() => {
+ gradientUse.setAttribute('href', '#green-gradient');
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ }
+ </script>
+</body>
+</html>
Added: trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop-expected.html (0 => 238651)
--- trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop-expected.html (rev 0)
+++ trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop-expected.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #container {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="container"></div>
+</body>
+</html>
Added: trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html (0 => 238651)
--- trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html (rev 0)
+++ trunk/LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html 2018-11-29 01:29:54 UTC (rev 238651)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<style>
+ #container {
+ width: 100px;
+ height: 100px;
+ }
+</style>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div id="container">
+ <svg>
+ <radialGradient id="red-gradient">
+ <stop offset="0" stop-color="red"/>
+ </radialGradient>
+ <radialGradient id="green-gradient">
+ <stop offset="0" stop-color="green"/>
+ </radialGradient>
+ <radialGradient id="gradientUse" href=""
+ <rect id="rect" width="100" height="100" fill="url(#gradientUse)"/>
+ </svg>
+ </div>
+ <script>
+ window._onload_ = () => {
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ requestAnimationFrame(() => {
+ gradientUse.setAttribute('href', '#green-gradient');
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ }
+ </script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (238650 => 238651)
--- trunk/Source/WebCore/ChangeLog 2018-11-29 01:22:19 UTC (rev 238650)
+++ trunk/Source/WebCore/ChangeLog 2018-11-29 01:29:54 UTC (rev 238651)
@@ -1,3 +1,22 @@
+2018-11-28 Said Abou-Hallawa <[email protected]>
+
+ Updating href on linearGradient and radialGradient doesn't update its rendering
+ https://bugs.webkit.org/show_bug.cgi?id=191934
+
+ Reviewed by Ryosuke Niwa.
+
+ Mark the gradient renderer for repaint when the value of the 'href'
+ attribute changes.
+
+ Tests: fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html
+ fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html
+ svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html
+ svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html
+
+ * svg/SVGGradientElement.cpp:
+ (WebCore::SVGGradientElement::svgAttributeChanged):
+
+
2018-11-28 Youenn Fablet <[email protected]>
imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-transceivers.https.html is flaky on iOS simulator
Modified: trunk/Source/WebCore/svg/SVGGradientElement.cpp (238650 => 238651)
--- trunk/Source/WebCore/svg/SVGGradientElement.cpp 2018-11-29 01:22:19 UTC (rev 238650)
+++ trunk/Source/WebCore/svg/SVGGradientElement.cpp 2018-11-29 01:29:54 UTC (rev 238651)
@@ -88,7 +88,7 @@
void SVGGradientElement::svgAttributeChanged(const QualifiedName& attrName)
{
- if (isKnownAttribute(attrName)) {
+ if (isKnownAttribute(attrName) || SVGURIReference::isKnownAttribute(attrName)) {
InstanceInvalidationGuard guard(*this);
if (RenderObject* object = renderer())
object->setNeedsLayout();