Index: content/renderer/gpu/gpu_benchmarking_extension.cc |
diff --git a/content/renderer/gpu/gpu_benchmarking_extension.cc b/content/renderer/gpu/gpu_benchmarking_extension.cc |
index 9b24efddf439512d7d388728906a0edd96f82ef0..6d2c0fba8b4b1e450c61bcc8ea20e488ff890294 100644 |
--- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
+++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
@@ -81,6 +81,33 @@ class SkPictureRecorder : public WebViewBenchmarkSupport::PaintClient { |
SkPicture picture_; |
}; |
+class RenderingStatsEnumerator : public cc::RenderingStats::Enumerator { |
+ public: |
+ RenderingStatsEnumerator(v8::Handle<v8::Object> stats_object) |
+ : stats_object(stats_object) { } |
+ |
+ virtual void AddInt64(const char* name, int64 value) { |
+ stats_object->Set(v8::String::New(name), v8::Number::New(value)); |
+ } |
+ |
+ virtual void AddDouble(const char* name, double value) { |
+ stats_object->Set(v8::String::New(name), v8::Number::New(value)); |
+ } |
+ |
+ virtual void AddInt(const char* name, int value) { |
+ stats_object->Set(v8::String::New(name), v8::Integer::New(value)); |
+ } |
+ |
+ virtual void AddTimeDeltaInSecondsF(const char* name, |
+ const base::TimeDelta& value) { |
+ stats_object->Set(v8::String::New(name), |
+ v8::Number::New(value.InSecondsF())); |
+ } |
+ |
+ private: |
+ v8::Handle<v8::Object> stats_object; |
+}; |
+ |
} // namespace |
namespace content { |
@@ -158,62 +185,11 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
content::GpuRenderingStats gpu_stats; |
render_view_impl->GetGpuRenderingStats(&gpu_stats); |
v8::Handle<v8::Object> stats_object = v8::Object::New(); |
- stats_object->Set(v8::String::New("numAnimationFrames"), |
- v8::Number::New( |
- stats.rendering_stats.numAnimationFrames)); |
- stats_object->Set(v8::String::New("numFramesSentToScreen"), |
- v8::Number::New( |
- stats.rendering_stats.numFramesSentToScreen)); |
- stats_object->Set(v8::String::New("droppedFrameCount"), |
- v8::Number::New( |
- stats.rendering_stats.droppedFrameCount)); |
- stats_object->Set(v8::String::New("totalPaintTimeInSeconds"), |
- v8::Number::New( |
- stats.rendering_stats.totalPaintTimeInSeconds)); |
- stats_object->Set(v8::String::New("totalRasterizeTimeInSeconds"), |
- v8::Number::New( |
- stats.rendering_stats.totalRasterizeTimeInSeconds)); |
- stats_object->Set(v8::String::New("totalCommitTimeInSeconds"), |
- v8::Number::New( |
- stats.rendering_stats.totalCommitTimeInSeconds)); |
- stats_object->Set(v8::String::New("totalCommitCount"), |
- v8::Number::New( |
- stats.rendering_stats.totalCommitCount)); |
- stats_object->Set(v8::String::New("numImplThreadScrolls"), |
- v8::Number::New( |
- stats.rendering_stats.numImplThreadScrolls)); |
- stats_object->Set(v8::String::New("numMainThreadScrolls"), |
- v8::Number::New( |
- stats.rendering_stats.numMainThreadScrolls)); |
- stats_object->Set(v8::String::New("totalPixelsPainted"), |
- v8::Number::New( |
- stats.rendering_stats.totalPixelsPainted)); |
- stats_object->Set(v8::String::New("totalPixelsRasterized"), |
- v8::Number::New( |
- stats.rendering_stats.totalPixelsRasterized)); |
- stats_object->Set(v8::String::New("numLayersDrawn"), |
- v8::Number::New( |
- stats.rendering_stats.numLayersDrawn)); |
- |
- stats_object->Set(v8::String::New("globalTextureUploadCount"), |
- v8::Number::New(gpu_stats.global_texture_upload_count)); |
- stats_object->Set( |
- v8::String::New("globalTotalTextureUploadTimeInSeconds"), |
- v8::Number::New( |
- gpu_stats.global_total_texture_upload_time.InSecondsF())); |
- stats_object->Set(v8::String::New("textureUploadCount"), |
- v8::Number::New(gpu_stats.texture_upload_count)); |
- stats_object->Set( |
- v8::String::New("totalTextureUploadTimeInSeconds"), |
- v8::Number::New(gpu_stats.total_texture_upload_time.InSecondsF())); |
- stats_object->Set( |
- v8::String::New("globalTotalProcessingCommandsTimeInSeconds"), |
- v8::Number::New( |
- gpu_stats.global_total_processing_commands_time.InSecondsF())); |
- stats_object->Set( |
- v8::String::New("totalProcessingCommandsTimeInSeconds"), |
- v8::Number::New( |
- gpu_stats.total_processing_commands_time.InSecondsF())); |
+ |
+ RenderingStatsEnumerator enumerator(stats_object); |
+ stats.rendering_stats.EnumerateFields(&enumerator); |
+ gpu_stats.EnumerateFields(&enumerator); |
+ |
return stats_object; |
} |