OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/icon_cacher_impl.h" | 5 #include "components/ntp_tiles/icon_cacher_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "components/favicon/core/favicon_service.h" | 10 #include "components/favicon/core/favicon_service.h" |
11 #include "components/favicon/core/favicon_util.h" | 11 #include "components/favicon/core/favicon_util.h" |
12 #include "components/favicon/core/large_icon_service.h" | 12 #include "components/favicon/core/large_icon_service.h" |
13 #include "components/favicon_base/fallback_icon_style.h" | 13 #include "components/favicon_base/fallback_icon_style.h" |
14 #include "components/favicon_base/favicon_types.h" | 14 #include "components/favicon_base/favicon_types.h" |
15 #include "components/favicon_base/favicon_util.h" | 15 #include "components/favicon_base/favicon_util.h" |
16 #include "components/image_fetcher/core/image_decoder.h" | 16 #include "components/image_fetcher/core/image_decoder.h" |
17 #include "components/image_fetcher/core/image_fetcher.h" | 17 #include "components/image_fetcher/core/image_fetcher.h" |
| 18 #include "net/traffic_annotation/network_traffic_annotation.h" |
18 #include "ui/base/resource/resource_bundle.h" | 19 #include "ui/base/resource/resource_bundle.h" |
19 #include "ui/gfx/geometry/size.h" | 20 #include "ui/gfx/geometry/size.h" |
20 #include "ui/gfx/image/image.h" | 21 #include "ui/gfx/image/image.h" |
21 #include "url/gurl.h" | 22 #include "url/gurl.h" |
22 | 23 |
23 namespace ntp_tiles { | 24 namespace ntp_tiles { |
24 | 25 |
25 namespace { | 26 namespace { |
26 | 27 |
27 constexpr int kDesiredFrameSize = 128; | 28 constexpr int kDesiredFrameSize = 128; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 const base::Closure& preliminary_icon_available, | 94 const base::Closure& preliminary_icon_available, |
94 const favicon_base::FaviconImageResult& result) { | 95 const favicon_base::FaviconImageResult& result) { |
95 if (!result.image.IsEmpty()) { | 96 if (!result.image.IsEmpty()) { |
96 FinishRequestAndNotifyIconAvailable(site.url, /*newly_available=*/false); | 97 FinishRequestAndNotifyIconAvailable(site.url, /*newly_available=*/false); |
97 return; | 98 return; |
98 } | 99 } |
99 | 100 |
100 std::unique_ptr<CancelableImageCallback> preliminary_callback = | 101 std::unique_ptr<CancelableImageCallback> preliminary_callback = |
101 MaybeProvideDefaultIcon(site, preliminary_icon_available); | 102 MaybeProvideDefaultIcon(site, preliminary_icon_available); |
102 | 103 |
| 104 net::NetworkTrafficAnnotationTag traffic_annotation = |
| 105 net::DefineNetworkTrafficAnnotation("icon_cacher", R"( |
| 106 semantics { |
| 107 sender: "Popular Sites New Tab Fetch" |
| 108 description: |
| 109 "Chrome may display a list of regionally-popular web sites on the " |
| 110 "New Tab Page. This service fetches icons from those sites." |
| 111 trigger: |
| 112 "Whenever a popular site would be displayed, but its icon is not " |
| 113 "yet cached in the browser." |
| 114 data: "The URL for which to retrieve an icon." |
| 115 destination: WEBSITE |
| 116 } |
| 117 policy { |
| 118 cookies_allowed: false |
| 119 setting: "This feature cannot be disabled in settings." |
| 120 policy_exception_justification: "Not implemented." |
| 121 })"); |
103 image_fetcher_->StartOrQueueNetworkRequest( | 122 image_fetcher_->StartOrQueueNetworkRequest( |
104 std::string(), IconURL(site), | 123 std::string(), IconURL(site), |
105 base::Bind(&IconCacherImpl::OnPopularSitesFaviconDownloaded, | 124 base::Bind(&IconCacherImpl::OnPopularSitesFaviconDownloaded, |
106 base::Unretained(this), site, | 125 base::Unretained(this), site, |
107 base::Passed(std::move(preliminary_callback)))); | 126 base::Passed(std::move(preliminary_callback))), |
| 127 traffic_annotation); |
108 } | 128 } |
109 | 129 |
110 void IconCacherImpl::OnPopularSitesFaviconDownloaded( | 130 void IconCacherImpl::OnPopularSitesFaviconDownloaded( |
111 PopularSites::Site site, | 131 PopularSites::Site site, |
112 std::unique_ptr<CancelableImageCallback> preliminary_callback, | 132 std::unique_ptr<CancelableImageCallback> preliminary_callback, |
113 const std::string& id, | 133 const std::string& id, |
114 const gfx::Image& fetched_image, | 134 const gfx::Image& fetched_image, |
115 const image_fetcher::RequestMetadata& metadata) { | 135 const image_fetcher::RequestMetadata& metadata) { |
116 if (fetched_image.IsEmpty()) { | 136 if (fetched_image.IsEmpty()) { |
117 FinishRequestAndNotifyIconAvailable(site.url, /*newly_available=*/false); | 137 FinishRequestAndNotifyIconAvailable(site.url, /*newly_available=*/false); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 return; | 237 return; |
218 } | 238 } |
219 for (const base::Closure& callback : callbacks) { | 239 for (const base::Closure& callback : callbacks) { |
220 if (callback) { | 240 if (callback) { |
221 callback.Run(); | 241 callback.Run(); |
222 } | 242 } |
223 } | 243 } |
224 } | 244 } |
225 | 245 |
226 } // namespace ntp_tiles | 246 } // namespace ntp_tiles |
OLD | NEW |