Chromium Code Reviews| 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 90d5850e9ca4a5b0f8bc4719e408b4402184d898..3383bc78244f9516ef60b9127ba74ad2ab2a1823 100644 |
| --- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
| +++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
| @@ -95,9 +95,17 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| "if (typeof(chrome.gpuBenchmarking) == 'undefined') {" |
| " chrome.gpuBenchmarking = {};" |
| "};" |
| + "chrome.gpuBenchmarking.startRecordingRenderingStats = function() {" |
| + " native function StartRecordingRenderingStats();" |
| + " StartRecordingRenderingStats();" |
| + "};" |
| + "chrome.gpuBenchmarking.stopRecordingRenderingStats = function() {" |
| + " native function GetRenderingStats();" |
| + " return GetRenderingStats(true);" |
| + "};" |
| "chrome.gpuBenchmarking.renderingStats = function() {" |
| " native function GetRenderingStats();" |
| - " return GetRenderingStats();" |
| + " return GetRenderingStats(false);" |
| "};" |
| "chrome.gpuBenchmarking.printToSkPicture = function(dirname) {" |
| " native function PrintToSkPicture();" |
| @@ -126,6 +134,8 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( |
| v8::Handle<v8::String> name) { |
| + if (name->Equals(v8::String::New("StartRecordingRenderingStats"))) |
| + return v8::FunctionTemplate::New(StartRecordingRenderingStats); |
| if (name->Equals(v8::String::New("GetRenderingStats"))) |
| return v8::FunctionTemplate::New(GetRenderingStats); |
| if (name->Equals(v8::String::New("PrintToSkPicture"))) |
| @@ -138,8 +148,32 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| return v8::Handle<v8::FunctionTemplate>(); |
| } |
| + static v8::Handle<v8::Value> StartRecordingRenderingStats( |
| + const v8::Arguments& args) { |
| + WebFrame* web_frame = WebFrame::frameForCurrentContext(); |
| + if (!web_frame) |
| + return v8::Undefined(); |
| + |
| + WebView* web_view = web_frame->view(); |
| + if (!web_view) |
| + return v8::Undefined(); |
| + |
| + RenderViewImpl* render_view_impl = RenderViewImpl::FromWebView(web_view); |
| + if (!render_view_impl) |
| + return v8::Undefined(); |
| + |
| + render_view_impl->StartRecordingRenderingStats(); |
| + return v8::Undefined(); |
| + } |
| + |
| static v8::Handle<v8::Value> GetRenderingStats(const v8::Arguments& args) { |
| + if (args.Length() != 1 || |
| + !args[0]->IsBoolean()) |
|
apatrick_chromium
2012/11/05 20:33:18
nit: this condition expression would fit on one li
|
| + return v8::Undefined(); |
| + |
| + bool use_rendering_stats_subscriber = args[0]->BooleanValue(); |
| + |
| WebFrame* web_frame = WebFrame::frameForCurrentContext(); |
| if (!web_frame) |
| return v8::Undefined(); |
| @@ -153,7 +187,10 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| return v8::Undefined(); |
| WebRenderingStats stats; |
| - render_view_impl->GetRenderingStats(stats); |
| + if (use_rendering_stats_subscriber) |
| + render_view_impl->StopRecordingRenderingStats(stats); |
| + else |
| + render_view_impl->GetRenderingStats(stats); |
| content::GpuRenderingStats gpu_stats; |
| render_view_impl->GetGpuRenderingStats(&gpu_stats); |