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

Side by Side Diff: components/ntp_tiles/icon_cacher.cc

Issue 2388783004: Ensure PopularSite icon availability in ntp_tiles. (Closed)
Patch Set: Fix comments, variable names. Created 4 years, 2 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
Marc Treib 2016/10/12 09:11:28 2016
sfiera 2016/10/13 09:06:45 Done.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/ntp_tiles/icon_cacher.h"
6
7 #include "base/callback.h"
Marc Treib 2016/10/12 09:11:28 No need to repeat all the includes from the header
sfiera 2016/10/13 09:06:45 Took this as an opportunity to trim the includes i
8 #include "base/memory/weak_ptr.h"
9 #include "components/favicon/core/favicon_service.h"
10 #include "components/favicon/core/favicon_util.h"
11 #include "components/favicon_base/favicon_types.h"
12 #include "components/favicon_base/favicon_util.h"
13 #include "components/image_fetcher/image_fetcher.h"
14 #include "components/ntp_tiles/popular_sites.h"
15 #include "ui/gfx/image/image_skia.h" // DO_NOT_SUBMIT
Marc Treib 2016/10/12 09:11:28 :)
sfiera 2016/10/13 09:06:45 :X
16 #include "url/gurl.h"
17
18 namespace ntp_tiles {
19
20 IconCacher::IconCacher(
21 favicon::FaviconService* favicon_service,
22 std::unique_ptr<image_fetcher::ImageFetcher> image_fetcher)
23 : favicon_service_(favicon_service),
24 image_fetcher_(std::move(image_fetcher)),
25 weak_ptr_factory_(this) {
26 image_fetcher_->SetDataUseServiceName(
27 data_use_measurement::DataUseUserData::NTP_TILES);
Marc Treib 2016/10/12 09:11:28 :) There's a TODO to add just this in popular_site
sfiera 2016/10/13 09:06:45 Done.
28 }
29
30 IconCacher::~IconCacher() = default;
31
32 void IconCacher::StartFetch(PopularSites::Site site,
33 base::Callback<void(bool)> done) {
34 favicon::GetFaviconImageForPageURL(
35 favicon_service_, site.url, IconType(site),
36 base::Bind(&IconCacher::OnGetFaviconImageForPageURLFinished,
37 weak_ptr_factory_.GetWeakPtr(), std::move(site), done),
Marc Treib 2016/10/12 09:11:28 WeakPtr isn't necessary I think: the CancelableTas
sfiera 2016/10/13 09:06:45 Done.
38 &tracker_);
39 }
40
41 favicon_base::IconType IconCacher::IconType(const PopularSites::Site& site) {
42 return site.large_icon_url.is_valid() ? favicon_base::TOUCH_ICON
43 : favicon_base::FAVICON;
44 }
45
46 const GURL& IconCacher::IconURL(const PopularSites::Site& site) {
47 return site.large_icon_url.is_valid() ? site.large_icon_url
48 : site.favicon_url;
49 }
50
51 void IconCacher::OnGetFaviconImageForPageURLFinished(
52 PopularSites::Site site,
53 base::Callback<void(bool)> done,
54 const favicon_base::FaviconImageResult& result) {
55 if (!result.image.IsEmpty()) {
56 done.Run(false);
57 return;
58 }
59
60 image_fetcher_->StartOrQueueNetworkRequest(
61 "", IconURL(site),
Marc Treib 2016/10/12 09:11:28 nit: s/""/std::string()/
sfiera 2016/10/13 09:06:45 Done.
62 base::Bind(&IconCacher::OnFaviconDownloaded,
63 weak_ptr_factory_.GetWeakPtr(), site, done));
Marc Treib 2016/10/12 09:11:28 WeakPtr isn't necessary I think (we own the ImageF
sfiera 2016/10/13 09:06:45 Done.
64 }
65
66 void IconCacher::OnFaviconDownloaded(PopularSites::Site site,
67 base::Callback<void(bool)> done,
68 const std::string& id,
69 const gfx::Image& fetched_image) {
70 if (fetched_image.IsEmpty()) {
71 done.Run(false);
72 return;
73 }
74
75 gfx::Image image = fetched_image;
76 favicon_base::SetFaviconColorSpace(&image);
77 favicon_service_->SetFavicons(site.url, IconURL(site), IconType(site), image);
78 done.Run(true);
79 }
80
81 } // namespace ntp_tiles
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698