Index: extensions/common/extension.cc |
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc |
index 2f5e2d653e2996f575147f8c36d8358da6965c12..9b46a92c976f67d51d736c3bbe8686236187e267 100644 |
--- a/extensions/common/extension.cc |
+++ b/extensions/common/extension.cc |
@@ -15,6 +15,7 @@ |
#include "base/i18n/rtl.h" |
#include "base/logging.h" |
#include "base/memory/singleton.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/stl_util.h" |
#include "base/strings/string16.h" |
#include "base/strings/string_number_conversions.h" |
@@ -22,9 +23,11 @@ |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/timer/elapsed_timer.h" |
#include "base/values.h" |
#include "base/version.h" |
#include "components/crx_file/id_util.h" |
+#include "content/public/common/content_switches.h" |
#include "content/public/common/url_constants.h" |
#include "extensions/common/constants.h" |
#include "extensions/common/error_utils.h" |
@@ -116,6 +119,7 @@ scoped_refptr<Extension> Extension::Create(const base::FilePath& path, |
int flags, |
const std::string& explicit_id, |
std::string* utf8_error) { |
+ base::ElapsedTimer timer; |
DCHECK(utf8_error); |
base::string16 error; |
std::unique_ptr<extensions::Manifest> manifest(new extensions::Manifest( |
@@ -139,6 +143,27 @@ scoped_refptr<Extension> Extension::Create(const base::FilePath& path, |
return NULL; |
} |
+ const base::CommandLine& command_line = |
+ *base::CommandLine::ForCurrentProcess(); |
+ std::string process_type = |
+ command_line.GetSwitchValueASCII(::switches::kProcessType); |
+ // Use microsecond accuracy for increased granularity. Max at 10 seconds. |
+ base::TimeDelta elapsed_time = timer.Elapsed(); |
+ const int kMaxTimeInMicroseconds = 10000000; |
+ if (process_type.empty()) { |
+ UMA_HISTOGRAM_CUSTOM_COUNTS( |
+ "Extensions.ExtensionCreationTime.BrowserProcess", |
+ elapsed_time.InMicroseconds(), 1, kMaxTimeInMicroseconds, 100); |
+ } else if (command_line.HasSwitch(switches::kExtensionProcess)) { |
+ UMA_HISTOGRAM_CUSTOM_COUNTS( |
+ "Extensions.ExtensionCreationTime.ExtensionProcess", |
+ elapsed_time.InMicroseconds(), 1, kMaxTimeInMicroseconds, 100); |
+ } else if (process_type == ::switches::kRendererProcess) { |
+ UMA_HISTOGRAM_CUSTOM_COUNTS( |
+ "Extensions.ExtensionCreationTime.RendererProcess", |
+ elapsed_time.InMicroseconds(), 1, kMaxTimeInMicroseconds, 100); |
+ } |
+ |
return extension; |
} |