| 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; | 
| } | 
|  | 
|  |