| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index de65f0cab2706c712874cc34f3376e4c9b3a565f..25ae839f4a4ef9cba56eebb2b6318bbdc693b4b3 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -496,16 +496,23 @@ void RenderWidgetHostImpl::SetIsLoading(bool is_loading) {
|
| }
|
|
|
| void RenderWidgetHostImpl::CopyFromBackingStore(
|
| - const gfx::Rect& src_rect,
|
| - const gfx::Size& accelerated_dest_size,
|
| + const gfx::Rect& src_subrect,
|
| + const gfx::Size& accelerated_dst_size,
|
| const base::Callback<void(bool)>& callback,
|
| skia::PlatformCanvas* output) {
|
| if (view_ && is_accelerated_compositing_active_) {
|
| TRACE_EVENT0("browser",
|
| "RenderWidgetHostImpl::CopyFromBackingStore::FromCompositingSurface");
|
| - // TODO(mazda): Support partial copy with |src_rect|
|
| - // (http://crbug.com/118571).
|
| - view_->CopyFromCompositingSurface(accelerated_dest_size,
|
| +#if defined(USE_AURA) || defined(LINUX)
|
| + gfx::Rect copy_rect = src_subrect.IsEmpty() ?
|
| + gfx::Rect(view_->GetViewBounds().size()) : src_subrect;
|
| +#else
|
| + // Just passes an empty rect to CopyFromCompositingSurface on non-Aura Win
|
| + // and Mac because copying a partial rectangle is not supported.
|
| + gfx::Rect copy_rect;
|
| +#endif
|
| + view_->CopyFromCompositingSurface(copy_rect,
|
| + accelerated_dst_size,
|
| callback,
|
| output);
|
| return;
|
| @@ -519,10 +526,8 @@ void RenderWidgetHostImpl::CopyFromBackingStore(
|
|
|
| TRACE_EVENT0("browser",
|
| "RenderWidgetHostImpl::CopyFromBackingStore::FromBackingStore");
|
| - const gfx::Size backing_store_size = backing_store->size();
|
| - gfx::Rect copy_rect = src_rect.IsEmpty() ?
|
| - gfx::Rect(0, 0, backing_store_size.width(), backing_store_size.height()) :
|
| - src_rect;
|
| + gfx::Rect copy_rect = src_subrect.IsEmpty() ?
|
| + gfx::Rect(backing_store->size()) : src_subrect;
|
| // When the result size is equal to the backing store size, copy from the
|
| // backing store directly to the output canvas.
|
| bool result = backing_store->CopyFromBackingStore(copy_rect, output);
|
|
|