Make sure that we call nsSVGEffects::UpdateEffects() on frames that are added after the first reflow

RESOLVED FIXED in mozilla16

Status

()

Core
SVG
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: jwatt, Assigned: jwatt)

Tracking

Trunk
mozilla16
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment, 2 obsolete attachments)

(Assignee)

Description

5 years ago
For some reason SVG frames' overflow rects sometimes don't account for filter effects. Still debugging this one.
(Assignee)

Comment 1

5 years ago
This happens when frames are added after the first reflow - which apparently can be triggered by a <script> referencing an external file an the top of the doc - and then any filtered SVG frames that come after that never account for filters in their visual overflow rects. Even if the document is subsequently reflowed, or the filtered elements change, or the filter changes, the filter effect is still not accounted for in the visual overflow rect.

The reason that this happens is because nsSVGDisplayContainerFrame::InsertFrames removes NS_FRAME_FIRST_REFLOW from the kid so that nsSVGUtils::ScheduleBoundsUpdate will work when passed the kid, but then forgets to add it back afterwards. That means we never make the nsSVGEffects::UpdateEffects() call in the UpdateBounds implementations since it is guarded by a NS_FRAME_FIRST_REFLOW check.
(Assignee)

Updated

5 years ago
Summary: Sometimes SVG frames overflow rects do not account for filter effects → Make sure that we call nsSVGEffects::UpdateEffects() on frames that are added after the first reflow
(Assignee)

Updated

5 years ago
Blocks: 614732
(Assignee)

Comment 2

5 years ago
Created attachment 642402 [details] [diff] [review]
patch
Attachment #642402 - Flags: review?(dholbert)
The unconditional setting of NS_FRAME_FIRST_REFLOW here scares me a little.  Are we guaranteed that NS_FRAME_FIRST_REFLOW will be set on everything in the frame list, when this function is called?

If so, we should assert that (maybe just before we clear that bit).  And if not, we should check for it and only add it back if it was originally set.
(Assignee)

Comment 4

5 years ago
Created attachment 642433 [details] [diff] [review]
patch

Ah, yeah, good point.
Attachment #642402 - Attachment is obsolete: true
Attachment #642402 - Flags: review?(dholbert)
Attachment #642433 - Flags: review?(dholbert)
(Assignee)

Comment 5

5 years ago
Created attachment 642434 [details] [diff] [review]
patch
Attachment #642433 - Attachment is obsolete: true
Attachment #642433 - Flags: review?(dholbert)
(Assignee)

Updated

5 years ago
Attachment #642434 - Flags: review?(dholbert)
Attachment #642434 - Flags: review?(dholbert) → review+
(Assignee)

Comment 6

5 years ago
https://hg.mozilla.org/integration/mozilla-inbound/rev/2cdd7ca5a588
Target Milestone: --- → mozilla16

Comment 7

5 years ago
https://hg.mozilla.org/mozilla-central/rev/2cdd7ca5a588
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.