| 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 06bf1938a799b9a018da1edfee39e79355ddbdb3..e9128404795a11dc35693afa364413fea6dd5d04 100644
|
| --- a/content/renderer/gpu/gpu_benchmarking_extension.cc
|
| +++ b/content/renderer/gpu/gpu_benchmarking_extension.cc
|
| @@ -4,8 +4,15 @@
|
|
|
| #include "content/renderer/gpu/gpu_benchmarking_extension.h"
|
|
|
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebRenderingStats.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
| #include "v8/include/v8.h"
|
|
|
| +using WebKit::WebFrame;
|
| +using WebKit::WebRenderingStats;
|
| +using WebKit::WebView;
|
| +
|
| const char kGpuBenchmarkingExtensionName[] = "v8/GpuBenchmarking";
|
|
|
| namespace content {
|
| @@ -19,12 +26,43 @@ class GpuBenchmarkingWrapper : public v8::Extension {
|
| "};"
|
| "if (typeof(chrome.gpuBenchmarking) == 'undefined') {"
|
| " chrome.gpuBenchmarking = {};"
|
| + "};"
|
| + "chrome.gpuBenchmarking.renderingStats = function() {"
|
| + " native function GetRenderingStats();"
|
| + " return GetRenderingStats();"
|
| "};") {}
|
|
|
| virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
|
| v8::Handle<v8::String> name) {
|
| + if (name->Equals(v8::String::New("GetRenderingStats")))
|
| + return v8::FunctionTemplate::New(GetRenderingStats);
|
| +
|
| return v8::Handle<v8::FunctionTemplate>();
|
| }
|
| +
|
| + static v8::Handle<v8::Value> GetRenderingStats(const v8::Arguments& args) {
|
| + WebFrame* web_frame = WebFrame::frameForEnteredContext();
|
| + if (!web_frame)
|
| + return v8::Undefined();
|
| +
|
| + WebView* web_view = web_frame->view();
|
| + if (!web_view)
|
| + return v8::Undefined();
|
| +
|
| + WebRenderingStats stats;
|
| + web_view->renderingStats(stats);
|
| +
|
| + v8::Handle<v8::Object> stats_object = v8::Object::New();
|
| + if (stats.numAnimationFrames)
|
| + stats_object->Set(v8::String::New("numAnimationFrames"),
|
| + v8::Integer::New(stats.numAnimationFrames),
|
| + v8::ReadOnly);
|
| + if (stats.numFramesSentToScreen)
|
| + stats_object->Set(v8::String::New("numFramesSentToScreen"),
|
| + v8::Integer::New(stats.numFramesSentToScreen),
|
| + v8::ReadOnly);
|
| + return stats_object;
|
| + }
|
| };
|
|
|
| v8::Extension* GpuBenchmarkingExtension::Get() {
|
|
|