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 8db7f7caa48804b9cc6d76f67f82f3f58d2da5a0..7f7f82f0ed62f9a865dde8e1a706fb4a963d4909 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -254,6 +254,7 @@ void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) { |
void RenderWidgetHostViewAndroid::GetScaledContentBitmap( |
float scale, |
SkBitmap::Config bitmap_config, |
+ gfx::Rect src_subrect, |
const base::Callback<void(bool, const SkBitmap&)>& result_callback) { |
if (!IsSurfaceAvailableForCopy()) { |
result_callback.Run(false, SkBitmap()); |
@@ -261,7 +262,10 @@ void RenderWidgetHostViewAndroid::GetScaledContentBitmap( |
} |
gfx::Size bounds = layer_->bounds(); |
- gfx::Rect src_subrect(bounds); |
+ if (src_subrect.IsEmpty()) |
+ src_subrect = gfx::Rect(bounds); |
+ DCHECK_LE(src_subrect.width() + src_subrect.x(), bounds.width()); |
+ DCHECK_LE(src_subrect.height() + src_subrect.y(), bounds.height()); |
const gfx::Display& display = |
gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); |
float device_scale_factor = display.device_scale_factor(); |
@@ -272,40 +276,6 @@ void RenderWidgetHostViewAndroid::GetScaledContentBitmap( |
src_subrect, dst_size, result_callback, bitmap_config); |
} |
-bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) { |
- if (!CompositorImpl::IsInitialized() || |
- texture_id_in_layer_ == 0 || |
- texture_size_in_layer_.IsEmpty()) |
- return false; |
- |
- gfx::JavaBitmap bitmap(jbitmap); |
- |
- // TODO(dtrainor): Eventually add support for multiple formats here. |
- DCHECK(bitmap.format() == ANDROID_BITMAP_FORMAT_RGBA_8888); |
- |
- GLHelper* helper = ImageTransportFactoryAndroid::GetInstance()->GetGLHelper(); |
- |
- GLuint texture = helper->CopyAndScaleTexture( |
- texture_id_in_layer_, |
- texture_size_in_layer_, |
- bitmap.size(), |
- true, |
- GLHelper::SCALER_QUALITY_FAST); |
- if (texture == 0u) |
- return false; |
- |
- helper->ReadbackTextureSync(texture, |
- gfx::Rect(bitmap.size()), |
- static_cast<unsigned char*> (bitmap.pixels()), |
- SkBitmap::kARGB_8888_Config); |
- |
- gpu::gles2::GLES2Interface* gl = |
- ImageTransportFactoryAndroid::GetInstance()->GetContextGL(); |
- gl->DeleteTextures(1, &texture); |
- |
- return true; |
-} |
- |
bool RenderWidgetHostViewAndroid::HasValidFrame() const { |
if (!content_view_core_) |
return false; |