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 2d1b65d89acfbddb7f33151c3a5c1632cba82de1..d81d68427fd53d77449f22257b22ae9674477e8f 100644 |
--- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
+++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
@@ -81,6 +81,43 @@ 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)); |
+ } |
+ |
+ private: |
+ v8::Handle<v8::Object> stats_object; |
+}; |
+ |
+class GpuRenderingStatsEnumerator : |
+ public content::GpuRenderingStats::Enumerator { |
+ public: |
+ GpuRenderingStatsEnumerator(v8::Handle<v8::Object> stats_object) |
+ : stats_object(stats_object) { } |
+ |
+ 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 +195,13 @@ 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("numLayersInLayerTree"), |
- v8::Number::New( |
- stats.rendering_stats.numLayersInLayerTree)); |
- |
- 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); |
+ |
+ GpuRenderingStatsEnumerator gpu_enumerator(stats_object); |
+ gpu_stats.enumerateFields(&gpu_enumerator); |
+ |
return stats_object; |
} |