Bug 131085 - SVG-filtered anonymous renderers not updated when filter is loaded
Summary: SVG-filtered anonymous renderers not updated when filter is loaded
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: SVG (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
: 129757 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-04-01 16:59 PDT by Jon Honeycutt
Modified: 2014-04-18 13:07 PDT (History)
8 users (show)

See Also:


Attachments
Layout test (1.21 KB, text/html)
2014-04-01 16:59 PDT, Jon Honeycutt
no flags Details
Layout test reference (460 bytes, text/html)
2014-04-01 17:00 PDT, Jon Honeycutt
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jon Honeycutt 2014-04-01 16:59:22 PDT
Created attachment 228341 [details]
Layout test

If an anonymous render object is filtered with an SVG filter, and that filter appears in the document after the element (or if it loads sometime later), the renderer will not be updated/repaint when the filter loads.
Comment 1 Jon Honeycutt 2014-04-01 17:00:12 PDT
Created attachment 228342 [details]
Layout test reference
Comment 2 Jon Honeycutt 2014-04-01 17:48:45 PDT
FilterEffectRenderer::buildReferenceFilter() does not handle the case that renderer->element() is false when the filter does not already exist in the document.

I tried fixing this in two ways:

1) Using a non-null ancestor Element for anonymous objects. This doesn't work because the object may not yet exist in the RenderTree when this code is reached, so it has no ancestors.

2) Because we only use the renderer from the stored Element in RenderSVGResourceContainer::registerResource(), I tried changing SVGDocumentExtensions to store a set of RenderElements rather than Elements. This led to issues when building the list of pending resources for Elements that do not yet have associated renderers.
Comment 3 Jon Honeycutt 2014-04-02 01:38:26 PDT
(In reply to comment #2)
> FilterEffectRenderer::buildReferenceFilter() does not handle the case that renderer->element() is false 

That is, when renderer->element() is null.
Comment 4 Radar WebKit Bug Importer 2014-04-18 13:00:03 PDT
<rdar://problem/16661954>
Comment 5 David Kilzer (:ddkilzer) 2014-04-18 13:07:52 PDT
*** Bug 129757 has been marked as a duplicate of this bug. ***