| Index: Source/core/page/PageAnimator.cpp
|
| diff --git a/Source/core/page/PageAnimator.cpp b/Source/core/page/PageAnimator.cpp
|
| index 0d429bae2ab329236e0351c91e2c33213606c226..a746d08d250338dd151dc18884f482b36baecfb2 100644
|
| --- a/Source/core/page/PageAnimator.cpp
|
| +++ b/Source/core/page/PageAnimator.cpp
|
| @@ -66,12 +66,20 @@ void PageAnimator::serviceScriptedAnimations(double monotonicAnimationStartTime)
|
| documents[i]->serviceScriptedAnimations(monotonicAnimationStartTime);
|
| }
|
|
|
| -void PageAnimator::scheduleVisualUpdate()
|
| +void PageAnimator::scheduleVisualUpdate(LocalFrame* rootFrame)
|
| {
|
| // FIXME: also include m_animationFramePending here. It is currently not there due to crbug.com/353756.
|
| if (m_servicingAnimations || m_updatingLayoutAndStyleForPainting)
|
| return;
|
| - m_page->chrome().scheduleAnimation();
|
| + // FIXME: The frame-specific version of scheduleAnimation() is for
|
| + // out-of-process iframes. Passing 0 or the top-level frame to this method
|
| + // causes scheduleAnimation() to be called for the page, which still uses
|
| + // a page-level WebWidget (the WebViewImpl).
|
| + if (rootFrame && !rootFrame->isMainFrame() && rootFrame->isLocalRoot()) {
|
| + m_page->chrome().scheduleAnimationForFrame(rootFrame);
|
| + } else {
|
| + m_page->chrome().scheduleAnimation();
|
| + }
|
| }
|
|
|
| void PageAnimator::updateLayoutAndStyleForPainting(LocalFrame* rootFrame)
|
|
|