[FedCM] Record frequency of user closing the Verifying UI

The metrics can help us to understand how ofter users would close the
verify UI such that we know:
1. whether we should improve the UI to inform users on the outcome.
2. whether we should remove the close icon

Bug: 1320826
Change-Id: I5f71e8c0ca1a2ed072b6b937c157704ccc5a8b12
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3646171
Commit-Queue: Yi Gu <yigu@chromium.org>
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1003066}
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java
index be3316e..c2ec463 100644
--- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java
+++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java
@@ -10,6 +10,7 @@
 import androidx.annotation.Px;
 import androidx.annotation.VisibleForTesting;
 
+import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties;
 import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AutoSignInCancelButtonProperties;
 import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ContinueButtonProperties;
@@ -133,6 +134,9 @@
 
         Runnable closeOnClickRunnable = () -> {
             onDismissed(/*shouldEmbargo=*/true);
+
+            RecordHistogram.recordBooleanHistogram(
+                    "Blink.FedCm.CloseVerifySheet.Android", mHeaderType == HeaderType.VERIFY);
         };
 
         return new PropertyModel.Builder(HeaderProperties.ALL_KEYS)
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
index 664a406..cb4891a6 100644
--- a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
+++ b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
@@ -6,6 +6,7 @@
 
 #include "base/i18n/case_conversion.h"
 #include "base/memory/weak_ptr.h"
+#include "base/metrics/histogram_macros.h"
 #include "chrome/browser/accessibility/accessibility_state_utils.h"
 #include "chrome/browser/image_fetcher/image_decoder_impl.h"
 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
@@ -205,6 +206,8 @@
 void AccountSelectionBubbleView::CloseBubble() {
   if (!GetWidget())
     return;
+  UMA_HISTOGRAM_BOOLEAN("Blink.FedCm.CloseVerifySheet.Desktop",
+                        verify_sheet_shown_);
   GetWidget()->CloseWithReason(
       views::Widget::ClosedReason::kCloseButtonClicked);
 }
@@ -469,6 +472,7 @@
 
 void AccountSelectionBubbleView::ShowVerifySheet(
     const content::IdentityRequestAccount& account) {
+  verify_sheet_shown_ = true;
   RemoveNonHeaderChildViews();
   title_label_->SetText(l10n_util::GetStringUTF16(IDS_VERIFY_SHEET_TITLE));
   views::ProgressBar* progress_bar =
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view.h b/chrome/browser/ui/views/webid/account_selection_bubble_view.h
index 96ea1571..932eeb29 100644
--- a/chrome/browser/ui/views/webid/account_selection_bubble_view.h
+++ b/chrome/browser/ui/views/webid/account_selection_bubble_view.h
@@ -132,6 +132,9 @@
   // View containing the continue button.
   views::View* continue_button_{nullptr};
 
+  // Used to differentiate UI dismissal scenarios.
+  bool verify_sheet_shown_{false};
+
   // Used to ensure that callbacks are not run if the AccountSelectionBubbleView
   // is destroyed.
   base::WeakPtrFactory<AccountSelectionBubbleView> weak_ptr_factory_{this};
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml
index e17bf61..b4eb63b 100644
--- a/tools/metrics/histograms/metadata/blink/histograms.xml
+++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -800,6 +800,26 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.FedCm.CloseVerifySheet.Android" enum="Boolean"
+    expires_after="M110">
+  <owner>yigu@chromium.org</owner>
+  <owner>fedcm-core@google.com</owner>
+  <summary>
+    Records whether the UI that a user is closing is the verify sheet or not on
+    Android. Records at most one sample per API call.
+  </summary>
+</histogram>
+
+<histogram name="Blink.FedCm.CloseVerifySheet.Desktop" enum="Boolean"
+    expires_after="M110">
+  <owner>yigu@chromium.org</owner>
+  <owner>fedcm-core@google.com</owner>
+  <summary>
+    Records whether the UI that a user is closing is the verify sheet or not on
+    desktop. Records at most one sample per API call.
+  </summary>
+</histogram>
+
 <histogram name="Blink.FedCm.IsSignInUser" enum="Boolean" expires_after="M110">
   <owner>yigu@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>