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

Unified Diff: chrome/browser/favicon/favicon_service.cc

Issue 26563004: Find Favicon in priority of icon_type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/favicon/favicon_service.h ('k') | chrome/browser/history/history_backend.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/favicon/favicon_service.cc
diff --git a/chrome/browser/favicon/favicon_service.cc b/chrome/browser/favicon/favicon_service.cc
index fd0f9eb557c4cd9931b4a70dee6df9e80020add7..9f0ff332cd1a5fe2e1caa498497ff1eb9ec0a895 100644
--- a/chrome/browser/favicon/favicon_service.cc
+++ b/chrome/browser/favicon/favicon_service.cc
@@ -45,6 +45,22 @@ CancelableTaskTracker::TaskId RunWithEmptyResultAsync(
Bind(callback, std::vector<chrome::FaviconBitmapResult>()));
}
+// Return the TaskId to retreive the favicon from chrome specific URL.
+CancelableTaskTracker::TaskId GetFaviconForChromeURL(
+ Profile* profile,
+ const GURL& page_url,
+ const std::vector<ui::ScaleFactor>& desired_scale_factors,
+ const FaviconService::FaviconResultsCallback& callback,
+ CancelableTaskTracker* tracker) {
+ CancelableTaskTracker::IsCanceledCallback is_canceled_cb;
+ CancelableTaskTracker::TaskId id = tracker->NewTrackedTaskId(&is_canceled_cb);
+ FaviconService::FaviconResultsCallback cancelable_cb =
+ Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback);
+ ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(profile,
+ page_url, desired_scale_factors, cancelable_cb);
+ return id;
+}
+
} // namespace
FaviconService::FaviconService(HistoryService* history_service)
@@ -169,6 +185,29 @@ CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForURL(
tracker);
}
+CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURL(
+ Profile* profile,
+ const GURL& page_url,
+ const std::vector<int>& icon_types,
+ int minimum_size_in_pixels,
+ const FaviconRawCallback& callback,
+ CancelableTaskTracker* tracker) {
+ FaviconResultsCallback favicon_results_callback =
+ Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults,
+ base::Unretained(this), callback, 0, ui::ScaleFactor());
+ if (page_url.SchemeIs(chrome::kChromeUIScheme) ||
+ page_url.SchemeIs(extensions::kExtensionScheme)) {
+ std::vector<ui::ScaleFactor> scale_factor;
+ scale_factor.push_back(ui::SCALE_FACTOR_100P);
+ return GetFaviconForChromeURL(profile, page_url, scale_factor,
+ favicon_results_callback, tracker);
+ } else if (history_service_) {
+ return history_service_->GetLargestFaviconForURL(page_url, icon_types,
+ minimum_size_in_pixels, callback, tracker);
+ }
+ return RunWithEmptyResultAsync(favicon_results_callback, tracker);
+}
+
CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL(
const FaviconForURLParams& params,
const FaviconResultsCallback& callback,
@@ -284,15 +323,8 @@ CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl(
CancelableTaskTracker* tracker) {
if (params.page_url.SchemeIs(chrome::kChromeUIScheme) ||
params.page_url.SchemeIs(extensions::kExtensionScheme)) {
- CancelableTaskTracker::IsCanceledCallback is_canceled_cb;
- CancelableTaskTracker::TaskId id =
- tracker->NewTrackedTaskId(&is_canceled_cb);
-
- FaviconResultsCallback cancelable_cb =
- Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback);
- ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(
- params.profile, params.page_url, desired_scale_factors, cancelable_cb);
- return id;
+ return GetFaviconForChromeURL(params.profile, params.page_url,
+ desired_scale_factors, callback, tracker);
} else if (history_service_) {
return history_service_->GetFaviconsForURL(params.page_url,
params.icon_types,
@@ -300,9 +332,8 @@ CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl(
desired_scale_factors,
callback,
tracker);
- } else {
- return RunWithEmptyResultAsync(callback, tracker);
}
+ return RunWithEmptyResultAsync(callback, tracker);
}
void FaviconService::RunFaviconImageCallbackWithBitmapResults(
« no previous file with comments | « chrome/browser/favicon/favicon_service.h ('k') | chrome/browser/history/history_backend.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698