Add flag for testing quick app access ui

Bug=b:266734005

Low-Coverage-Reason: Code is behind a test flag, will never be enabled.
Change-Id: Ib4be9e7b2c221db257ccc6e26a5cf1a35739e6c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4472027
Reviewed-by: Toni Barzic <[email protected]>
Code-Coverage: Findit <[email protected]>
Commit-Queue: Matthew Mourgos <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1136162}
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc
index 9005c39..be36815 100644
--- a/ash/app_list/app_list_controller_impl.cc
+++ b/ash/app_list/app_list_controller_impl.cc
@@ -100,6 +100,9 @@
 constexpr base::TimeDelta kOverviewFadeAnimationDuration =
     base::Milliseconds(350);
 
+// The app id for the settings app used for testing quick app access.
+constexpr char kOsSettingsAppId[] = "odknhmnlageboeamepcngndbggdpaobj";
+
 // Update layer animation settings for launcher scale and opacity animation that
 // runs on overview mode change.
 void UpdateOverviewSettings(base::TimeDelta duration,
@@ -439,6 +442,10 @@
     return;
   }
 
+  if (base::FeatureList::IsEnabled(features::kQuickAppAccessTestUI)) {
+    SetHomeButtonQuickApp(kOsSettingsAppId);
+  }
+
   if (in_clamshell)
     return;
 
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc
index 8fa0444..a55bfc5 100644
--- a/ash/constants/ash_features.cc
+++ b/ash/constants/ash_features.cc
@@ -1850,6 +1850,10 @@
 // Controls whether the smart reader feature is enabled.
 BASE_FEATURE(kSmartReader, "SmartReader", base::FEATURE_DISABLED_BY_DEFAULT);
 
+BASE_FEATURE(kQuickAppAccessTestUI,
+             "QuickAppAccessTestUI",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Enables or disables fingerprint quick unlock.
 BASE_FEATURE(kQuickUnlockFingerprint,
              "QuickUnlockFingerprint",
@@ -2821,7 +2825,8 @@
 }
 
 bool IsHomeButtonQuickAppAccessEnabled() {
-  return base::FeatureList::IsEnabled(kHomeButtonQuickAppAccess);
+  return base::FeatureList::IsEnabled(kHomeButtonQuickAppAccess) ||
+         base::FeatureList::IsEnabled(kQuickAppAccessTestUI);
 }
 
 bool IsHomeButtonWithTextEnabled() {
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h
index 52e25732..c871b3a1 100644
--- a/ash/constants/ash_features.h
+++ b/ash/constants/ash_features.h
@@ -532,6 +532,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kQsRevamp);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kQuickDim);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSmartReader);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kQuickAppAccessTestUI);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kQuickUnlockFingerprint);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kQuickUnlockPinAutosubmit);
 // TODO(crbug.com/1104164) - Remove this once most users have their preferences
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index bbf0a2b..6554fa5 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -7981,6 +7981,10 @@
      flag_descriptions::kLauncherLocalImageSearchName,
      flag_descriptions::kLauncherLocalImageSearchDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(search_features::kLauncherImageSearch)},
+    {"quick-app-access-test-ui", flag_descriptions::kQuickAppAccessTestUIName,
+     flag_descriptions::kQuickAppAccessTestUIDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kQuickAppAccessTestUI)},
+
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 38e39c8..defee42 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -6423,6 +6423,11 @@
     "expiry_milestone": 120
   },
   {
+    "name": "quick-app-access-test-ui",
+    "owners": [ "mmourgos", "//ash/app_list/OWNERS" ],
+    "expiry_milestone": 120
+  },
+  {
     "name": "quick-commands",
     "owners": [ "lgrey" ],
     "expiry_milestone": 120
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 26a8ad6..3f0130a1 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2802,6 +2802,11 @@
 const char kQuicName[] = "Experimental QUIC protocol";
 const char kQuicDescription[] = "Enable experimental QUIC protocol support.";
 
+extern const char kQuickAppAccessTestUIName[] =
+    "Internal test: quick app access";
+extern const char kQuickAppAccessTestUIDescription[] =
+    "Show an app in the quick app access area at the start of the session";
+
 const char kQuickIntensiveWakeUpThrottlingAfterLoadingName[] =
     "Quick intensive throttling after loading";
 const char kQuickIntensiveWakeUpThrottlingAfterLoadingDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 6ad6171..b43aa551 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1577,6 +1577,9 @@
 extern const char kQuicName[];
 extern const char kQuicDescription[];
 
+extern const char kQuickAppAccessTestUIName[];
+extern const char kQuickAppAccessTestUIDescription[];
+
 extern const char kQuickDimName[];
 extern const char kQuickDimDescription[];
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 25f156ae..fb7dbc3 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -60659,6 +60659,7 @@
   <int value="-848691867" label="DesktopPWAWindowing:enabled"/>
   <int value="-847735582" label="NotificationsViaHelperApp:enabled"/>
   <int value="-847216521" label="ChromeDuplex:enabled"/>
+  <int value="-846670837" label="QuickAppAccessTestUI:enabled"/>
   <int value="-844786349" label="ClipboardHistoryNudgeSessionReset:enabled"/>
   <int value="-844537521" label="HttpFormWarning:disabled"/>
   <int value="-844381918" label="ArcNativeBridgeExperiment:disabled"/>
@@ -65006,6 +65007,7 @@
   <int value="1519067750" label="ActionableContentSettings:disabled"/>
   <int value="1520181151" label="PrintServerScaling:disabled"/>
   <int value="1520754417" label="ConfirmationChip:enabled"/>
+  <int value="1524016321" label="QuickAppAccessTestUI:disabled"/>
   <int value="1524178643" label="AppServiceExternalProtocol:enabled"/>
   <int value="1524631783" label="CrOSLateBootCrasSplitAlsaUSBInternal:enabled"/>
   <int value="1526489044" label="NtpRealboxMatchSearchboxTheme:disabled"/>