Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 593503003: Support error handling for Surface readbacks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use content namespace to resolve readback params. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3a2dc883f4031ea824c2b2088f2d1ecfceae9ecb..c888b6ca8e40e17b9971d038ee04886bcefe221e 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -99,7 +99,7 @@ void SendImeEventAck(RenderWidgetHostImpl* host) {
}
void CopyFromCompositingSurfaceFinished(
- const base::Callback<void(bool, const SkBitmap&)>& callback,
+ ReadbackRequestCallback& callback,
scoped_ptr<cc::SingleReleaseCallback> release_callback,
scoped_ptr<SkBitmap> bitmap,
const base::TimeTicks& start_time,
@@ -118,7 +118,7 @@ void CopyFromCompositingSurfaceFinished(
release_callback->Run(sync_point, lost_resource);
UMA_HISTOGRAM_TIMES(kAsyncReadBackString,
base::TimeTicks::Now() - start_time);
- callback.Run(result, *bitmap);
+ callback.Run(*bitmap, READBACK_SUCCESS);
piman 2014/11/07 01:55:42 if result is false, we shouldn't return READBACK_S
sivag 2014/11/07 12:27:41 Done.
}
ui::LatencyInfo CreateLatencyInfo(const blink::WebInputEvent& event) {
@@ -239,11 +239,10 @@ bool HasMobileViewport(const cc::CompositorFrameMetadata& frame_metadata) {
} // anonymous namespace
-ReadbackRequest::ReadbackRequest(
- float scale,
- SkColorType color_type,
- gfx::Rect src_subrect,
- const base::Callback<void(bool, const SkBitmap&)>& result_callback)
+ReadbackRequest::ReadbackRequest(float scale,
+ SkColorType color_type,
+ gfx::Rect src_subrect,
+ ReadbackRequestCallback& result_callback)
: scale_(scale),
color_type_(color_type),
src_subrect_(src_subrect),
@@ -380,7 +379,7 @@ void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) {
void RenderWidgetHostViewAndroid::AbortPendingReadbackRequests() {
while (!readbacks_waiting_for_frame_.empty()) {
ReadbackRequest& readback_request = readbacks_waiting_for_frame_.front();
- readback_request.GetResultCallback().Run(false, SkBitmap());
+ readback_request.GetResultCallback().Run(SkBitmap(), READBACK_FAILED);
readbacks_waiting_for_frame_.pop();
}
}
@@ -389,9 +388,9 @@ void RenderWidgetHostViewAndroid::GetScaledContentBitmap(
float scale,
SkColorType color_type,
gfx::Rect src_subrect,
- CopyFromCompositingSurfaceCallback& result_callback) {
+ ReadbackRequestCallback& result_callback) {
if (!host_ || host_->is_hidden()) {
- result_callback.Run(false, SkBitmap());
+ result_callback.Run(SkBitmap(), READBACK_NOT_SUPPORTED);
return;
}
if (!IsSurfaceAvailableForCopy()) {
@@ -836,17 +835,17 @@ void RenderWidgetHostViewAndroid::SetBackgroundColor(SkColor color) {
void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
const gfx::Rect& src_subrect,
const gfx::Size& dst_size,
- CopyFromCompositingSurfaceCallback& callback,
+ ReadbackRequestCallback& callback,
const SkColorType color_type) {
TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::CopyFromCompositingSurface");
if ((!host_ || host_->is_hidden()) ||
!IsReadbackConfigSupported(color_type)) {
- callback.Run(false, SkBitmap());
+ callback.Run(SkBitmap(), READBACK_FORMAT_NOT_SUPPORTED);
return;
}
base::TimeTicks start_time = base::TimeTicks::Now();
if (!using_synchronous_compositor_ && !IsSurfaceAvailableForCopy()) {
- callback.Run(false, SkBitmap());
+ callback.Run(SkBitmap(), READBACK_NOT_SUPPORTED);
return;
}
const gfx::Display& display =
@@ -1196,13 +1195,13 @@ scoped_ptr<TouchHandleDrawable> RenderWidgetHostViewAndroid::CreateDrawable() {
void RenderWidgetHostViewAndroid::SynchronousCopyContents(
const gfx::Rect& src_subrect_in_pixel,
const gfx::Size& dst_size_in_pixel,
- const base::Callback<void(bool, const SkBitmap&)>& callback,
+ ReadbackRequestCallback& callback,
const SkColorType color_type) {
SynchronousCompositor* compositor =
SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(),
host_->GetRoutingID());
if (!compositor) {
- callback.Run(false, SkBitmap());
+ callback.Run(SkBitmap(), READBACK_FAILED);
return;
}
@@ -1216,7 +1215,7 @@ void RenderWidgetHostViewAndroid::SynchronousCopyContents(
(float)dst_size_in_pixel.width() / (float)src_subrect_in_pixel.width(),
(float)dst_size_in_pixel.height() / (float)src_subrect_in_pixel.height());
compositor->DemandDrawSw(&canvas);
- callback.Run(true, bitmap);
+ callback.Run(bitmap, READBACK_SUCCESS);
}
void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated(
@@ -1685,14 +1684,14 @@ void RenderWidgetHostViewAndroid::OnLostResources() {
}
// static
-void
-RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResultForDelegatedReadback(
- const gfx::Size& dst_size_in_pixel,
- const SkColorType color_type,
- const base::TimeTicks& start_time,
- scoped_refptr<cc::Layer> readback_layer,
- const base::Callback<void(bool, const SkBitmap&)>& callback,
- scoped_ptr<cc::CopyOutputResult> result) {
+void RenderWidgetHostViewAndroid::
+ PrepareTextureCopyOutputResultForDelegatedReadback(
+ const gfx::Size& dst_size_in_pixel,
+ const SkColorType color_type,
+ const base::TimeTicks& start_time,
+ scoped_refptr<cc::Layer> readback_layer,
+ ReadbackRequestCallback& callback,
+ scoped_ptr<cc::CopyOutputResult> result) {
readback_layer->RemoveFromParent();
PrepareTextureCopyOutputResult(
dst_size_in_pixel, color_type, start_time, callback, result.Pass());
@@ -1703,10 +1702,10 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
const gfx::Size& dst_size_in_pixel,
const SkColorType color_type,
const base::TimeTicks& start_time,
- const base::Callback<void(bool, const SkBitmap&)>& callback,
+ ReadbackRequestCallback& callback,
scoped_ptr<cc::CopyOutputResult> result) {
base::ScopedClosureRunner scoped_callback_runner(
- base::Bind(callback, false, SkBitmap()));
+ base::Bind(callback, SkBitmap(), READBACK_FAILED));
TRACE_EVENT0("cc",
"RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult");

Powered by Google App Engine
This is Rietveld 408576698