| 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 0467a078140c6e83a2e8f8b36ccf4b612f67a431..3ad1368f130f848b13e8d6fcfcbba555eab6ee11 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/metrics/histogram.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "cc/base/latency_info_swap_promise.h"
|
| @@ -64,6 +65,7 @@ namespace content {
|
| namespace {
|
|
|
| const int kUndefinedOutputSurfaceId = -1;
|
| +static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime";
|
|
|
| void InsertSyncPointAndAckForCompositor(
|
| int renderer_host_id,
|
| @@ -92,10 +94,13 @@ void CopyFromCompositingSurfaceFinished(
|
| const base::Callback<void(bool, const SkBitmap&)>& callback,
|
| scoped_ptr<cc::SingleReleaseCallback> release_callback,
|
| scoped_ptr<SkBitmap> bitmap,
|
| + const base::TimeTicks& start_time,
|
| scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock,
|
| bool result) {
|
| bitmap_pixels_lock.reset();
|
| release_callback->Run(0, false);
|
| + UMA_HISTOGRAM_TIMES(kAsyncReadBackString,
|
| + base::TimeTicks::Now() - start_time);
|
| callback.Run(result, *bitmap);
|
| }
|
|
|
| @@ -629,6 +634,7 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
| const gfx::Size& dst_size,
|
| const base::Callback<void(bool, const SkBitmap&)>& callback,
|
| bool readback_config_rgb565) {
|
| + base::TimeTicks start_time = base::TimeTicks::Now();
|
| if (!using_synchronous_compositor_ && !IsSurfaceAvailableForCopy()) {
|
| callback.Run(false, SkBitmap());
|
| return;
|
| @@ -657,6 +663,8 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
|
|
| if (using_synchronous_compositor_) {
|
| SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback);
|
| + UMA_HISTOGRAM_TIMES("Compositing.CopyFromSurfaceTimeSynchronous",
|
| + base::TimeTicks::Now() - start_time);
|
| return;
|
| }
|
| scoped_ptr<cc::CopyOutputRequest> request;
|
| @@ -664,12 +672,14 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
| request = cc::CopyOutputRequest::CreateBitmapRequest(base::Bind(
|
| &RenderWidgetHostViewAndroid::PrepareBitmapCopyOutputResult,
|
| dst_size_in_pixel,
|
| + start_time,
|
| callback));
|
| } else {
|
| request = cc::CopyOutputRequest::CreateRequest(base::Bind(
|
| &RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult,
|
| dst_size_in_pixel,
|
| readback_config_rgb565,
|
| + start_time,
|
| callback));
|
| }
|
| request->set_area(src_subrect_in_pixel);
|
| @@ -1383,6 +1393,7 @@ void RenderWidgetHostViewAndroid::OnLostResources() {
|
| void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
|
| const gfx::Size& dst_size_in_pixel,
|
| bool readback_config_rgb565,
|
| + const base::TimeTicks& start_time,
|
| const base::Callback<void(bool, const SkBitmap&)>& callback,
|
| scoped_ptr<cc::CopyOutputResult> result) {
|
| DCHECK(result->HasTexture());
|
| @@ -1434,12 +1445,14 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
|
| callback,
|
| base::Passed(&release_callback),
|
| base::Passed(&bitmap),
|
| + start_time,
|
| base::Passed(&bitmap_pixels_lock)));
|
| }
|
|
|
| // static
|
| void RenderWidgetHostViewAndroid::PrepareBitmapCopyOutputResult(
|
| const gfx::Size& dst_size_in_pixel,
|
| + const base::TimeTicks& start_time,
|
| const base::Callback<void(bool, const SkBitmap&)>& callback,
|
| scoped_ptr<cc::CopyOutputResult> result) {
|
| DCHECK(result->HasBitmap());
|
| @@ -1458,6 +1471,9 @@ void RenderWidgetHostViewAndroid::PrepareBitmapCopyOutputResult(
|
| DCHECK_EQ(source->height(), dst_size_in_pixel.height());
|
|
|
| ignore_result(scoped_callback_runner.Release());
|
| + UMA_HISTOGRAM_TIMES(kAsyncReadBackString,
|
| + base::TimeTicks::Now() - start_time);
|
| +
|
| callback.Run(true, *source);
|
| }
|
|
|
|
|