webui: Add WebUI Service Workers for chrome-untrusted:// flag

Add it to about:flags so that it can be enabled on Chrome OS.

Bug: b/210737979
Change-Id: Ic8816560dfe2fb313743a5aa9262d9f2c42c1cc2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3573209
Reviewed-by: Jiewei Qian <[email protected]>
Commit-Queue: Giovanni Ortuno Urquidi <[email protected]>
Cr-Commit-Position: refs/heads/main@{#990274}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index c1eb32e9..195e385 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3910,6 +3910,11 @@
     {"system-extensions", flag_descriptions::kSystemExtensionsName,
      flag_descriptions::kSystemExtensionsDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(ash::features::kSystemExtensions)},
+    {"enable-service-workers-for-chrome-untrusted",
+     flag_descriptions::kEnableServiceWorkersForChromeUntrustedName,
+     flag_descriptions::kEnableServiceWorkersForChromeUntrustedDescription,
+     kOsCrOS,
+     FEATURE_VALUE_TYPE(features::kEnableServiceWorkersForChromeUntrusted)},
     {"crostini-bullseye-upgrade",
      flag_descriptions::kCrostiniBullseyeUpgradeName,
      flag_descriptions::kCrostiniBullseyeUpgradeDescription, kOsCrOS,
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index b449801..c32e5c5a 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2631,6 +2631,11 @@
     "expiry_milestone": 102
   },
   {
+    "name": "enable-service-workers-for-chrome-untrusted",
+    "owners": [ "ortuno", "dominicschulz" ],
+    "expiry_milestone": 110
+  },
+  {
     "name": "enable-sharesheet-copy-to-clipboard",
     "owners": [ "melzhang", "chromeos-apps-foundation-team" ],
     "expiry_milestone": 105
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index c3a47af..066c1eb 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -4306,6 +4306,11 @@
 const char kSystemExtensionsDescription[] =
     "Enable the Chrome OS System Extension platform.";
 
+const char kEnableServiceWorkersForChromeUntrustedName[] =
+    "Enable chrome-untrusted:// Service Workers";
+const char kEnableServiceWorkersForChromeUntrustedDescription[] =
+    "When enabled, allows chrome-untrusted:// WebUIs to use service workers.";
+
 const char kCrostiniBullseyeUpgradeName[] = "Upgrade Crostini to Bullseye";
 const char kCrostiniBullseyeUpgradeDescription[] =
     "Offer to upgrade Crostini containers on older versions to bullseye.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 911c81d..68c1725 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -2466,6 +2466,9 @@
 extern const char kSystemExtensionsName[];
 extern const char kSystemExtensionsDescription[];
 
+extern const char kEnableServiceWorkersForChromeUntrustedName[];
+extern const char kEnableServiceWorkersForChromeUntrustedDescription[];
+
 extern const char kCrostiniBullseyeUpgradeName[];
 extern const char kCrostiniBullseyeUpgradeDescription[];
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 7d6bdd3..5da21f7 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -53569,6 +53569,8 @@
   <int value="-1052219252" label="disable-captive-portal-bypass-proxy"/>
   <int value="-1052115254" label="TextfieldFocusOnTapUp:disabled"/>
   <int value="-1051509976" label="ServiceWorkerOnUI:disabled"/>
+  <int value="-1050121997"
+      label="EnableServiceWorkersForChromeUntrusted:enabled"/>
   <int value="-1050006327" label="FirmwareUpdaterApp:disabled"/>
   <int value="-1048901516" label="ChromeMemex:enabled"/>
   <int value="-1048530703" label="ContextMenuPopupStyle:disabled"/>
@@ -54880,6 +54882,8 @@
   <int value="-143382681" label="InstantTethering:enabled"/>
   <int value="-143121333" label="WebXRIncubations:enabled"/>
   <int value="-141516902" label="UseModernMediaControls:enabled"/>
+  <int value="-140763100"
+      label="EnableServiceWorkersForChromeUntrusted:disabled"/>
   <int value="-138983372" label="DesktopPWAWindowing:disabled"/>
   <int value="-138820512" label="DesktopPWAsTabStrip:enabled"/>
   <int value="-138773929" label="PassiveDocumentEventListeners:enabled"/>