OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/ntp_tiles/most_visited_sites.h" | 5 #include "components/ntp_tiles/most_visited_sites.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.IconsGray", | 246 UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.IconsGray", |
247 counts_per_type[ICON_DEFAULT]); | 247 counts_per_type[ICON_DEFAULT]); |
248 } | 248 } |
249 | 249 |
250 void MostVisitedSites::RecordOpenedMostVisitedItem(int index, int tile_type) { | 250 void MostVisitedSites::RecordOpenedMostVisitedItem(int index, int tile_type) { |
251 // TODO(treib): |current_suggestions_| could be updated before this function | 251 // TODO(treib): |current_suggestions_| could be updated before this function |
252 // is called, leading to DCHECKs and/or memory corruption. Adjust this | 252 // is called, leading to DCHECKs and/or memory corruption. Adjust this |
253 // function to work with asynchronous UI. | 253 // function to work with asynchronous UI. |
254 DCHECK_GE(index, 0); | 254 DCHECK_GE(index, 0); |
255 DCHECK_LT(index, static_cast<int>(current_suggestions_.size())); | 255 DCHECK_LT(index, static_cast<int>(current_suggestions_.size())); |
| 256 |
| 257 UMA_HISTOGRAM_ENUMERATION("NewTabPage.MostVisited", index, num_sites_); |
| 258 |
256 std::string histogram = base::StringPrintf( | 259 std::string histogram = base::StringPrintf( |
257 "NewTabPage.MostVisited.%s", | 260 "NewTabPage.MostVisited.%s", |
258 GetSourceHistogramName(current_suggestions_[index].source).c_str()); | 261 GetSourceHistogramName(current_suggestions_[index].source).c_str()); |
259 LogHistogramEvent(histogram, index, num_sites_); | 262 LogHistogramEvent(histogram, index, num_sites_); |
260 | 263 |
261 histogram = base::StringPrintf( | 264 histogram = base::StringPrintf( |
262 "NewTabPage.TileTypeClicked.%s", | 265 "NewTabPage.TileTypeClicked.%s", |
263 GetSourceHistogramName(current_suggestions_[index].source).c_str()); | 266 GetSourceHistogramName(current_suggestions_[index].source).c_str()); |
264 LogHistogramEvent(histogram, tile_type, NUM_TILE_TYPES); | 267 LogHistogramEvent(histogram, tile_type, NUM_TILE_TYPES); |
265 } | 268 } |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 source_list.AppendBoolean(suggestion.source != POPULAR); | 498 source_list.AppendBoolean(suggestion.source != POPULAR); |
496 } | 499 } |
497 prefs_->Set(ntp_tiles::prefs::kNTPSuggestionsIsPersonal, source_list); | 500 prefs_->Set(ntp_tiles::prefs::kNTPSuggestionsIsPersonal, source_list); |
498 prefs_->Set(ntp_tiles::prefs::kNTPSuggestionsURL, url_list); | 501 prefs_->Set(ntp_tiles::prefs::kNTPSuggestionsURL, url_list); |
499 } | 502 } |
500 | 503 |
501 void MostVisitedSites::NotifyMostVisitedURLsObserver() { | 504 void MostVisitedSites::NotifyMostVisitedURLsObserver() { |
502 if (received_most_visited_sites_ && received_popular_sites_ && | 505 if (received_most_visited_sites_ && received_popular_sites_ && |
503 !recorded_uma_) { | 506 !recorded_uma_) { |
504 RecordImpressionUMAMetrics(); | 507 RecordImpressionUMAMetrics(); |
505 UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.NumberOfTiles", | |
506 current_suggestions_.size()); | |
507 recorded_uma_ = true; | 508 recorded_uma_ = true; |
508 } | 509 } |
509 | 510 |
510 if (!observer_) | 511 if (!observer_) |
511 return; | 512 return; |
512 | 513 |
513 observer_->OnMostVisitedURLsAvailable(current_suggestions_); | 514 observer_->OnMostVisitedURLsAvailable(current_suggestions_); |
514 } | 515 } |
515 | 516 |
516 void MostVisitedSites::OnPopularSitesAvailable(bool success) { | 517 void MostVisitedSites::OnPopularSitesAvailable(bool success) { |
517 received_popular_sites_ = true; | 518 received_popular_sites_ = true; |
518 | 519 |
519 if (!success) { | 520 if (!success) { |
520 LOG(WARNING) << "Download of popular sites failed"; | 521 LOG(WARNING) << "Download of popular sites failed"; |
521 return; | 522 return; |
522 } | 523 } |
523 | 524 |
524 // Pass the popular sites to the observer. This will cause it to fetch any | 525 // Pass the popular sites to the observer. This will cause it to fetch any |
525 // missing icons, but will *not* cause it to display the popular sites. | 526 // missing icons, but will *not* cause it to display the popular sites. |
526 observer_->OnPopularURLsAvailable(popular_sites_->sites()); | 527 observer_->OnPopularURLsAvailable(popular_sites_->sites()); |
527 | 528 |
528 // Re-build the suggestions list. Once done, this will notify the observer. | 529 // Re-build the suggestions list. Once done, this will notify the observer. |
529 BuildCurrentSuggestions(); | 530 BuildCurrentSuggestions(); |
530 } | 531 } |
531 | 532 |
532 void MostVisitedSites::RecordImpressionUMAMetrics() { | 533 void MostVisitedSites::RecordImpressionUMAMetrics() { |
| 534 UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.NumberOfTiles", |
| 535 current_suggestions_.size()); |
| 536 |
533 for (size_t i = 0; i < current_suggestions_.size(); i++) { | 537 for (size_t i = 0; i < current_suggestions_.size(); i++) { |
| 538 UMA_HISTOGRAM_ENUMERATION( |
| 539 "NewTabPage.SuggestionsImpression", static_cast<int>(i), num_sites_); |
| 540 |
534 std::string histogram = base::StringPrintf( | 541 std::string histogram = base::StringPrintf( |
535 "NewTabPage.SuggestionsImpression.%s", | 542 "NewTabPage.SuggestionsImpression.%s", |
536 GetSourceHistogramName(current_suggestions_[i].source).c_str()); | 543 GetSourceHistogramName(current_suggestions_[i].source).c_str()); |
537 LogHistogramEvent(histogram, static_cast<int>(i), num_sites_); | 544 LogHistogramEvent(histogram, static_cast<int>(i), num_sites_); |
538 } | 545 } |
539 } | 546 } |
540 | 547 |
541 void MostVisitedSites::TopSitesLoaded(TopSites* top_sites) {} | 548 void MostVisitedSites::TopSitesLoaded(TopSites* top_sites) {} |
542 | 549 |
543 void MostVisitedSites::TopSitesChanged(TopSites* top_sites, | 550 void MostVisitedSites::TopSitesChanged(TopSites* top_sites, |
544 ChangeReason change_reason) { | 551 ChangeReason change_reason) { |
545 if (mv_source_ == TOP_SITES) { | 552 if (mv_source_ == TOP_SITES) { |
546 // The displayed suggestions are invalidated. | 553 // The displayed suggestions are invalidated. |
547 InitiateTopSitesQuery(); | 554 InitiateTopSitesQuery(); |
548 } | 555 } |
549 } | 556 } |
550 | 557 |
551 } // namespace ntp_tiles | 558 } // namespace ntp_tiles |
OLD | NEW |