Chromium Code Reviews| 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 CancelableTaskTracker::TaskId GetFaviconForChromeURL( | |
|
sky
2013/10/15 15:03:47
Add description.
michaelbai
2013/10/15 19:36:31
Done.
| |
| 49 Profile* profile, | |
| 50 const GURL& page_url, | |
| 51 const std::vector<ui::ScaleFactor>& desired_scale_factors, | |
| 52 const FaviconService::FaviconResultsCallback& callback, | |
| 53 CancelableTaskTracker* tracker) { | |
| 54 CancelableTaskTracker::IsCanceledCallback is_canceled_cb; | |
| 55 CancelableTaskTracker::TaskId id = tracker->NewTrackedTaskId(&is_canceled_cb); | |
| 56 FaviconService::FaviconResultsCallback cancelable_cb = | |
| 57 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback); | |
| 58 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(profile, | |
| 59 page_url, desired_scale_factors, cancelable_cb); | |
| 60 return id; | |
|
sky
2013/10/15 15:03:47
nit: indentation is off.
michaelbai
2013/10/15 19:36:31
Done.
| |
| 61 } | |
| 62 | |
| 48 } // namespace | 63 } // namespace |
| 49 | 64 |
| 50 FaviconService::FaviconService(HistoryService* history_service) | 65 FaviconService::FaviconService(HistoryService* history_service) |
| 51 : history_service_(history_service) { | 66 : history_service_(history_service) { |
| 52 } | 67 } |
| 53 | 68 |
| 54 // static | 69 // static |
| 55 void FaviconService::FaviconResultsCallbackRunner( | 70 void FaviconService::FaviconResultsCallbackRunner( |
| 56 const FaviconResultsCallback& callback, | 71 const FaviconResultsCallback& callback, |
| 57 const std::vector<chrome::FaviconBitmapResult>* results) { | 72 const std::vector<chrome::FaviconBitmapResult>* results) { |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 params, | 177 params, |
| 163 desired_scale_factors, | 178 desired_scale_factors, |
| 164 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, | 179 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, |
| 165 base::Unretained(this), | 180 base::Unretained(this), |
| 166 callback, | 181 callback, |
| 167 params.desired_size_in_dip, | 182 params.desired_size_in_dip, |
| 168 desired_scale_factor), | 183 desired_scale_factor), |
| 169 tracker); | 184 tracker); |
| 170 } | 185 } |
| 171 | 186 |
| 187 CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURL( | |
| 188 Profile* profile, | |
| 189 const GURL& page_url, | |
| 190 const std::vector<int>& icon_types, | |
| 191 int minimal_size_in_pixel, | |
| 192 const FaviconRawCallback& callback, | |
| 193 CancelableTaskTracker* tracker) { | |
| 194 return GetLargestRawFaviconForURLImpl( | |
| 195 profile, page_url, icon_types, minimal_size_in_pixel, | |
| 196 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, | |
| 197 base::Unretained(this), | |
| 198 callback, | |
| 199 0, | |
| 200 ui::ScaleFactor()), | |
| 201 tracker); | |
| 202 } | |
| 203 | |
| 172 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( | 204 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( |
| 173 const FaviconForURLParams& params, | 205 const FaviconForURLParams& params, |
| 174 const FaviconResultsCallback& callback, | 206 const FaviconResultsCallback& callback, |
| 175 CancelableTaskTracker* tracker) { | 207 CancelableTaskTracker* tracker) { |
| 176 return GetFaviconForURLImpl(params, | 208 return GetFaviconForURLImpl(params, |
| 177 FaviconUtil::GetFaviconScaleFactors(), | 209 FaviconUtil::GetFaviconScaleFactors(), |
| 178 callback, | 210 callback, |
| 179 tracker); | 211 tracker); |
| 180 } | 212 } |
| 181 | 213 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 277 | 309 |
| 278 FaviconService::~FaviconService() {} | 310 FaviconService::~FaviconService() {} |
| 279 | 311 |
| 280 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( | 312 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( |
| 281 const FaviconForURLParams& params, | 313 const FaviconForURLParams& params, |
| 282 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 314 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 283 const FaviconResultsCallback& callback, | 315 const FaviconResultsCallback& callback, |
| 284 CancelableTaskTracker* tracker) { | 316 CancelableTaskTracker* tracker) { |
| 285 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) || | 317 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) || |
| 286 params.page_url.SchemeIs(extensions::kExtensionScheme)) { | 318 params.page_url.SchemeIs(extensions::kExtensionScheme)) { |
| 287 CancelableTaskTracker::IsCanceledCallback is_canceled_cb; | 319 return GetFaviconForChromeURL(params.profile, params.page_url, |
| 288 CancelableTaskTracker::TaskId id = | 320 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_) { | 321 } else if (history_service_) { |
| 297 return history_service_->GetFaviconsForURL(params.page_url, | 322 return history_service_->GetFaviconsForURL(params.page_url, |
| 298 params.icon_types, | 323 params.icon_types, |
| 299 params.desired_size_in_dip, | 324 params.desired_size_in_dip, |
| 300 desired_scale_factors, | 325 desired_scale_factors, |
| 301 callback, | 326 callback, |
| 302 tracker); | 327 tracker); |
| 303 } else { | 328 } else { |
|
sky
2013/10/15 15:03:47
nit: no else here and 347.
michaelbai
2013/10/15 19:36:31
Done.
| |
| 304 return RunWithEmptyResultAsync(callback, tracker); | 329 return RunWithEmptyResultAsync(callback, tracker); |
| 305 } | 330 } |
| 306 } | 331 } |
| 307 | 332 |
| 333 CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURLImpl( | |
| 334 Profile* profile, | |
| 335 const GURL& page_url, | |
| 336 const std::vector<int>& icon_types, | |
| 337 int minimal_size_in_pixel, | |
| 338 const FaviconResultsCallback& callback, | |
| 339 CancelableTaskTracker* tracker) { | |
| 340 if (page_url.SchemeIs(chrome::kChromeUIScheme) || | |
| 341 page_url.SchemeIs(extensions::kExtensionScheme)) { | |
| 342 return GetFaviconForChromeURL(profile, page_url, | |
| 343 std::vector<ui::ScaleFactor>(), callback, tracker); | |
| 344 } else if (history_service_) { | |
| 345 return history_service_->GetLargestFaviconForURL(page_url, icon_types, | |
| 346 minimal_size_in_pixel, callback, tracker); | |
| 347 } else { | |
| 348 return RunWithEmptyResultAsync(callback, tracker); | |
| 349 } | |
| 350 } | |
| 351 | |
| 308 void FaviconService::RunFaviconImageCallbackWithBitmapResults( | 352 void FaviconService::RunFaviconImageCallbackWithBitmapResults( |
| 309 const FaviconImageCallback& callback, | 353 const FaviconImageCallback& callback, |
| 310 int desired_size_in_dip, | 354 int desired_size_in_dip, |
| 311 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) { | 355 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) { |
| 312 chrome::FaviconImageResult image_result; | 356 chrome::FaviconImageResult image_result; |
| 313 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( | 357 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( |
| 314 favicon_bitmap_results, | 358 favicon_bitmap_results, |
| 315 FaviconUtil::GetFaviconScaleFactors(), | 359 FaviconUtil::GetFaviconScaleFactors(), |
| 316 desired_size_in_dip); | 360 desired_size_in_dip); |
| 317 FaviconUtil::SetFaviconColorSpace(&image_result.image); | 361 FaviconUtil::SetFaviconColorSpace(&image_result.image); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 364 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, | 408 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, |
| 365 &resized_bitmap_data)) { | 409 &resized_bitmap_data)) { |
| 366 callback.Run(chrome::FaviconBitmapResult()); | 410 callback.Run(chrome::FaviconBitmapResult()); |
| 367 return; | 411 return; |
| 368 } | 412 } |
| 369 | 413 |
| 370 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( | 414 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( |
| 371 &resized_bitmap_data); | 415 &resized_bitmap_data); |
| 372 callback.Run(bitmap_result); | 416 callback.Run(bitmap_result); |
| 373 } | 417 } |
| OLD | NEW |