| Index: Source/core/frame/FrameView.cpp
|
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp
|
| index 5d67dc924e04a052fb8c34ce580be8ccf318aa01..8ecf29b0e64c4c9aba3b5af5941e2073d80b2d4f 100644
|
| --- a/Source/core/frame/FrameView.cpp
|
| +++ b/Source/core/frame/FrameView.cpp
|
| @@ -2517,6 +2517,14 @@ void FrameView::updateWidgetPositionsIfNeeded()
|
|
|
| void FrameView::updateLayoutAndStyleForPainting()
|
| {
|
| + frame().localFrameRoot()->view()->updateLayoutAndStyleForPaintingInternal();
|
| +}
|
| +
|
| +void FrameView::updateLayoutAndStyleForPaintingInternal()
|
| +{
|
| + // This must be called from the root frame, since it recurses down, not up. Otherwise the lifecycles of the frames might be out of sync.
|
| + ASSERT(frame() == page()->mainFrame() || (!frame().tree().parent()->isLocalFrame()));
|
| +
|
| // Updating layout can run script, which can tear down the FrameView.
|
| RefPtrWillBeRawPtr<FrameView> protector(this);
|
|
|
| @@ -2545,7 +2553,7 @@ void FrameView::updateLayoutAndStyleForPainting()
|
|
|
| void FrameView::updateLayoutAndStyleIfNeededRecursive()
|
| {
|
| - // We have to crawl our entire tree looking for any FrameViews that need
|
| + // We have to crawl our entire subtree looking for any FrameViews that need
|
| // layout and make sure they are up to date.
|
| // Mac actually tests for intersection with the dirty region and tries not to
|
| // update layout for frames that are outside the dirty region. Not only does this seem
|
|
|