| Index: chrome/browser/process_singleton_win.cc
|
| diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc
|
| index 442458e086bc0edf3a04ac6040707f7486ff63be..c33fd1a511bb9effbd0a2c9d8546b644ca4f05d8 100644
|
| --- a/chrome/browser/process_singleton_win.cc
|
| +++ b/chrome/browser/process_singleton_win.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| #include "base/macros.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/process/process.h"
|
| #include "base/process/process_info.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -281,12 +282,22 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() {
|
|
|
| ProcessSingleton::NotifyResult
|
| ProcessSingleton::NotifyOtherProcessOrCreate() {
|
| + const base::TimeTicks begin_ticks = base::TimeTicks::Now();
|
| for (int i = 0; i < 2; ++i) {
|
| if (Create()) {
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("Chrome.ProcessSingleton.TimeToCreate",
|
| + base::TimeTicks::Now() - begin_ticks);
|
| return PROCESS_NONE; // This is the single browser process.
|
| }
|
| ProcessSingleton::NotifyResult result = NotifyOtherProcess();
|
| if (result == PROCESS_NOTIFIED || result == LOCK_ERROR) {
|
| + if (result == PROCESS_NOTIFIED) {
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("Chrome.ProcessSingleton.TimeToNotify",
|
| + base::TimeTicks::Now() - begin_ticks);
|
| + } else {
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("Chrome.ProcessSingleton.TimeToFailure",
|
| + base::TimeTicks::Now() - begin_ticks);
|
| + }
|
| // The single browser process was notified, the user chose not to
|
| // terminate a hung browser, or the lock file could not be created.
|
| // Nothing more to do.
|
| @@ -297,6 +308,8 @@ ProcessSingleton::NotifyOtherProcessOrCreate() {
|
| // terminated. Retry once if this is the first time; otherwise, fall through
|
| // to report that the process must exit because the profile is in use.
|
| }
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("Chrome.ProcessSingleton.TimeToFailure",
|
| + base::TimeTicks::Now() - begin_ticks);
|
| return PROFILE_IN_USE;
|
| }
|
|
|
|
|