OLD | NEW |
---|---|
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 "chrome/browser/favicon/favicon_service.h" | 5 #include "chrome/browser/favicon/favicon_service.h" |
6 | 6 |
7 #include "base/hash.h" | 7 #include "base/hash.h" |
8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
9 #include "chrome/browser/favicon/favicon_util.h" | 9 #include "chrome/browser/favicon/favicon_util.h" |
10 #include "chrome/browser/history/history_backend.h" | 10 #include "chrome/browser/history/history_backend.h" |
(...skipping 27 matching lines...) Expand all Loading... | |
38 // service. | 38 // service. |
39 CancelableTaskTracker::TaskId RunWithEmptyResultAsync( | 39 CancelableTaskTracker::TaskId RunWithEmptyResultAsync( |
40 const FaviconService::FaviconResultsCallback& callback, | 40 const FaviconService::FaviconResultsCallback& callback, |
41 CancelableTaskTracker* tracker) { | 41 CancelableTaskTracker* tracker) { |
42 return tracker->PostTask( | 42 return tracker->PostTask( |
43 base::MessageLoopProxy::current().get(), | 43 base::MessageLoopProxy::current().get(), |
44 FROM_HERE, | 44 FROM_HERE, |
45 Bind(callback, std::vector<chrome::FaviconBitmapResult>())); | 45 Bind(callback, std::vector<chrome::FaviconBitmapResult>())); |
46 } | 46 } |
47 | 47 |
48 // Return the TaskId of to retreive the favicon from chrome specific URL. | |
pkotwicz
2013/10/16 16:59:41
Nit: "of to retreive" -> "to retrieve"
michaelbai
2013/10/16 18:17:05
Done.
| |
49 CancelableTaskTracker::TaskId GetFaviconForChromeURL( | |
50 Profile* profile, | |
51 const GURL& page_url, | |
52 const std::vector<ui::ScaleFactor>& desired_scale_factors, | |
53 const FaviconService::FaviconResultsCallback& callback, | |
54 CancelableTaskTracker* tracker) { | |
55 CancelableTaskTracker::IsCanceledCallback is_canceled_cb; | |
56 CancelableTaskTracker::TaskId id = tracker->NewTrackedTaskId(&is_canceled_cb); | |
57 FaviconService::FaviconResultsCallback cancelable_cb = | |
58 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback); | |
59 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(profile, | |
60 page_url, desired_scale_factors, cancelable_cb); | |
61 return id; | |
62 } | |
63 | |
48 } // namespace | 64 } // namespace |
49 | 65 |
50 FaviconService::FaviconService(HistoryService* history_service) | 66 FaviconService::FaviconService(HistoryService* history_service) |
51 : history_service_(history_service) { | 67 : history_service_(history_service) { |
52 } | 68 } |
53 | 69 |
54 // static | 70 // static |
55 void FaviconService::FaviconResultsCallbackRunner( | 71 void FaviconService::FaviconResultsCallbackRunner( |
56 const FaviconResultsCallback& callback, | 72 const FaviconResultsCallback& callback, |
57 const std::vector<chrome::FaviconBitmapResult>* results) { | 73 const std::vector<chrome::FaviconBitmapResult>* results) { |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
162 params, | 178 params, |
163 desired_scale_factors, | 179 desired_scale_factors, |
164 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, | 180 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, |
165 base::Unretained(this), | 181 base::Unretained(this), |
166 callback, | 182 callback, |
167 params.desired_size_in_dip, | 183 params.desired_size_in_dip, |
168 desired_scale_factor), | 184 desired_scale_factor), |
169 tracker); | 185 tracker); |
170 } | 186 } |
171 | 187 |
188 CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURL( | |
189 Profile* profile, | |
190 const GURL& page_url, | |
191 const std::vector<int>& icon_types, | |
192 int minimal_size_in_pixels, | |
193 const FaviconRawCallback& callback, | |
194 CancelableTaskTracker* tracker) { | |
195 | |
sky
2013/10/16 13:27:16
nit: remove newline.
michaelbai
2013/10/16 18:17:05
Done.
| |
196 FaviconResultsCallback favicon_results_callback = | |
197 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, | |
198 base::Unretained(this), callback, 0, ui::ScaleFactor()); | |
199 | |
200 if (page_url.SchemeIs(chrome::kChromeUIScheme) || | |
201 page_url.SchemeIs(extensions::kExtensionScheme)) { | |
202 std::vector<ui::ScaleFactor> scale_factor; | |
203 scale_factor.push_back(ui::SCALE_FACTOR_100P); | |
204 return GetFaviconForChromeURL(profile, page_url, scale_factor, | |
205 favicon_results_callback, tracker); | |
206 } else if (history_service_) { | |
207 return history_service_->GetLargestFaviconForURL(page_url, icon_types, | |
208 minimal_size_in_pixels, favicon_results_callback, tracker); | |
209 } | |
210 return RunWithEmptyResultAsync(favicon_results_callback, tracker); | |
211 } | |
212 | |
172 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( | 213 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( |
173 const FaviconForURLParams& params, | 214 const FaviconForURLParams& params, |
174 const FaviconResultsCallback& callback, | 215 const FaviconResultsCallback& callback, |
175 CancelableTaskTracker* tracker) { | 216 CancelableTaskTracker* tracker) { |
176 return GetFaviconForURLImpl(params, | 217 return GetFaviconForURLImpl(params, |
177 FaviconUtil::GetFaviconScaleFactors(), | 218 FaviconUtil::GetFaviconScaleFactors(), |
178 callback, | 219 callback, |
179 tracker); | 220 tracker); |
180 } | 221 } |
181 | 222 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
277 | 318 |
278 FaviconService::~FaviconService() {} | 319 FaviconService::~FaviconService() {} |
279 | 320 |
280 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( | 321 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( |
281 const FaviconForURLParams& params, | 322 const FaviconForURLParams& params, |
282 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 323 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
283 const FaviconResultsCallback& callback, | 324 const FaviconResultsCallback& callback, |
284 CancelableTaskTracker* tracker) { | 325 CancelableTaskTracker* tracker) { |
285 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) || | 326 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) || |
286 params.page_url.SchemeIs(extensions::kExtensionScheme)) { | 327 params.page_url.SchemeIs(extensions::kExtensionScheme)) { |
287 CancelableTaskTracker::IsCanceledCallback is_canceled_cb; | 328 return GetFaviconForChromeURL(params.profile, params.page_url, |
288 CancelableTaskTracker::TaskId id = | 329 desired_scale_factors, callback, tracker); |
289 tracker->NewTrackedTaskId(&is_canceled_cb); | |
290 | |
291 FaviconResultsCallback cancelable_cb = | |
292 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback); | |
293 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL( | |
294 params.profile, params.page_url, desired_scale_factors, cancelable_cb); | |
295 return id; | |
296 } else if (history_service_) { | 330 } else if (history_service_) { |
297 return history_service_->GetFaviconsForURL(params.page_url, | 331 return history_service_->GetFaviconsForURL(params.page_url, |
298 params.icon_types, | 332 params.icon_types, |
299 params.desired_size_in_dip, | 333 params.desired_size_in_dip, |
300 desired_scale_factors, | 334 desired_scale_factors, |
301 callback, | 335 callback, |
302 tracker); | 336 tracker); |
303 } else { | |
304 return RunWithEmptyResultAsync(callback, tracker); | |
305 } | 337 } |
338 return RunWithEmptyResultAsync(callback, tracker); | |
306 } | 339 } |
307 | 340 |
308 void FaviconService::RunFaviconImageCallbackWithBitmapResults( | 341 void FaviconService::RunFaviconImageCallbackWithBitmapResults( |
309 const FaviconImageCallback& callback, | 342 const FaviconImageCallback& callback, |
310 int desired_size_in_dip, | 343 int desired_size_in_dip, |
311 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) { | 344 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) { |
312 chrome::FaviconImageResult image_result; | 345 chrome::FaviconImageResult image_result; |
313 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( | 346 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( |
314 favicon_bitmap_results, | 347 favicon_bitmap_results, |
315 FaviconUtil::GetFaviconScaleFactors(), | 348 FaviconUtil::GetFaviconScaleFactors(), |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
364 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, | 397 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, |
365 &resized_bitmap_data)) { | 398 &resized_bitmap_data)) { |
366 callback.Run(chrome::FaviconBitmapResult()); | 399 callback.Run(chrome::FaviconBitmapResult()); |
367 return; | 400 return; |
368 } | 401 } |
369 | 402 |
370 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( | 403 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( |
371 &resized_bitmap_data); | 404 &resized_bitmap_data); |
372 callback.Run(bitmap_result); | 405 callback.Run(bitmap_result); |
373 } | 406 } |
OLD | NEW |