| Index: content/renderer/gpu/render_widget_compositor.cc | 
| diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc | 
| index df8674a24e1730b1cb2f621e17988549de0b1767..a4278915f223d818e6557068dc6d56b2933acf33 100644 | 
| --- a/content/renderer/gpu/render_widget_compositor.cc | 
| +++ b/content/renderer/gpu/render_widget_compositor.cc | 
| @@ -747,17 +747,10 @@ | 
|  | 
| void RenderWidgetCompositor::ScheduleCommit() { | 
| if (CommitIsSynchronous()) { | 
| -    base::MessageLoop::current()->PostTask( | 
| -        FROM_HERE, base::Bind(&RenderWidgetCompositor::SynchronousCommit, | 
| -                              weak_factory_.GetWeakPtr())); | 
| +    layer_tree_host_->Composite(gfx::FrameTime::Now()); | 
| } else { | 
| layer_tree_host_->SetNeedsCommit(); | 
| } | 
| -} | 
| - | 
| -void RenderWidgetCompositor::SynchronousCommit() { | 
| -  DCHECK(CommitIsSynchronous()); | 
| -  layer_tree_host_->Composite(gfx::FrameTime::Now()); | 
| } | 
|  | 
| void RenderWidgetCompositor::finishAllRendering() { | 
| @@ -925,6 +918,20 @@ | 
| void RenderWidgetCompositor::WillCommit() { | 
| if (!layout_and_paint_async_callback_) | 
| return; | 
| + | 
| +  if (CommitIsSynchronous()) { | 
| +    // The caller expects the callback to be called asynchronously. | 
| +    base::MessageLoop::current()->PostTask( | 
| +        FROM_HERE, base::Bind(&RenderWidgetCompositor::DidLayoutAndPaintAsync, | 
| +                              weak_factory_.GetWeakPtr())); | 
| +  } else { | 
| +    DidLayoutAndPaintAsync(); | 
| +  } | 
| +} | 
| + | 
| +void RenderWidgetCompositor::DidLayoutAndPaintAsync() { | 
| +  if (!layout_and_paint_async_callback_) | 
| +    return; | 
| layout_and_paint_async_callback_->didLayoutAndPaint(); | 
| layout_and_paint_async_callback_ = nullptr; | 
| } | 
|  |