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); |