Chromium Code Reviews| Index: chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc |
| diff --git a/chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc b/chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc |
| index 2836822dc9cbecff2873dfb2b55e5a1d357ff90a..3f0c81b26335a8f23f5dd74b2d27fdff2a6ee7a2 100644 |
| --- a/chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc |
| +++ b/chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc |
| @@ -109,63 +109,6 @@ NTPUserDataLogger* NTPUserDataLogger::GetOrCreateFromWebContents( |
| return logger; |
| } |
| -void NTPUserDataLogger::EmitNtpStatistics() { |
| - UMA_HISTOGRAM_COUNTS("NewTabPage.NumberOfMouseOvers", number_of_mouseovers_); |
| - number_of_mouseovers_ = 0; |
| - |
| - // We only send statistics once per page. |
| - // And we don't send if there are no tiles recorded. |
| - if (has_emitted_ || !number_of_tiles_) |
| - return; |
| - |
| - // LoadTime only gets update once per page, so we don't have it on reloads. |
| - if (load_time_ > base::TimeDelta::FromMilliseconds(0)) { |
| - logLoadTimeHistogram("NewTabPage.LoadTime", load_time_); |
| - |
| - // Split between ML and MV. |
| - std::string type = has_server_side_suggestions_ ? |
| - "MostLikely" : "MostVisited"; |
| - logLoadTimeHistogram("NewTabPage.LoadTime." + type, load_time_); |
| - // Split between Web and Local. |
| - std::string source = ntp_url_.SchemeIsHTTPOrHTTPS() ? "Web" : "LocalNTP"; |
| - logLoadTimeHistogram("NewTabPage.LoadTime." + source, load_time_); |
| - |
| - // Split between Startup and non-startup. |
| - std::string status = during_startup_ ? "Startup" : "NewTab"; |
| - logLoadTimeHistogram("NewTabPage.LoadTime." + status, load_time_); |
| - |
| - load_time_ = base::TimeDelta::FromMilliseconds(0); |
| - } |
| - UMA_HISTOGRAM_ENUMERATION( |
| - "NewTabPage.SuggestionsType", |
| - has_server_side_suggestions_ ? SERVER_SIDE : CLIENT_SIDE, |
| - SUGGESTIONS_TYPE_COUNT); |
| - has_server_side_suggestions_ = false; |
| - has_client_side_suggestions_ = false; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfTiles", number_of_tiles_); |
| - number_of_tiles_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfThumbnailTiles", |
| - number_of_thumbnail_tiles_); |
| - number_of_thumbnail_tiles_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfGrayTiles", |
| - number_of_gray_tiles_); |
| - number_of_gray_tiles_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfExternalTiles", |
| - number_of_external_tiles_); |
| - number_of_external_tiles_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfThumbnailErrors", |
| - number_of_thumbnail_errors_); |
| - number_of_thumbnail_errors_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfGrayTileFallbacks", |
| - number_of_gray_tile_fallbacks_); |
| - number_of_gray_tile_fallbacks_ = 0; |
| - UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfExternalTileFallbacks", |
| - number_of_external_tile_fallbacks_); |
| - number_of_external_tile_fallbacks_ = 0; |
| - has_emitted_ = true; |
| - during_startup_ = false; |
| -} |
| - |
| void NTPUserDataLogger::LogEvent(NTPLoggingEventType event, |
| base::TimeDelta time) { |
| switch (event) { |
| @@ -174,12 +117,12 @@ void NTPUserDataLogger::LogEvent(NTPLoggingEventType event, |
| // In either case, we want to flush our stats before recounting again. |
| case NTP_SERVER_SIDE_SUGGESTION: |
| if (has_client_side_suggestions_) |
| - EmitNtpStatistics(); |
| + EmitNtpStatistics(EmitReason::INTERNAL_FLUSH); |
| has_server_side_suggestions_ = true; |
| break; |
| case NTP_CLIENT_SIDE_SUGGESTION: |
| if (has_server_side_suggestions_) |
| - EmitNtpStatistics(); |
| + EmitNtpStatistics(EmitReason::INTERNAL_FLUSH); |
| has_client_side_suggestions_ = true; |
| break; |
| case NTP_TILE: |
| @@ -262,10 +205,18 @@ void NTPUserDataLogger::NavigationEntryCommitted( |
| return; |
| if (search::MatchesOriginAndPath(ntp_url_, load_details.previous_url)) { |
| - EmitNtpStatistics(); |
| + EmitNtpStatistics(EmitReason::NAVIGATED_AWAY); |
| } |
| } |
| +void NTPUserDataLogger::TabDeactivated() { |
| + EmitNtpStatistics(EmitReason::CLOSED); |
| +} |
| + |
| +void NTPUserDataLogger::MostVisitedItemsChanged() { |
| + EmitNtpStatistics(EmitReason::MV_CHANGED); |
| +} |
| + |
| NTPUserDataLogger::NTPUserDataLogger(content::WebContents* contents) |
| : content::WebContentsObserver(contents), |
| has_server_side_suggestions_(false), |
| @@ -300,3 +251,60 @@ NTPUserDataLogger::NTPUserDataLogger(content::WebContents* contents) |
| } |
| } |
| } |
| + |
| +void NTPUserDataLogger::EmitNtpStatistics(EmitReason reason) { |
|
Marc Treib
2016/07/06 12:04:27
We don't do anything with the reason yet - do you
sfiera
2016/07/06 12:08:41
Not at the moment. It would be nice to have a stat
|
| + UMA_HISTOGRAM_COUNTS("NewTabPage.NumberOfMouseOvers", number_of_mouseovers_); |
| + number_of_mouseovers_ = 0; |
| + |
| + // We only send statistics once per page. |
| + // And we don't send if there are no tiles recorded. |
| + if (has_emitted_ || !number_of_tiles_) |
| + return; |
| + |
| + // LoadTime only gets update once per page, so we don't have it on reloads. |
| + if (load_time_ > base::TimeDelta::FromMilliseconds(0)) { |
| + logLoadTimeHistogram("NewTabPage.LoadTime", load_time_); |
| + |
| + // Split between ML and MV. |
| + std::string type = has_server_side_suggestions_ ? |
| + "MostLikely" : "MostVisited"; |
| + logLoadTimeHistogram("NewTabPage.LoadTime." + type, load_time_); |
| + // Split between Web and Local. |
| + std::string source = ntp_url_.SchemeIsHTTPOrHTTPS() ? "Web" : "LocalNTP"; |
| + logLoadTimeHistogram("NewTabPage.LoadTime." + source, load_time_); |
| + |
| + // Split between Startup and non-startup. |
| + std::string status = during_startup_ ? "Startup" : "NewTab"; |
| + logLoadTimeHistogram("NewTabPage.LoadTime." + status, load_time_); |
| + |
| + load_time_ = base::TimeDelta::FromMilliseconds(0); |
| + } |
| + UMA_HISTOGRAM_ENUMERATION( |
| + "NewTabPage.SuggestionsType", |
| + has_server_side_suggestions_ ? SERVER_SIDE : CLIENT_SIDE, |
| + SUGGESTIONS_TYPE_COUNT); |
| + has_server_side_suggestions_ = false; |
| + has_client_side_suggestions_ = false; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfTiles", number_of_tiles_); |
| + number_of_tiles_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfThumbnailTiles", |
| + number_of_thumbnail_tiles_); |
| + number_of_thumbnail_tiles_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfGrayTiles", |
| + number_of_gray_tiles_); |
| + number_of_gray_tiles_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfExternalTiles", |
| + number_of_external_tiles_); |
| + number_of_external_tiles_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfThumbnailErrors", |
| + number_of_thumbnail_errors_); |
| + number_of_thumbnail_errors_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfGrayTileFallbacks", |
| + number_of_gray_tile_fallbacks_); |
| + number_of_gray_tile_fallbacks_ = 0; |
| + UMA_HISTOGRAM_NTP_TILES("NewTabPage.NumberOfExternalTileFallbacks", |
| + number_of_external_tile_fallbacks_); |
| + number_of_external_tile_fallbacks_ = 0; |
| + has_emitted_ = true; |
| + during_startup_ = false; |
| +} |