Title: [191568] releases/WebKitGTK/webkit-2.10
Revision
191568
Author
[email protected]
Date
2015-10-26 01:16:18 -0700 (Mon, 26 Oct 2015)

Log Message

Merge r191403 - Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
https://bugs.webkit.org/show_bug.cgi?id=150212
<rdar://problem/23137376>

Reviewed by Brent Fulgham.

Source/WebCore:

Handle the case where a filter element doesn't have a renderer. Inspired by the Blink
commit:
https://chromium.googlesource.com/chromium/src.git/+/fb79f7fc46552d45127acd2959a23662ad8f271e

Test: svg/filters/display-none-filter-primitive.html

* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::buildPrimitives):
* svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::appendEffectToEffectReferences):

LayoutTests:

* svg/filters/display-none-filter-primitive-expected.txt: Added.
* svg/filters/display-none-filter-primitive.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog (191567 => 191568)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog	2015-10-26 08:10:46 UTC (rev 191567)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog	2015-10-26 08:16:18 UTC (rev 191568)
@@ -1,3 +1,14 @@
+2015-10-21  Dean Jackson  <[email protected]>
+
+        Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
+        https://bugs.webkit.org/show_bug.cgi?id=150212
+        <rdar://problem/23137376>
+
+        Reviewed by Brent Fulgham.
+
+        * svg/filters/display-none-filter-primitive-expected.txt: Added.
+        * svg/filters/display-none-filter-primitive.html: Added.
+
 2015-10-16  Jiewen Tan  <[email protected]>
 
         Avoid to insert TAB before HTML element.

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive-expected.txt (0 => 191568)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive-expected.txt	2015-10-26 08:16:18 UTC (rev 191568)
@@ -0,0 +1 @@
+PASS if no crash

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive.html (0 => 191568)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/svg/filters/display-none-filter-primitive.html	2015-10-26 08:16:18 UTC (rev 191568)
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<svg>
+  <filter id="f">
+    <feMerge style="display: none">
+      <feMergeNode/>
+    </feMerge>
+    <feDiffuseLighting/>
+  </filter>
+  <rect filter="url(#f)" width="100" height="100"/>
+</svg>
+<p>PASS if no crash</p>
+<script>
+if (window.testRunner)
+  testRunner.dumpAsText();
+</script>
\ No newline at end of file

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (191567 => 191568)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2015-10-26 08:10:46 UTC (rev 191567)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2015-10-26 08:16:18 UTC (rev 191568)
@@ -1,3 +1,22 @@
+2015-10-21  Dean Jackson  <[email protected]>
+
+        Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
+        https://bugs.webkit.org/show_bug.cgi?id=150212
+        <rdar://problem/23137376>
+
+        Reviewed by Brent Fulgham.
+
+        Handle the case where a filter element doesn't have a renderer. Inspired by the Blink
+        commit:
+        https://chromium.googlesource.com/chromium/src.git/+/fb79f7fc46552d45127acd2959a23662ad8f271e
+
+        Test: svg/filters/display-none-filter-primitive.html
+
+        * rendering/svg/RenderSVGResourceFilter.cpp:
+        (WebCore::RenderSVGResourceFilter::buildPrimitives):
+        * svg/graphics/filters/SVGFilterBuilder.cpp:
+        (WebCore::SVGFilterBuilder::appendEffectToEffectReferences):
+
 2015-10-21  Carlos Garcia Campos  <[email protected]>
 
         ASSERTION FAILED: markFontData in FontCascade::emphasisMarkHeight

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (191567 => 191568)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp	2015-10-26 08:10:46 UTC (rev 191567)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp	2015-10-26 08:16:18 UTC (rev 191568)
@@ -90,7 +90,8 @@
         builder->appendEffectToEffectReferences(effect, element.renderer());
         element.setStandardAttributes(effect.get());
         effect->setEffectBoundaries(SVGLengthContext::resolveRectangle<SVGFilterPrimitiveStandardAttributes>(&element, filterElement().primitiveUnits(), targetBoundingBox));
-        effect->setOperatingColorSpace(element.renderer()->style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
+        if (element.renderer())
+            effect->setOperatingColorSpace(element.renderer()->style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
         builder->add(element.result(), effect.release());
     }
     return builder;

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp (191567 => 191568)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp	2015-10-26 08:10:46 UTC (rev 191567)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp	2015-10-26 08:16:18 UTC (rev 191568)
@@ -68,7 +68,7 @@
 
     // The effect must be a newly created filter effect.
     ASSERT(!m_effectReferences.contains(effect));
-    ASSERT(object && !m_effectRenderer.contains(object));
+    ASSERT(!object || !m_effectRenderer.contains(object));
     m_effectReferences.add(effect, FilterEffectSet());
 
     unsigned numberOfInputEffects = effect->inputEffects().size();
@@ -76,7 +76,12 @@
     // It is not possible to add the same value to a set twice.
     for (unsigned i = 0; i < numberOfInputEffects; ++i)
         effectReferences(effect->inputEffect(i)).add(effect.get());
-    m_effectRenderer.add(object, effect.get());
+
+    // If object is null, that means the element isn't attached for some
+    // reason, which in turn mean that certain types of invalidation will not
+    // work (the LayoutObject -> FilterEffect mapping will not be defined).
+    if (object)
+        m_effectRenderer.add(object, effect.get());
 }
 
 void SVGFilterBuilder::clearEffects()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to