Skip to content

Commit

Permalink
[ios] Add Omnibox navigation type to IOS.NTP/Start.Click
Browse files Browse the repository at this point in the history
As a part of measuring user actions from the Start/NTP surface,
navigations from the omnibox while the NTP/Start surface is being
shown are logged in IOS.NTP/Start.Click in this change.

(cherry picked from commit aed30c3)

Bug: 1432252
Change-Id: I4b5d4fdc4751da672eca8a942f267b5c3422e4c4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4563496
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Reviewed-by: Stepan Khapugin <stkhapugin@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1149176}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4571133
Auto-Submit: Chris Lu <thegreenfrog@chromium.org>
Cr-Commit-Position: refs/branch-heads/5790@{#226}
Cr-Branched-From: 1d71a33-refs/heads/main@{#1148114}
  • Loading branch information
Chris Lu authored and Chromium LUCI CQ committed Jun 1, 2023
1 parent 89f1704 commit 9abb99f
Show file tree
Hide file tree
Showing 14 changed files with 82 additions and 42 deletions.
2 changes: 2 additions & 0 deletions ios/chrome/browser/ui/ntp/metrics/BUILD.gn
Expand Up @@ -14,6 +14,8 @@ source_set("metrics") {
"feed_session_recorder+testing.h",
"feed_session_recorder.h",
"feed_session_recorder.mm",
"home_metrics.h",
"home_metrics.mm",
"new_tab_page_metrics_constants.h",
"new_tab_page_metrics_constants.mm",
"new_tab_page_metrics_recorder.h",
Expand Down
24 changes: 24 additions & 0 deletions ios/chrome/browser/ui/ntp/metrics/home_metrics.h
@@ -0,0 +1,24 @@
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_UI_NTP_METRICS_HOME_METRICS_H_
#define IOS_CHROME_BROWSER_UI_NTP_METRICS_HOME_METRICS_H_

// These values are persisted to IOS.Start/NTP.Click histograms.
// Entries should not be renumbered and numeric values should never be reused.
enum class IOSHomeActionType {
kMostVisitedTile = 0,
kShortcuts = 1,
kReturnToRecentTab = 2,
kFeedCard = 3,
kFakebox = 4,
kSetUpList = 5,
kOmnibox = 6,
kMaxValue = kOmnibox,
};

// Logs a Home action and attributes it to the NTP or Start surface.
void RecordHomeAction(IOSHomeActionType type, bool isStartSurface);

#endif // IOS_CHROME_BROWSER_UI_NTP_METRICS_HOME_METRICS_H_
21 changes: 21 additions & 0 deletions ios/chrome/browser/ui/ntp/metrics/home_metrics.mm
@@ -0,0 +1,21 @@
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/browser/ui/ntp/metrics/home_metrics.h"

#import "base/metrics/histogram_functions.h"
#import "base/metrics/histogram_macros.h"
#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_constants.h"

#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif

void RecordHomeAction(IOSHomeActionType type, bool isStartSurface) {
if (isStartSurface) {
UMA_HISTOGRAM_ENUMERATION(kActionOnStartHistogram, type);
} else {
UMA_HISTOGRAM_ENUMERATION(kActionOnNTPHistogram, type);
}
}
16 changes: 0 additions & 16 deletions ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h
Expand Up @@ -29,18 +29,6 @@ enum class OverscrollActionType {
kMaxValue = kCloseTab,
};

// These values are persisted to IOS.Start/NTP.Click histograms.
// Entries should not be renumbered and numeric values should never be reused.
enum class IOSHomeActionType {
kMostVisitedTile = 0,
kShortcuts = 1,
kReturnToRecentTab = 2,
kFeedCard = 3,
kFakebox = 4,
kSetUpList = 5,
kMaxValue = kSetUpList,
};

// Metrics recorder for the new tab page.
@interface NewTabPageMetricsRecorder : NSObject

Expand Down Expand Up @@ -74,10 +62,6 @@ enum class IOSHomeActionType {
// Logs a metric for the identity disc being tapped in the NTP.
- (void)recordIdentityDiscTapped;

// Logs a Home action and attributes it to the NTP or Start surface.
- (void)recordHomeActionType:(IOSHomeActionType)type
onStartSurface:(BOOL)isStartSurface;

@end

#endif // IOS_CHROME_BROWSER_UI_NTP_METRICS_NEW_TAB_PAGE_METRICS_RECORDER_H_
Expand Up @@ -67,15 +67,6 @@ - (void)recordIdentityDiscTapped {
base::RecordAction(base::UserMetricsAction(kNTPIdentityDiscTappedAction));
}

- (void)recordHomeActionType:(IOSHomeActionType)type
onStartSurface:(BOOL)isStartSurface {
if (isStartSurface) {
UMA_HISTOGRAM_ENUMERATION(kActionOnStartHistogram, type);
} else {
UMA_HISTOGRAM_ENUMERATION(kActionOnNTPHistogram, type);
}
}

#pragma mark - Private

// Records an NTP impression for the tile ablation retention feature.
Expand Down
22 changes: 8 additions & 14 deletions ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm
Expand Up @@ -83,6 +83,7 @@
#import "ios/chrome/browser/ui/ntp/incognito/incognito_view_controller.h"
#import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_constants.h"
#import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_recorder.h"
#import "ios/chrome/browser/ui/ntp/metrics/home_metrics.h"
#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_component_factory_protocol.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_content_delegate.h"
Expand Down Expand Up @@ -796,8 +797,7 @@ - (void)updateForHeaderSizeChange {
}

- (void)fakeboxTapped {
[self.NTPMetricsRecorder recordHomeActionType:IOSHomeActionType::kFakebox
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kFakebox, [self isStartSurface]);
[self focusFakebox];
}

Expand Down Expand Up @@ -1221,30 +1221,24 @@ - (BOOL)doesFollowingFeedHaveContent {
#pragma mark - NewTabPageMetricsDelegate

- (void)recentTabTileOpened {
[self.NTPMetricsRecorder
recordHomeActionType:IOSHomeActionType::kReturnToRecentTab
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kReturnToRecentTab,
[self isStartSurface]);
}

- (void)feedArticleOpened {
[self.NTPMetricsRecorder recordHomeActionType:IOSHomeActionType::kFeedCard
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kFeedCard, [self isStartSurface]);
}

- (void)mostVisitedTileOpened {
[self.NTPMetricsRecorder
recordHomeActionType:IOSHomeActionType::kMostVisitedTile
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kMostVisitedTile, [self isStartSurface]);
}

- (void)shortcutTileOpened {
[self.NTPMetricsRecorder recordHomeActionType:IOSHomeActionType::kShortcuts
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kShortcuts, [self isStartSurface]);
}

- (void)setUpListItemOpened {
[self.NTPMetricsRecorder recordHomeActionType:IOSHomeActionType::kSetUpList
onStartSurface:[self isStartSurface]];
RecordHomeAction(IOSHomeActionType::kSetUpList, [self isStartSurface]);
}

#pragma mark - LogoAnimationControllerOwnerOwner
Expand Down
Expand Up @@ -28,6 +28,7 @@
#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h"
#import "ios/chrome/browser/ui/ntp/feed_wrapper_view_controller.h"
#import "ios/chrome/browser/ui/ntp/incognito/incognito_view_controller.h"
#import "ios/chrome/browser/ui/ntp/metrics/home_metrics.h"
#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_constants.h"
#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_component_factory.h"
Expand Down
2 changes: 2 additions & 0 deletions ios/chrome/browser/ui/omnibox/BUILD.gn
Expand Up @@ -144,6 +144,7 @@ source_set("omnibox_internal") {
"//ios/chrome/browser/flags:system_flags",
"//ios/chrome/browser/https_upgrades",
"//ios/chrome/browser/net",
"//ios/chrome/browser/ntp",
"//ios/chrome/browser/prerender",
"//ios/chrome/browser/search_engines",
"//ios/chrome/browser/search_engines:search_engines_util",
Expand All @@ -167,6 +168,7 @@ source_set("omnibox_internal") {
"//ios/chrome/browser/ui/lens:lens_entrypoint",
"//ios/chrome/browser/ui/location_bar:constants",
"//ios/chrome/browser/ui/main:default_browser_scene_agent",
"//ios/chrome/browser/ui/ntp/metrics",
"//ios/chrome/browser/ui/omnibox/popup",
"//ios/chrome/browser/ui/omnibox/popup:popup_ui_protocols",
"//ios/chrome/browser/ui/orchestrator:orchestrator",
Expand Down
2 changes: 1 addition & 1 deletion ios/chrome/browser/ui/omnibox/DEPS
Expand Up @@ -4,6 +4,6 @@ include_rules = [
"+ios/chrome/browser/ui/gestures",
"+ios/chrome/browser/ui/lens/lens_entrypoint.h",
"+ios/chrome/browser/ui/orchestrator",
"+ios/chrome/browser/ui/ntp/new_tab_page_util.h",
"+ios/chrome/browser/ui/ntp/metrics/home_metrics.h",
"+ios/chrome/browser/ui/toolbar/public",
]
8 changes: 8 additions & 0 deletions ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm
Expand Up @@ -24,11 +24,13 @@
#import "components/open_from_clipboard/clipboard_recent_content.h"
#import "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h"
#import "ios/chrome/browser/feature_engagement/tracker_factory.h"
#import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
#import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/shared/public/commands/omnibox_commands.h"
#import "ios/chrome/browser/shared/public/features/features.h"
#import "ios/chrome/browser/shared/ui/util/pasteboard_util.h"
#import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
#import "ios/chrome/browser/ui/ntp/metrics/home_metrics.h"
#import "ios/chrome/browser/ui/omnibox/chrome_omnibox_client_ios.h"
#import "ios/chrome/browser/ui/omnibox/omnibox_metrics_helper.h"
#import "ios/chrome/browser/ui/omnibox/omnibox_ui_features.h"
Expand Down Expand Up @@ -517,6 +519,12 @@ OmniboxPopupSelection selection(

void OmniboxViewIOS::OnAccept() {
base::RecordAction(UserMetricsAction("MobileOmniboxUse"));
NewTabPageTabHelper* NTPTabHelper =
NewTabPageTabHelper::FromWebState(edit_model_delegate_->GetWebState());
if (NTPTabHelper->IsActive()) {
RecordHomeAction(IOSHomeActionType::kOmnibox,
NTPTabHelper->ShouldShowStartSurface());
}

if (model()) {
model()->OpenSelection();
Expand Down
3 changes: 3 additions & 0 deletions ios/chrome/browser/ui/omnibox/popup/BUILD.gn
Expand Up @@ -76,6 +76,7 @@ source_set("popup") {
"//ios/chrome/browser/flags:system_flags",
"//ios/chrome/browser/history",
"//ios/chrome/browser/net:crurl",
"//ios/chrome/browser/ntp",
"//ios/chrome/browser/ntp:util",
"//ios/chrome/browser/policy:policy_util",
"//ios/chrome/browser/search_engines",
Expand All @@ -97,6 +98,8 @@ source_set("popup") {
"//ios/chrome/browser/ui/favicon",
"//ios/chrome/browser/ui/main:default_browser_scene_agent",
"//ios/chrome/browser/ui/menu",
"//ios/chrome/browser/ui/ntp/metrics",
"//ios/chrome/browser/ui/omnibox",
"//ios/chrome/browser/ui/omnibox:features",
"//ios/chrome/browser/ui/omnibox:omnibox_util",
"//ios/chrome/browser/ui/sharing",
Expand Down
Expand Up @@ -20,7 +20,6 @@
#import "ios/chrome/browser/flags/system_flags.h"
#import "ios/chrome/browser/history/top_sites_factory.h"
#import "ios/chrome/browser/net/crurl.h"
#import "ios/chrome/browser/ntp/new_tab_page_util.h"
#import "ios/chrome/browser/policy/policy_util.h"
#import "ios/chrome/browser/search_engines/template_url_service_factory.h"
#import "ios/chrome/browser/shared/coordinator/default_browser_promo/non_modal_default_browser_promo_scheduler_scene_agent.h"
Expand Down
10 changes: 10 additions & 0 deletions ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_ios.mm
Expand Up @@ -20,11 +20,14 @@
#import "components/open_from_clipboard/clipboard_recent_content.h"
#import "ios/chrome/browser/default_browser/utils.h"
#import "ios/chrome/browser/flags/system_flags.h"
#import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
#import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
#import "ios/chrome/browser/ui/ntp/metrics/home_metrics.h"
#import "ios/chrome/browser/ui/omnibox/omnibox_util.h"
#import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_mediator.h"
#import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_suggestions_delegate.h"
#import "ios/chrome/browser/ui/omnibox/web_omnibox_edit_model_delegate.h"
#import "ios/chrome/grit/ios_theme_resources.h"
#import "ios/web/public/thread/web_thread.h"
#import "net/url_request/url_request_context_getter.h"
Expand Down Expand Up @@ -93,6 +96,13 @@
size_t row,
WindowOpenDisposition disposition) {
base::RecordAction(UserMetricsAction("MobileOmniboxUse"));
NewTabPageTabHelper* NTPTabHelper = NewTabPageTabHelper::FromWebState(
static_cast<WebOmniboxEditModelDelegate*>(edit_model_->delegate())
->GetWebState());
if (NTPTabHelper->IsActive()) {
RecordHomeAction(IOSHomeActionType::kOmnibox,
NTPTabHelper->ShouldShowStartSurface());
}

// OpenMatch() may close the popup, which will clear the result set and, by
// extension, `match` and its contents. So copy the relevant match out to
Expand Down
3 changes: 2 additions & 1 deletion tools/metrics/histograms/enums.xml
Expand Up @@ -54251,8 +54251,9 @@ Unsupported non-ascii characters will cause issues with xml presubmits.
<int value="1" label="Shortcuts"/>
<int value="2" label="Return to Recent Tab tile"/>
<int value="3" label="Feed Card"/>
<int value="4" label="Fake Omnibox"/>
<int value="4" label="Fake Omnibox tap"/>
<int value="5" label="Set Up List"/>
<int value="6" label="Omnibox navigation"/>
</enum>

<enum name="IOSInspectConsoleAction">
Expand Down

0 comments on commit 9abb99f

Please sign in to comment.