Chromium Code Reviews
DescriptionMake sure newly created frames become throttled
If an iframe is created inside a throttled frame, there is a window in
time before it realizes it should also become throttled. If the
following sequence of events happens in this window, FramePainter fails
with a release assert due to stale layout information:
1. The newly created frame requires GraphicsLayers (i.e., it has a CSS
3D transform).
2. Something causes a full lifecycle update (including painting) without
allowing throttling. As a side effect GraphicsLayers are created for
the frame.
3. The contents of the frame are invalidated, marking it as needing
layout.
4. One or more GraphicsLayers for the frame are also marked as needing
repaint.
5. We do a BeginMainFrame. This allows throttling, so we do not update
the lifecycle for the newly created frame. However in the
synchronized painting stage we descend through the full GraphicsLayer
tree. When we reaches a GraphicsLayer the newly created frame, a
release assert fails because the respective FrameView needs layout.
This patch fixes the bug by updating the throttling status of a frame as
soon as it is assigned a parent.
BUG=609758
Patch Set 1 #Patch Set 2 : Rebased #
Messages
Total messages: 4 (2 generated)
|
||||||||||||||||||||||||||||