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