Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index c6991308572065f082609ad5d3cba55c25ce5996..9289105d13da077f1c36766905a088105c9e82fb 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -131,15 +131,23 @@ void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) { |
} |
WebKit::WebGLId RenderWidgetHostViewAndroid::GetScaledContentTexture( |
- const gfx::Size& size) { |
+ const gfx::Size& size, |
+ const gfx::Rect& src_rect) { |
if (!CompositorImpl::IsInitialized() || |
texture_id_in_layer_ == 0 || |
texture_size_in_layer_.IsEmpty()) |
return 0; |
+ // Intersect the rects to make sure we aren't trying to grab area from |
+ // outside the texture area. |
+ gfx::Rect intersected_rect(gfx::IntersectRects( |
+ src_rect, |
+ gfx::Rect(texture_size_in_layer_))); |
+ |
GLHelper* helper = ImageTransportFactoryAndroid::GetInstance()->GetGLHelper(); |
return helper->CopyAndScaleTexture(texture_id_in_layer_, |
texture_size_in_layer_, |
+ intersected_rect, |
size, |
true); |
} |
@@ -157,10 +165,12 @@ bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) { |
GLHelper* helper = ImageTransportFactoryAndroid::GetInstance()->GetGLHelper(); |
- WebKit::WebGLId texture = helper->CopyAndScaleTexture(texture_id_in_layer_, |
- texture_size_in_layer_, |
- bitmap.size(), |
- true); |
+ WebKit::WebGLId texture = helper->CopyAndScaleTexture( |
+ texture_id_in_layer_, |
+ texture_size_in_layer_, |
+ gfx::Rect(texture_size_in_layer_), |
+ bitmap.size(), |
+ true); |
if (texture == 0) |
return false; |