Created attachment 235193 [details]
In the test case, when you drag the first span, the drag snapshot is correct. When you drag the second span, the snapshot is empty.
The reason is that the snapshots are made by setting PaintInfo’s subtreePaintRoot to span’s RenderInline, but since the second span doesn’t have inline boxes, we never hit the (subtreePaintRoot == renderer) case in PaintInfo::updateSubtreePaintRootForChildren() when it’s called from InlineFlowBox::paint, so the subtree root is never cleared and nothing paints.
My idea for fixing this is to add another RenderObject* member to PaintInfo, which will contain the nearest ancestor of the subtreePaintRoot that isn’t a RenderInline with culled boxes, and whenever we are in that object’s subtree, do a more expensive shouldPaintWithinRoot() check.
To see the bug you may need to undo the workaround from <http://trac.webkit.org/r171284>.