Summary: | Unmatched transparency layer begin/end on a filtered element with an opacity ancestor | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> | ||||||
Component: | Layout and Rendering | Assignee: | Simon Fraser (smfr) <simon.fraser> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | achicu, simon.fraser, webkit-bug-importer | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
The issue is that RenderLayer::beginTransparencyLayers() bails if context->paintingDisabled() is true, so never starting the transparency layer. However, when rendering the child, filterPainter hands back a context with painting enabled. We then hit beginTransparencyLayers() in the if (localPaintFlags & PaintLayerPaintingCompositingForegroundPhase) clause, since haveTransparency was passed in from the ancestor. We should just not apply filters if the context has painting disabled. Created attachment 122533 [details]
Patch
Comment on attachment 122533 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=122533&action=review > Source/WebCore/ChangeLog:14 > + Manual test: > + ManualTests/filters/opacity-above-filter.html Could this be a TestWebKitAPI test instead? (In reply to comment #5) > http://trac.webkit.org/changeset/105019 Thanks! |
Created attachment 122531 [details] Testcase The attached test case hits ASSERTION FAILED: m_transparencyCount > 0 when painting, if the context has paintingDisabled() (e.g. when doing a Find in Safari).