Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Side by Side Diff: components/favicon/core/favicon_handler.cc

Issue 2808063002: Add DownloadStatus metric to FaviconHandler (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/favicon/core/favicon_handler.h" 5 #include "components/favicon/core/favicon_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 attempts); 77 attempts);
78 return; 78 return;
79 case FaviconDriverObserver::TOUCH_LARGEST: 79 case FaviconDriverObserver::TOUCH_LARGEST:
80 UMA_HISTOGRAM_SPARSE_SLOWLY("Favicons.DownloadAttempts.TouchIcons", 80 UMA_HISTOGRAM_SPARSE_SLOWLY("Favicons.DownloadAttempts.TouchIcons",
81 attempts); 81 attempts);
82 return; 82 return;
83 } 83 }
84 NOTREACHED(); 84 NOTREACHED();
85 } 85 }
86 86
87 void RecordDownloadOutcome(FaviconHandler::DownloadOutcome outcome) {
88 UMA_HISTOGRAM_ENUMERATION(
89 "Favicons.DownloadOutcome", outcome,
90 FaviconHandler::DownloadOutcome::DOWNLOAD_OUTCOME_COUNT);
91 }
92
87 // Returns true if |bitmap_results| is non-empty and: 93 // Returns true if |bitmap_results| is non-empty and:
88 // - At least one of the bitmaps in |bitmap_results| is expired 94 // - At least one of the bitmaps in |bitmap_results| is expired
89 // OR 95 // OR
90 // - |bitmap_results| is missing favicons for |desired_size_in_dip| and one of 96 // - |bitmap_results| is missing favicons for |desired_size_in_dip| and one of
91 // the scale factors in favicon_base::GetFaviconScales(). 97 // the scale factors in favicon_base::GetFaviconScales().
92 bool HasExpiredOrIncompleteResult( 98 bool HasExpiredOrIncompleteResult(
93 int desired_size_in_dip, 99 int desired_size_in_dip,
94 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) { 100 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) {
95 if (bitmap_results.empty()) 101 if (bitmap_results.empty())
96 return false; 102 return false;
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 int id, 383 int id,
378 int http_status_code, 384 int http_status_code,
379 const GURL& image_url, 385 const GURL& image_url,
380 const std::vector<SkBitmap>& bitmaps, 386 const std::vector<SkBitmap>& bitmaps,
381 const std::vector<gfx::Size>& original_bitmap_sizes) { 387 const std::vector<gfx::Size>& original_bitmap_sizes) {
382 // Mark download as finished. 388 // Mark download as finished.
383 download_request_.Cancel(); 389 download_request_.Cancel();
384 390
385 if (bitmaps.empty() && http_status_code == 404) { 391 if (bitmaps.empty() && http_status_code == 404) {
386 DVLOG(1) << "Failed to Download Favicon:" << image_url; 392 DVLOG(1) << "Failed to Download Favicon:" << image_url;
393 RecordDownloadOutcome(DownloadOutcome::FAILED);
387 service_->UnableToDownloadFavicon(image_url); 394 service_->UnableToDownloadFavicon(image_url);
388 } 395 }
389 396
390 bool request_next_icon = true; 397 bool request_next_icon = true;
391 if (!bitmaps.empty()) { 398 if (!bitmaps.empty()) {
399 RecordDownloadOutcome(DownloadOutcome::SUCCEEDED);
392 float score = 0.0f; 400 float score = 0.0f;
393 gfx::ImageSkia image_skia; 401 gfx::ImageSkia image_skia;
394 if (download_largest_icon_) { 402 if (download_largest_icon_) {
395 std::vector<size_t> best_indices; 403 std::vector<size_t> best_indices;
396 SelectFaviconFrameIndices(original_bitmap_sizes, 404 SelectFaviconFrameIndices(original_bitmap_sizes,
397 GetDesiredPixelSizes(handler_type_), 405 GetDesiredPixelSizes(handler_type_),
398 &best_indices, &score); 406 &best_indices, &score);
399 DCHECK_EQ(1U, best_indices.size()); 407 DCHECK_EQ(1U, best_indices.size());
400 image_skia = 408 image_skia =
401 gfx::ImageSkia::CreateFrom1xBitmap(bitmaps[best_indices.front()]); 409 gfx::ImageSkia::CreateFrom1xBitmap(bitmaps[best_indices.front()]);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 } 558 }
551 } 559 }
552 560
553 void FaviconHandler::ScheduleDownload(const GURL& image_url, 561 void FaviconHandler::ScheduleDownload(const GURL& image_url,
554 favicon_base::IconType icon_type) { 562 favicon_base::IconType icon_type) {
555 DCHECK(image_url.is_valid()); 563 DCHECK(image_url.is_valid());
556 // Note that CancelableCallback starts cancelled. 564 // Note that CancelableCallback starts cancelled.
557 DCHECK(download_request_.IsCancelled()) << "More than one ongoing download"; 565 DCHECK(download_request_.IsCancelled()) << "More than one ongoing download";
558 if (service_->WasUnableToDownloadFavicon(image_url)) { 566 if (service_->WasUnableToDownloadFavicon(image_url)) {
559 DVLOG(1) << "Skip Failed FavIcon: " << image_url; 567 DVLOG(1) << "Skip Failed FavIcon: " << image_url;
568 RecordDownloadOutcome(DownloadOutcome::SKIPPED);
560 OnDidDownloadFavicon(icon_type, 0, 0, image_url, std::vector<SkBitmap>(), 569 OnDidDownloadFavicon(icon_type, 0, 0, image_url, std::vector<SkBitmap>(),
561 std::vector<gfx::Size>()); 570 std::vector<gfx::Size>());
562 return; 571 return;
563 } 572 }
564 ++num_download_requests_; 573 ++num_download_requests_;
565 download_request_.Reset(base::Bind(&FaviconHandler::OnDidDownloadFavicon, 574 download_request_.Reset(base::Bind(&FaviconHandler::OnDidDownloadFavicon,
566 base::Unretained(this), icon_type)); 575 base::Unretained(this), icon_type));
567 // A max bitmap size is specified to avoid receiving huge bitmaps in 576 // A max bitmap size is specified to avoid receiving huge bitmaps in
568 // OnDidDownloadFavicon(). See FaviconDriver::StartDownload() 577 // OnDidDownloadFavicon(). See FaviconDriver::StartDownload()
569 // for more details about the max bitmap size. 578 // for more details about the max bitmap size.
570 const int download_id = 579 const int download_id =
571 delegate_->DownloadImage(image_url, GetMaximalIconSize(handler_type_), 580 delegate_->DownloadImage(image_url, GetMaximalIconSize(handler_type_),
572 download_request_.callback()); 581 download_request_.callback());
573 DCHECK_NE(download_id, 0); 582 DCHECK_NE(download_id, 0);
574 } 583 }
575 584
576 } // namespace favicon 585 } // namespace favicon
OLDNEW
« no previous file with comments | « components/favicon/core/favicon_handler.h ('k') | components/favicon/core/favicon_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698