Commit da19aa2d authored by Min Qin's avatar Min Qin Committed by Chromium LUCI CQ

Add metrics for trending tiles

BUG=1159109

Change-Id: Iba334d54feb3574a5c81d18c3f1d042d2c7803de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593742
Commit-Queue: Min Qin <qinmin@chromium.org>
Reviewed-by: default avatarCaitlin Fischer <caitlinfischer@google.com>
Cr-Commit-Position: refs/heads/master@{#837788}
parent 12e7eb0b
......@@ -29,6 +29,9 @@ const char kFetcherStartHourHistogram[] = "Search.QueryTiles.Fetcher.Start";
const char kPrunedGroupReasonHistogram[] =
"Search.QueryTiles.Group.PruneReason";
const char kTrendingTileEventHistogram[] =
"Search.QueryTiles.TrendingTileEvent";
void RecordImageLoading(ImagePreloadingEvent event) {
base::UmaHistogramEnumeration(kImagePreloadingHistogram, event);
}
......@@ -61,5 +64,9 @@ void RecordGroupPruned(PrunedGroupReason reason) {
base::UmaHistogramEnumeration(kPrunedGroupReasonHistogram, reason);
}
void RecordTrendingTileEvent(TrendingTileEvent event) {
base::UmaHistogramEnumeration(kTrendingTileEventHistogram, event);
}
} // namespace stats
} // namespace query_tiles
......@@ -26,6 +26,8 @@ extern const char kFetcherStartHourHistogram[];
extern const char kPrunedGroupReasonHistogram[];
extern const char kTrendingTileEventHistogram[];
// Event to track image loading metrics.
enum class ImagePreloadingEvent {
// Start to fetch image in full browser mode.
......@@ -51,6 +53,19 @@ enum class PrunedGroupReason {
kMaxValue = kInvalidLocale,
};
// Event to track trending tile metrics.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class TrendingTileEvent {
// A trending tile is shown.
kShown = 0,
// A trending tile is removed.
kRemoved = 1,
// A trending tile is clicked.
kClicked = 2,
kMaxValue = kClicked,
};
// Records an image preloading event.
void RecordImageLoading(ImagePreloadingEvent event);
......@@ -76,6 +91,9 @@ void RecordExplodeOnFetchStarted(int explode);
// Records the reason to cause TileManager to prune the group.
void RecordGroupPruned(PrunedGroupReason reason);
// Records the event for trending tile.
void RecordTrendingTileEvent(TrendingTileEvent event);
} // namespace stats
} // namespace query_tiles
......
......@@ -60,5 +60,14 @@ TEST(QueryTilesStatsTest, RecordGroupPruned) {
tester.ExpectBucketCount(stats::kPrunedGroupReasonHistogram, 1, 1);
}
TEST(QueryTilesStatsTest, RecordTrendingTileEvent) {
base::HistogramTester tester;
stats::RecordTrendingTileEvent(stats::TrendingTileEvent::kRemoved);
stats::RecordTrendingTileEvent(stats::TrendingTileEvent::kClicked);
tester.ExpectBucketCount(stats::kTrendingTileEventHistogram, 0, 0);
tester.ExpectBucketCount(stats::kTrendingTileEventHistogram, 1, 1);
tester.ExpectBucketCount(stats::kTrendingTileEventHistogram, 2, 1);
}
} // namespace
} // namespace query_tiles
......@@ -4,6 +4,7 @@
#include "components/query_tiles/internal/trending_tile_handler.h"
#include "components/query_tiles/internal/stats.h"
#include "components/query_tiles/internal/tile_config.h"
#include "components/query_tiles/internal/tile_utils.h"
#include "components/query_tiles/switches.h"
......@@ -36,6 +37,8 @@ std::vector<Tile> TrendingTileHandler::FilterExtraTrendingTiles(
void TrendingTileHandler::OnTileClicked(const std::string& tile_id) {
tile_impressions_.erase(tile_id);
if (IsTrendingTile(tile_id))
stats::RecordTrendingTileEvent(stats::TrendingTileEvent::kClicked);
}
std::vector<std::string> TrendingTileHandler::GetInactiveTrendingTiles() {
......@@ -49,6 +52,7 @@ std::vector<std::string> TrendingTileHandler::GetInactiveTrendingTiles() {
if (it->second >= TileConfig::GetMaxTrendingTileImpressions()) {
tile_ids.emplace_back(it->first);
it = tile_impressions_.erase(it);
stats::RecordTrendingTileEvent(stats::TrendingTileEvent::kRemoved);
} else {
++it;
}
......@@ -59,6 +63,7 @@ std::vector<std::string> TrendingTileHandler::GetInactiveTrendingTiles() {
void TrendingTileHandler::RecordImpression(const std::string& tile_id) {
++tile_impressions_[tile_id];
stats::RecordTrendingTileEvent(stats::TrendingTileEvent::kShown);
}
} // namespace query_tiles
......@@ -74072,6 +74072,12 @@ Full version information for the fingerprint enum values:
<int value="15" label="Automatic translation, by user preference"/>
</enum>
<enum name="TrendingTileEvent">
<int value="0" label="Tile was shown"/>
<int value="1" label="Tile was removed"/>
<int value="2" label="Tile was clicked"/>
</enum>
<enum name="TriggerHelpUIResult">
<int value="0" label="SUCCESS"/>
<int value="1" label="FAILURE"/>
......@@ -1403,6 +1403,16 @@ reviews. Googlers can read more about this at go/gwsq-gerrit.
</summary>
</histogram>
<histogram name="Search.QueryTiles.TrendingTileEvent" enum="TrendingTileEvent"
expires_after="M91">
<owner>qinmin@chromium.org</owner>
<owner>chrome-upboarding-eng@google.com</owner>
<summary>
Records events related to trending tiles, including display, removal and
click, after the events occur.
</summary>
</histogram>
<histogram name="Search.RelatedSearches.AllUserPermissions"
enum="ContextualSearchPermissions" expires_after="M91">
<owner>donnd@chromium.org</owner>
......
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