Created attachment 118215 [details]
Screenshot illustration of text box incorrectly redrawn
When SVG elements are moved on the page (ie the DOM is manipulated) then the screen redraw logic doesn't always correctly invalidate the old position, so the display is left with portions of the old display.
The test page referenced above shows this with test case number 1 - moving the element down the page leaves artefacts in Safari and Chrome (see also screenshot attached)
Bug also posted to chrome as http://code.google.com/p/chromium/issues/detail?id=98391 but advised to post it here instead.
Created attachment 118443 [details]
Reduced test - red box should not be visible
Tracked this down to RenderSVGContainer::layout():
// Allow RenderSVGViewportContainer to update its viewport.
LayoutRepainter repainter(*this, checkForRepaintDuringLayout() || selfWillPaint());
The viewport is updated before grabbing the old repaint bounds - hence repainter really holds the new bounds (inferred from the updated viewport). Later on in repaint, we're only seeing these new bounds and not repainting the old area.
I have a patch to swap the operations coming up shortly.
Created attachment 118452 [details]
Comment on attachment 118452 [details]
Clearing flags on attachment: 118452
Committed r102391: <http://trac.webkit.org/changeset/102391>
All reviewed patches have been landed. Closing bug.