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