| Index: chrome/renderer/benchmarking_extension.cc
|
| diff --git a/chrome/renderer/benchmarking_extension.cc b/chrome/renderer/benchmarking_extension.cc
|
| index b04a306dfe9108fa87cfa3b33df7815357876a0b..a5094ad55899c2ba204988eaa56a31adbf85f968 100644
|
| --- a/chrome/renderer/benchmarking_extension.cc
|
| +++ b/chrome/renderer/benchmarking_extension.cc
|
| @@ -29,6 +29,10 @@ class BenchmarkingWrapper : public v8::Extension {
|
| " native function GetCounter();"
|
| " return GetCounter(name);"
|
| "};"
|
| + "chrome.benchmarking.counterForRenderer = function(name) {"
|
| + " native function GetCounterForRenderer();"
|
| + " return GetCounterForRenderer(name);"
|
| + "};"
|
| "chrome.benchmarking.isSingleProcess = function() {"
|
| " native function IsSingleProcess();"
|
| " return IsSingleProcess();"
|
| @@ -59,6 +63,8 @@ class BenchmarkingWrapper : public v8::Extension {
|
| v8::Handle<v8::String> name) OVERRIDE {
|
| if (name->Equals(v8::String::New("GetCounter"))) {
|
| return v8::FunctionTemplate::New(GetCounter);
|
| + } else if (name->Equals(v8::String::New("GetCounterForRenderer"))) {
|
| + return v8::FunctionTemplate::New(GetCounterForRenderer);
|
| } else if (name->Equals(v8::String::New("IsSingleProcess"))) {
|
| return v8::FunctionTemplate::New(IsSingleProcess);
|
| } else if (name->Equals(v8::String::New("HiResTime"))) {
|
| @@ -68,20 +74,41 @@ class BenchmarkingWrapper : public v8::Extension {
|
| return v8::Handle<v8::FunctionTemplate>();
|
| }
|
|
|
| + /*
|
| + * Extract the counter name from arguments.
|
| + */
|
| + static void ExtractCounterName(
|
| + const v8::FunctionCallbackInfo<v8::Value>& args,
|
| + char* name,
|
| + size_t capacity) {
|
| + name[0] = 'c';
|
| + name[1] = ':';
|
| + args[0]->ToString()->WriteUtf8(&name[2], capacity - 3);
|
| + }
|
| +
|
| static void GetCounter(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| if (!args.Length() || !args[0]->IsString() || !base::StatsTable::current())
|
| return;
|
|
|
| - // Extract the name argument
|
| char name[256];
|
| - name[0] = 'c';
|
| - name[1] = ':';
|
| - args[0]->ToString()->WriteUtf8(&name[2], sizeof(name) - 3);
|
| -
|
| + ExtractCounterName(args, name, sizeof(name));
|
| int counter = base::StatsTable::current()->GetCounterValue(name);
|
| args.GetReturnValue().Set(static_cast<int32_t>(counter));
|
| }
|
|
|
| + static void GetCounterForRenderer(
|
| + const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| + if (!args.Length() || !args[0]->IsString() || !base::StatsTable::current())
|
| + return;
|
| +
|
| + char name[256];
|
| + ExtractCounterName(args, name, sizeof(name));
|
| + int counter = base::StatsTable::current()->GetCounterValue(
|
| + name,
|
| + base::GetCurrentProcId());
|
| + args.GetReturnValue().Set(static_cast<int32_t>(counter));
|
| + }
|
| +
|
| static void IsSingleProcess(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| args.GetReturnValue().Set(
|
| CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess));
|
|
|