Chromium Code Reviews| Index: extensions/common/features/feature_provider.cc |
| diff --git a/extensions/common/features/feature_provider.cc b/extensions/common/features/feature_provider.cc |
| index 90e792456a9f6a9151578a77b708853f8530a45b..f8799510a16f267a70e17c6e255915144c8241e1 100644 |
| --- a/extensions/common/features/feature_provider.cc |
| +++ b/extensions/common/features/feature_provider.cc |
| @@ -7,9 +7,14 @@ |
| #include <map> |
| #include "base/basictypes.h" |
| +#include "base/command_line.h" |
| #include "base/lazy_instance.h" |
| #include "base/memory/linked_ptr.h" |
| +#include "base/metrics/histogram_macros.h" |
| +#include "base/trace_event/trace_event.h" |
| +#include "content/public/common/content_switches.h" |
| #include "extensions/common/extensions_client.h" |
| +#include "extensions/common/switches.h" |
| namespace extensions { |
| @@ -27,6 +32,9 @@ class Static { |
| friend struct base::DefaultLazyInstanceTraits<Static>; |
| Static() { |
| + TRACE_EVENT0("startup", "extensions::FeatureProvider::Static"); |
| + base::Time begin_time = base::Time::Now(); |
| + |
| ExtensionsClient* client = ExtensionsClient::Get(); |
| feature_providers_["api"] = |
| make_linked_ptr(client->CreateFeatureProvider("api").release()); |
| @@ -36,6 +44,20 @@ class Static { |
| make_linked_ptr(client->CreateFeatureProvider("permission").release()); |
| feature_providers_["behavior"] = |
| make_linked_ptr(client->CreateFeatureProvider("behavior").release()); |
| + |
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| + std::string process_type = |
| + command_line->GetSwitchValueASCII(::switches::kProcessType); |
| + |
| + // Measure time only for browser process. This method gets called by the |
| + // browser process on startup, as well as on renderer and extension |
| + // processes throughout the execution of the browser. We are more |
| + // interested in how long this takes as a startup cost, so we are |
| + // just measuring the time in the browser process. |
| + if (process_type == "") { |
|
Ilya Sherman
2015/03/13 22:25:18
nit: It's generally better to use std::string() ra
rkaplow
2015/03/14 19:16:32
Done.
|
| + UMA_HISTOGRAM_TIMES("Extensions.FeatureProviderStaticInitTime", |
| + base::Time::Now() - begin_time); |
| + } |
| } |
| typedef std::map<std::string, linked_ptr<FeatureProvider> > |