| Index: extensions/renderer/binding_generating_native_handler.cc
|
| diff --git a/extensions/renderer/binding_generating_native_handler.cc b/extensions/renderer/binding_generating_native_handler.cc
|
| index 8912017e7f17445468d86e097290444ad57461f2..5aa161be73fbcd927e06793c73d620caf993b221 100644
|
| --- a/extensions/renderer/binding_generating_native_handler.cc
|
| +++ b/extensions/renderer/binding_generating_native_handler.cc
|
| @@ -5,6 +5,8 @@
|
| #include "extensions/renderer/binding_generating_native_handler.h"
|
|
|
| #include "base/macros.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| +#include "base/timer/elapsed_timer.h"
|
| #include "extensions/renderer/script_context.h"
|
| #include "extensions/renderer/v8_helpers.h"
|
|
|
| @@ -19,6 +21,7 @@ BindingGeneratingNativeHandler::BindingGeneratingNativeHandler(
|
| : context_(context), api_name_(api_name), bind_to_(bind_to) {}
|
|
|
| v8::Local<v8::Object> BindingGeneratingNativeHandler::NewInstance() {
|
| + base::ElapsedTimer timer;
|
| // This long sequence of commands effectively runs the JavaScript code,
|
| // such that result[bind_to] is the compiled schema for |api_name|:
|
| //
|
| @@ -105,6 +108,13 @@ v8::Local<v8::Object> BindingGeneratingNativeHandler::NewInstance() {
|
| NOTREACHED();
|
| return v8::Local<v8::Object>();
|
| }
|
| +
|
| + // Log UMA with microsecond accuracy*; maxes at 10 seconds.
|
| + // *Obviously, limited by our TimeTicks implementation, but as close as
|
| + // possible.
|
| + UMA_HISTOGRAM_CUSTOM_COUNTS("Extensions.ApiBindingObjectGenerationTime",
|
| + timer.Elapsed().InMicroseconds(),
|
| + 1, 10000000, 100);
|
| // return result;
|
| return scope.Escape(object);
|
| }
|
|
|