Commit fa7ab722 authored by Eugene But's avatar Eugene But Committed by Commit Bot

[ios] Record User Actions for Web Contents Context Menu

Used by Breadcrumbs feature that attaches steps to reproduce to
crashlogs. These actions duplicate some histograms, but Breadcrumbs
can't observe histogram logs.

Bug: 1046223
Change-Id: I2043a9cceee6639f4404906e8ea11f7e26648695
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2090978
Auto-Submit: Eugene But <eugenebut@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Commit-Queue: Eugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747925}
parent 289aed47
......@@ -3072,10 +3072,14 @@ NSString* const kBrowserViewControllerSnackbarCategory =
CGPoint originPoint = [params.view convertPoint:params.location toView:nil];
if (isLink) {
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuLinkImpression"));
if (link.SchemeIs(url::kJavaScriptScheme)) {
// Open
title = l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_OPEN);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuOpenJS"));
Record(ACTION_OPEN_JAVASCRIPT, isImage, isLink);
[weakSelf openJavascript:base::SysUTF8ToNSString(link.GetContent())];
};
......@@ -3089,6 +3093,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
title = l10n_util::GetNSStringWithFixup(
IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWTAB);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuOpenInNewTab"));
Record(ACTION_OPEN_IN_NEW_TAB, isImage, isLink);
// The "New Tab" item in the context menu opens a new tab in the current
// browser state. |isOffTheRecord| indicates whether or not the current
......@@ -3112,6 +3118,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
title = l10n_util::GetNSStringWithFixup(
IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWINCOGNITOTAB);
action = ^{
base::RecordAction(base::UserMetricsAction(
"MobileWebContextMenuOpenInIncognitoTab"));
BrowserViewController* strongSelf = weakSelf;
if (!strongSelf)
return;
......@@ -3135,6 +3143,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
title = l10n_util::GetNSStringWithFixup(
IDS_IOS_CONTENT_CONTEXT_ADDTOREADINGLIST);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuReadLater"));
Record(ACTION_READ_LATER, isImage, isLink);
[weakSelf addToReadingListURL:link title:innerText];
};
......@@ -3144,16 +3154,22 @@ NSString* const kBrowserViewControllerSnackbarCategory =
// Copy Link.
title = l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_COPY);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuCopyLink"));
Record(ACTION_COPY_LINK_ADDRESS, isImage, isLink);
StoreURLInPasteboard(link);
};
[_contextMenuCoordinator addItemWithTitle:title action:action];
}
if (isImage) {
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuImageImpression"));
web::Referrer referrer(lastCommittedURL, params.referrer_policy);
// Save Image.
title = l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_SAVEIMAGE);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuSaveImage"));
Record(ACTION_SAVE_IMAGE, isImage, isLink);
[weakSelf.imageSaver saveImageAtURL:imageUrl
referrer:referrer
......@@ -3163,6 +3179,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
// Copy Image.
title = l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_COPYIMAGE);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuCopyImage"));
Record(ACTION_COPY_IMAGE, isImage, isLink);
DCHECK(imageUrl.is_valid());
[weakSelf.imageCopier copyImageAtURL:imageUrl
......@@ -3173,6 +3191,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
// Open Image.
title = l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_OPENIMAGE);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuOpenImage"));
BrowserViewController* strongSelf = weakSelf;
if (!strongSelf)
return;
......@@ -3186,6 +3206,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
title = l10n_util::GetNSStringWithFixup(
IDS_IOS_CONTENT_CONTEXT_OPENIMAGENEWTAB);
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuOpenImageInNewTab"));
Record(ACTION_OPEN_IMAGE_IN_NEW_TAB, isImage, isLink);
BrowserViewController* strongSelf = weakSelf;
if (!strongSelf)
......@@ -3209,6 +3231,8 @@ NSString* const kBrowserViewControllerSnackbarCategory =
title = l10n_util::GetNSStringF(IDS_IOS_CONTEXT_MENU_SEARCHWEBFORIMAGE,
defaultURL->short_name());
action = ^{
base::RecordAction(
base::UserMetricsAction("MobileWebContextMenuSearchByImage"));
Record(ACTION_SEARCH_BY_IMAGE, isImage, isLink);
ImageFetchTabHelper* image_fetcher =
ImageFetchTabHelper::FromWebState(self.currentWebState);
......
......@@ -14172,6 +14172,102 @@ should be able to be added at any place in this file.
</description>
</action>
<action name="MobileWebContextMenuCopyImage">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Copy Image in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuCopyLink">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Copy Link in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuImageImpression">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user invokes context menu for web contents image. iOS only.
</description>
</action>
<action name="MobileWebContextMenuLinkImpression">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user invokes context menu for web contents link. iOS only.
</description>
</action>
<action name="MobileWebContextMenuOpenImage">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Open Image in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuOpenImageInNewTab">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Open Image In New Tab in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuOpenInIncognitoTab">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Open In Incognito Tab in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuOpenInNewTab">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Open In New Tab in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuOpenJS">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Open Java Script in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuReadLater">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Read Later in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuSaveImage">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Save Image in context menu. iOS only.
</description>
</action>
<action name="MobileWebContextMenuSearchByImage">
<owner>eugenebut@chromium.org</owner>
<owner>michaeldo@chromium.org</owner>
<description>
Recorded when user taps Search By Image in context menu. iOS only.
</description>
</action>
<action name="MobileWebsiteSettingsOpenedFromMenu">
<owner>tedchoc@chromium.org</owner>
<description>Page Info opened via the menu.</description>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment