From 105175144f52628f48f14d36cfbd49959608b0bf Mon Sep 17 00:00:00 2001 From: Nicolas MacBeth Date: Wed, 14 Aug 2024 19:31:32 +0000 Subject: [PATCH] [iOS cont. panel] Entrypoint in-product help dismissal reason histogram Added a histogram for the dismissal reason of the Contextual Panel entrypoint's in-product help (IPH). NO_IFTTT=newly added IFTTT Bug: b:357888892 Change-Id: Ia8ea8ecc36689ae17c25787ebac3f2634e2c53e9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5775271 Reviewed-by: Robbie Gibson Reviewed-by: Mark Cogan Commit-Queue: Nicolas MacBeth Reviewed-by: Sebastien Seguin-Gagnon Cr-Commit-Position: refs/heads/main@{#1341868} --- .../browser/browser_view/ui_bundled/BUILD.gn | 1 + .../ui_bundled/browser_coordinator.mm | 22 ++++++++++++++++++- .../utils/contextual_panel_metrics.h | 17 +++++++++++++- tools/metrics/histograms/enums.xml | 12 ++++++++++ .../histograms/metadata/ios/histograms.xml | 10 +++++++++ 5 files changed, 60 insertions(+), 2 deletions(-) diff --git a/ios/chrome/browser/browser_view/ui_bundled/BUILD.gn b/ios/chrome/browser/browser_view/ui_bundled/BUILD.gn index d60f96f35fe2c4..0da9bccd328d21 100644 --- a/ios/chrome/browser/browser_view/ui_bundled/BUILD.gn +++ b/ios/chrome/browser/browser_view/ui_bundled/BUILD.gn @@ -71,6 +71,7 @@ source_set("ui_bundled") { "//ios/chrome/browser/context_menu/ui_bundled:coordinator", "//ios/chrome/browser/contextual_panel/coordinator", "//ios/chrome/browser/contextual_panel/model", + "//ios/chrome/browser/contextual_panel/utils", "//ios/chrome/browser/crash_report/model", "//ios/chrome/browser/credential_provider_promo/ui_bundled:coordinator", "//ios/chrome/browser/default_browser/model:utils", diff --git a/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm b/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm index ae852adaf8aa90..9d16e0d5b8b850 100644 --- a/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm +++ b/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm @@ -57,6 +57,7 @@ #import "ios/chrome/browser/context_menu/ui_bundled/context_menu_configuration_provider.h" #import "ios/chrome/browser/contextual_panel/coordinator/contextual_sheet_coordinator.h" #import "ios/chrome/browser/contextual_panel/model/contextual_panel_tab_helper.h" +#import "ios/chrome/browser/contextual_panel/utils/contextual_panel_metrics.h" #import "ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator.h" #import "ios/chrome/browser/default_browser/model/utils.h" #import "ios/chrome/browser/default_promo/ui_bundled/default_browser_promo_non_modal_commands.h" @@ -1570,7 +1571,6 @@ - (void)startTabLifeCycleMediator { return webStateList ? webStateList->GetActiveWebState() : nullptr; } -// TODO(crbug.com/343734676): Add metrics per dismissal reason type. - (void)contextualPanelEntrypointIPHDidDismissWithConfig: (base::WeakPtr)config dismissalReason: @@ -1598,6 +1598,8 @@ - (void)contextualPanelEntrypointIPHDidDismissWithConfig: if (IPHDismissalReasonType == IPHDismissalReasonType::kTappedAnchorView || IPHDismissalReasonType == IPHDismissalReasonType::kTappedIPH) { [self openContextualSheet]; + [self recordContextualPanelEntrypointIPHDismissed: + ContextualPanelIPHDismissedReason::UserInteracted]; return; } @@ -1606,7 +1608,25 @@ - (void)contextualPanelEntrypointIPHDidDismissWithConfig: IPHDismissalReasonType == IPHDismissalReasonType::kTappedClose) { engagementTracker->NotifyEvent( config_ptr->iph_entrypoint_explicitly_dismissed); + [self recordContextualPanelEntrypointIPHDismissed: + ContextualPanelIPHDismissedReason::UserDismissed]; + return; + } + + if (IPHDismissalReasonType == IPHDismissalReasonType::kTimedOut) { + [self recordContextualPanelEntrypointIPHDismissed: + ContextualPanelIPHDismissedReason::TimedOut]; + return; } + + [self recordContextualPanelEntrypointIPHDismissed: + ContextualPanelIPHDismissedReason::Other]; +} + +- (void)recordContextualPanelEntrypointIPHDismissed: + (ContextualPanelIPHDismissedReason)dismissalReason { + base::UmaHistogramEnumeration("IOS.ContextualPanel.IPH.DismissedReason", + dismissalReason); } #pragma mark - ActivityServiceCommands diff --git a/ios/chrome/browser/contextual_panel/utils/contextual_panel_metrics.h b/ios/chrome/browser/contextual_panel/utils/contextual_panel_metrics.h index 9ffcd17b19c6e5..d085dd24aedd76 100644 --- a/ios/chrome/browser/contextual_panel/utils/contextual_panel_metrics.h +++ b/ios/chrome/browser/contextual_panel/utils/contextual_panel_metrics.h @@ -34,7 +34,7 @@ enum class PanelBlockImpressionType { // LINT.ThenChange(/tools/metrics/histograms/enums.xml:IOSContextualPanelInfoBlockImpression) // Values of the UMA IOS.ContextualPanel.DismissedReason histogram. Must be -// kept up to date with IOSContextualPanelInfoBlockImpression in enums.xml. +// kept up to date with IOSContextualPanelDismissedReason in enums.xml. // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. // LINT.IfChange(ContextualPanelDismissedReason) @@ -60,4 +60,19 @@ enum class EntrypointInteractionType { }; // LINT.ThenChange(/tools/metrics/histograms/enums.xml:IOSContextualPanelEntrypointInteractionType) +// Values of the UMA IOS.ContextualPanel.IPH.DismissedReason histogram (IPH here +// is an acronym for in-product help). Must be kept up to date with +// IOSContextualPanelIPHDismissedReason in enums.xml. These values are persisted +// to logs. Entries should not be renumbered and numeric values should never be +// reused. +// LINT.IfChange(ContextualPanelIPHDismissedReason) +enum class ContextualPanelIPHDismissedReason { + Other = 0, + UserDismissed = 1, + TimedOut = 2, + UserInteracted = 3, // The user clicked on the IPH or the entrypoint. + kMaxValue = UserInteracted, +}; +// LINT.ThenChange(/tools/metrics/histograms/enums.xml:IOSContextualPanelIPHDismissedReason) + #endif // IOS_CHROME_BROWSER_CONTEXTUAL_PANEL_UTILS_CONTEXTUAL_PANEL_METRICS_H_ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 735ae19b0b9f21..8535cd87660371 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml @@ -13231,6 +13231,18 @@ Called by update_permissions_policy_enum.py.--> + + + + + + + + + + + diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml index 67e2298d99fc65..797a69af00ce13 100644 --- a/tools/metrics/histograms/metadata/ios/histograms.xml +++ b/tools/metrics/histograms/metadata/ios/histograms.xml @@ -516,6 +516,16 @@ chromium-metrics-reviews@google.com. + + nicolasmacbeth@google.com + bling-mony-pod@google.com + + The reason the Contextual Panel's entrypoint in-product help (IPH) was + dismissed. + + + rkgibson@google.com