Chrome rename: add ProcessLauncher UMA stats for system startup

This CL adds UMA stats for `ProcessLauncher` CoCreate during system
startup. This will allow seeing if the system startup case requires more
of a delay than other cases.

OBSOLETE_HISTOGRAM[Startup.CreateProcessLauncher]=Replaced by Startup.CreateProcessLauncher2

Bug: 348199036,40792898
Change-Id: Ie1c2a3e48b4b51cc0de09c86bc0aec48eedcfcd6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5785318
Reviewed-by: Sean Maher <[email protected]>
Reviewed-by: Greg Thompson <[email protected]>
Auto-Submit: S Ganesh <[email protected]>
Commit-Queue: S Ganesh <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1341855}
diff --git a/chrome/browser/first_run/upgrade_util_win.cc b/chrome/browser/first_run/upgrade_util_win.cc
index 3a243615..734c88f 100644
--- a/chrome/browser/first_run/upgrade_util_win.cc
+++ b/chrome/browser/first_run/upgrade_util_win.cc
@@ -32,6 +32,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/synchronization/waitable_event.h"
+#include "base/system/sys_info.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
@@ -129,6 +130,7 @@
 // without a timeout.
 Microsoft::WRL::ComPtr<IUnknown> CreateProcessLauncher() {
   constexpr int kDefaultTimeoutIncrementSeconds = 15;
+  constexpr base::TimeDelta kMaxTimeAfterSystemStartup = base::Seconds(150);
 
   auto result = base::MakeRefCounted<CreateProcessLauncherResult>();
   if (base::ThreadPool::CreateCOMSTATaskRunner(
@@ -143,9 +145,14 @@
             .GetIfInt()
             .value_or(kDefaultTimeoutIncrementSeconds));
     const base::ElapsedTimer timer;
+    const bool is_at_startup =
+        base::SysInfo::Uptime() <= kMaxTimeAfterSystemStartup;
     if (!result->completion_event.TimedWait(timeout)) {
       base::UmaHistogramMediumTimes(
-          "Startup.CreateProcessLauncher.TimedWaitFailed", timer.Elapsed());
+          is_at_startup
+              ? "Startup.CreateProcessLauncher2.TimedWaitFailedAtStartup"
+              : "Startup.CreateProcessLauncher2.TimedWaitFailed",
+          timer.Elapsed());
       creation_timeout.Set(base::Value(static_cast<int>(timeout.InSeconds()) +
                                        kDefaultTimeoutIncrementSeconds));
       TRACE_EVENT_INSTANT0(
@@ -159,7 +166,10 @@
       return {};
     }
     base::UmaHistogramMediumTimes(
-        "Startup.CreateProcessLauncher.TimedWaitSucceeded", timer.Elapsed());
+        is_at_startup
+            ? "Startup.CreateProcessLauncher2.TimedWaitSucceededAtStartup"
+            : "Startup.CreateProcessLauncher2.TimedWaitSucceeded",
+        timer.Elapsed());
 
     Microsoft::WRL::ComPtr<IUnknown> unknown;
     const HRESULT hr =