[ntp][modules] Add NewTabPage.ShoppingTasks.[Product|RelatedSearch]Click
These histograms let us analyze usage of the shopping task module in
more granularity than what NewTabPage.Modules.Usage.shopping_tasks
allows.
(cherry picked from commit 41b76929242c1370b20f9733a60673755225875c)
Bug: 1133904
Change-Id: Id7470f6b2f0cbb7553dba406e57d5f62afd788c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2443392
Reviewed-by: Emily Stark <[email protected]>
Reviewed-by: Mark Pearson <[email protected]>
Reviewed-by: Moe Ahmadi <[email protected]>
Commit-Queue: Tibor Goldschwendt <[email protected]>
Auto-Submit: Tibor Goldschwendt <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#814394}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2459253
Reviewed-by: Tibor Goldschwendt <[email protected]>
Cr-Commit-Position: refs/branch-heads/4280@{#168}
Cr-Branched-From: ea420fb963f9658c9969b6513c56b8f47efa1a2a-refs/heads/master@{#812852}
diff --git a/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.html b/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.html
index 97ca0da2..39538f0f 100644
--- a/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.html
+++ b/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.html
@@ -134,8 +134,8 @@
<div id="products">
<template is="dom-repeat" id="productsRepeat"
items="[[shoppingTask.products]]" on-dom-change="onDomChange_">
- <a class="product" href="[[item.targetUrl.url]]" on-click="onClick_"
- on-auxclick="onClick_">
+ <a class="product" href="[[item.targetUrl.url]]" on-click="onProductClick_"
+ on-auxclick="onProductClick_">
<div class="image">
<img is="ntp-img" auto-src="[[item.imageUrl.url]]"></img>
</div>
@@ -148,8 +148,8 @@
<div id="relatedSearches">
<template is="dom-repeat" id="relatedSearchesRepeat"
items="[[shoppingTask.relatedSearches]]" on-dom-change="onDomChange_">
- <a class="pill" href="[[item.targetUrl.url]]" on-click="onClick_"
- on-auxclick="onClick_">
+ <a class="pill" href="[[item.targetUrl.url]]" on-click="onPillClick_"
+ on-auxclick="onPillClick_">
<div class="loupe"></div>
<div class="search-text">[[item.text]]</div>
</a>
diff --git a/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.js b/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.js
index 6c9a5c5..2e555a5d 100644
--- a/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.js
+++ b/chrome/browser/resources/new_tab_page/modules/shopping_tasks/module.js
@@ -41,8 +41,24 @@
this.intersectionObserver_ = null;
}
- /** @private */
- onClick_() {
+ /**
+ * @param {!Event} e
+ * @private
+ */
+ onProductClick_(e) {
+ const index = this.$.productsRepeat.indexForElement(e.target);
+ ShoppingTasksHandlerProxy.getInstance().handler.onProductClicked(index);
+ this.dispatchEvent(new Event('usage', {bubbles: true, composed: true}));
+ }
+
+ /**
+ * @param {!Event} e
+ * @private
+ */
+ onPillClick_(e) {
+ const index = this.$.relatedSearchesRepeat.indexForElement(e.target);
+ ShoppingTasksHandlerProxy.getInstance().handler.onRelatedSearchClicked(
+ index);
this.dispatchEvent(new Event('usage', {bubbles: true, composed: true}));
}
diff --git a/chrome/browser/search/shopping_tasks/shopping_tasks.mojom b/chrome/browser/search/shopping_tasks/shopping_tasks.mojom
index b3e635b..fb708bc 100644
--- a/chrome/browser/search/shopping_tasks/shopping_tasks.mojom
+++ b/chrome/browser/search/shopping_tasks/shopping_tasks.mojom
@@ -49,4 +49,8 @@
DismissShoppingTask(string task_name);
// Restores the task with the given name and remembers that setting.
RestoreShoppingTask(string task_name);
+ // Logs that the product at position |index| has been clicked.
+ OnProductClicked(uint32 index);
+ // Logs that the related search pill at position |index| has been clicked.
+ OnRelatedSearchClicked(uint32 index);
};
diff --git a/chrome/browser/search/shopping_tasks/shopping_tasks_handler.cc b/chrome/browser/search/shopping_tasks/shopping_tasks_handler.cc
index ebac0f99..bcb18ce 100644
--- a/chrome/browser/search/shopping_tasks/shopping_tasks_handler.cc
+++ b/chrome/browser/search/shopping_tasks/shopping_tasks_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/search/shopping_tasks/shopping_tasks_handler.h"
+#include "base/metrics/histogram_functions.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search/shopping_tasks/shopping_tasks_service.h"
#include "chrome/browser/search/shopping_tasks/shopping_tasks_service_factory.h"
@@ -31,3 +32,12 @@
ShoppingTasksServiceFactory::GetForProfile(profile_)->RestoreShoppingTask(
task_name);
}
+
+void ShoppingTasksHandler::OnProductClicked(uint32_t index) {
+ base::UmaHistogramCounts100("NewTabPage.ShoppingTasks.ProductClick", index);
+}
+
+void ShoppingTasksHandler::OnRelatedSearchClicked(uint32_t index) {
+ base::UmaHistogramCounts100("NewTabPage.ShoppingTasks.RelatedSearchClick",
+ index);
+}
diff --git a/chrome/browser/search/shopping_tasks/shopping_tasks_handler.h b/chrome/browser/search/shopping_tasks/shopping_tasks_handler.h
index 2e04d8a..843bf7ec 100644
--- a/chrome/browser/search/shopping_tasks/shopping_tasks_handler.h
+++ b/chrome/browser/search/shopping_tasks/shopping_tasks_handler.h
@@ -27,6 +27,8 @@
void GetPrimaryShoppingTask(GetPrimaryShoppingTaskCallback callback) override;
void DismissShoppingTask(const std::string& task_name) override;
void RestoreShoppingTask(const std::string& task_name) override;
+ void OnProductClicked(uint32_t index) override;
+ void OnRelatedSearchClicked(uint32_t index) override;
private:
mojo::Receiver<shopping_tasks::mojom::ShoppingTasksHandler> receiver_;
diff --git a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
index f0eb38a..cd466fe 100644
--- a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
@@ -1135,6 +1135,28 @@
</summary>
</histogram>
+<histogram name="NewTabPage.ShoppingTasks.ProductClick" units="index"
+ expires_after="2021-01-01">
+ <owner>[email protected]</owner>
+ <owner>[email protected]</owner>
+ <owner>[email protected]</owner>
+ <summary>
+ Logged when a user clicked on a product in the shopping tasks module. The
+ value is equal to the index of the product.
+ </summary>
+</histogram>
+
+<histogram name="NewTabPage.ShoppingTasks.RelatedSearchClick" units="index"
+ expires_after="2021-01-01">
+ <owner>[email protected]</owner>
+ <owner>[email protected]</owner>
+ <owner>[email protected]</owner>
+ <summary>
+ Logged when a user clicked on a related search pill in the shopping tasks
+ module. The value is equal to the index of the pill.
+ </summary>
+</histogram>
+
<histogram name="NewTabPage.Snippets.DatabaseLoadTime" units="ms"
expires_after="M85">
<owner>[email protected]</owner>