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

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

Issue 331163003: [Refactor] Change FaviconService API to take in a desired pixel size (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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_handler.cc ('k') | chrome/browser/favicon/favicon_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/favicon/favicon_service.h
diff --git a/chrome/browser/favicon/favicon_service.h b/chrome/browser/favicon/favicon_service.h
index 5593d8b273d3de0bbd86386ddc9adab23543ccb7..8827353c211c48e9b2351e3354c53c769d150082 100644
--- a/chrome/browser/favicon/favicon_service.h
+++ b/chrome/browser/favicon/favicon_service.h
@@ -22,7 +22,8 @@ struct ImportedFaviconUsage;
class Profile;
// The favicon service provides methods to access favicons. It calls the history
-// backend behind the scenes.
+// backend behind the scenes. The callbacks are run asynchronously, even in the
+// case of an error.
class FaviconService : public KeyedService {
public:
// TODO(jif): Remove usage of Profile. http://crbug.com/378208.
@@ -31,56 +32,36 @@ class FaviconService : public KeyedService {
virtual ~FaviconService();
- // Auxiliary argument structure for requesting favicons for URLs.
- struct FaviconForPageURLParams {
- FaviconForPageURLParams(const GURL& page_url,
- int icon_types,
- int desired_size_in_dip)
- : page_url(page_url),
- icon_types(icon_types),
- desired_size_in_dip(desired_size_in_dip) {}
-
- GURL page_url;
- int icon_types;
- int desired_size_in_dip;
- };
-
// We usually pass parameters with pointer to avoid copy. This function is a
// helper to run FaviconResultsCallback with pointer parameters.
static void FaviconResultsCallbackRunner(
const favicon_base::FaviconResultsCallback& callback,
const std::vector<favicon_base::FaviconRawBitmapResult>* results);
- // The first argument of |callback| is a |const FaviconImageResult&|. Of which
- // |FaviconImageResult::image| is constructed from the bitmaps for the
- // passed in URL and icon types which most wich closely match the passed in
- // |desired_size_in_dip| at the resource scale factors supported by the
- // current platform (eg MacOS) in addition to 1x.
- // |FaviconImageResult::icon_url| is the favicon that the favicon bitmaps in
- // |image| originate from.
- // TODO(pkotwicz): Enable constructing |image| from bitmaps from several
- // icon URLs.
+ //////////////////////////////////////////////////////////////////////////////
+ // Methods to request favicon bitmaps from the history backend for |icon_url|.
+ // |icon_url| is the URL of the icon itself.
+ // (e.g. <http://www.google.com/favicon.ico>)
- // Requests the favicon at |icon_url| of |icon_type| whose size most closely
- // matches |desired_size_in_dip|. If |desired_size_in_dip| is 0, the largest
- // favicon bitmap at |icon_url| is returned. |consumer| is notified when the
- // bits have been fetched. |icon_url| is the URL of the icon itself, e.g.
- // <http://www.google.com/favicon.ico>.
- // Each of the three methods below differs in the format of the callback and
- // the requested scales. All of the resource scale factors supported by the
- // current platform (eg MacOS) are requested for GetFaviconImage().
+ // Requests the favicon at |icon_url| of type favicon_base::FAVICON and of
+ // size gfx::kFaviconSize. The returned gfx::Image is populated with
+ // representations for all of the scale factors supported by the platform
+ // (e.g. MacOS). If data is unavailable for some or all of the scale factors,
+ // the bitmaps with the best matching sizes are resized.
base::CancelableTaskTracker::TaskId GetFaviconImage(
const GURL& icon_url,
- favicon_base::IconType icon_type,
- int desired_size_in_dip,
const favicon_base::FaviconImageCallback& callback,
base::CancelableTaskTracker* tracker);
+ // Requests the favicon at |icon_url| of |icon_type| of size
+ // |desired_size_in_pixel|. If there is no favicon of size
+ // |desired_size_in_pixel|, the favicon bitmap which best matches
+ // |desired_size_in_pixel| is resized. If |desired_size_in_pixel| is 0,
+ // the largest favicon bitmap is returned.
base::CancelableTaskTracker::TaskId GetRawFavicon(
const GURL& icon_url,
favicon_base::IconType icon_type,
- int desired_size_in_dip,
- float desired_favicon_scale,
+ int desired_size_in_pixel,
const favicon_base::FaviconRawBitmapCallback& callback,
base::CancelableTaskTracker* tracker);
@@ -98,6 +79,53 @@ class FaviconService : public KeyedService {
const favicon_base::FaviconResultsCallback& callback,
base::CancelableTaskTracker* tracker);
+ //////////////////////////////////////////////////////////////////////////////
+ // Methods to request favicon bitmaps from the history backend for |page_url|.
+ // |page_url| is the web page the favicon is associated with.
+ // (e.g. <http://www.google.com>)
+
+ // Requests the favicon for the page at |page_url| of type
+ // favicon_base::FAVICON and of size gfx::kFaviconSize. The returned
+ // gfx::Image is populated with representations for all of the scale factors
+ // supported by the platform (e.g. MacOS). If data is unavailable for some or
+ // all of the scale factors, the bitmaps with the best matching sizes are
+ // resized.
+ base::CancelableTaskTracker::TaskId GetFaviconImageForPageURL(
+ const GURL& page_url,
+ const favicon_base::FaviconImageCallback& callback,
+ base::CancelableTaskTracker* tracker);
+
+ // Requests the favicon for the page at |page_url| with one of |icon_types|
+ // and with |desired_size_in_pixel|. |icon_types| can be any combination of
+ // IconTypes. If favicon bitmaps for several IconTypes are available, the
+ // favicon bitmap is chosen in the priority of TOUCH_PRECOMPOSED_ICON,
+ // TOUCH_ICON and FAVICON. If there is no favicon bitmap of size
+ // |desired_size_in_pixel|, the favicon bitmap which best matches
+ // |desired_size_in_pixel| is resized. If |desired_size_in_pixel| is 0,
+ // the largest favicon bitmap is returned. Results with a higher priority
+ // IconType are preferred over an exact match of the favicon bitmap size.
+ base::CancelableTaskTracker::TaskId GetRawFaviconForPageURL(
+ const GURL& page_url,
+ int icon_types,
+ int desired_size_in_pixel,
+ const favicon_base::FaviconRawBitmapCallback& callback,
+ base::CancelableTaskTracker* tracker);
+
+ // See HistoryService::GetLargestFaviconForPageURL().
+ base::CancelableTaskTracker::TaskId GetLargestRawFaviconForPageURL(
+ const GURL& page_url,
+ const std::vector<int>& icon_types,
+ int minimum_size_in_pixels,
+ const favicon_base::FaviconRawBitmapCallback& callback,
+ base::CancelableTaskTracker* tracker);
+
+ base::CancelableTaskTracker::TaskId GetFaviconForPageURL(
+ const GURL& page_url,
+ int icon_types,
+ int desired_size_in_dip,
+ const favicon_base::FaviconResultsCallback& callback,
+ base::CancelableTaskTracker* tracker);
+
// Set the favicon mappings to |page_url| for |icon_types| in the history
// database.
// Sample |icon_urls|:
@@ -126,41 +154,6 @@ class FaviconService : public KeyedService {
const favicon_base::FaviconResultsCallback& callback,
base::CancelableTaskTracker* tracker);
- // Requests the favicons of any of |icon_types| whose pixel sizes most
- // closely match |desired_size_in_dip| and desired scale for a web
- // page URL. If |desired_size_in_dip| is 0, the largest favicon for the web
- // page URL is returned. |callback| is run when the bits have been fetched.
- // |icon_types| can be any combination of IconType value, but only one icon
- // will be returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON and
- // FAVICON. Each of the three methods below differs in the format of the
- // callback and the requested scales. All of the resource scale factors
- // supported by the current platform (eg MacOS) are requested for
- // GetFaviconImageForPageURL().
- // Note. |callback| is always run asynchronously.
- base::CancelableTaskTracker::TaskId GetFaviconImageForPageURL(
- const FaviconForPageURLParams& params,
- const favicon_base::FaviconImageCallback& callback,
- base::CancelableTaskTracker* tracker);
-
- base::CancelableTaskTracker::TaskId GetRawFaviconForPageURL(
- const FaviconForPageURLParams& params,
- float desired_favicon_scale,
- const favicon_base::FaviconRawBitmapCallback& callback,
- base::CancelableTaskTracker* tracker);
-
- // See HistoryService::GetLargestFaviconForPageURL().
- base::CancelableTaskTracker::TaskId GetLargestRawFaviconForPageURL(
- const GURL& page_url,
- const std::vector<int>& icon_types,
- int minimum_size_in_pixels,
- const favicon_base::FaviconRawBitmapCallback& callback,
- base::CancelableTaskTracker* tracker);
-
- base::CancelableTaskTracker::TaskId GetFaviconForPageURL(
- const FaviconForPageURLParams& params,
- const favicon_base::FaviconResultsCallback& callback,
- base::CancelableTaskTracker* tracker);
-
// Used to request a bitmap for the favicon with |favicon_id| which is not
// resized from the size it is stored at in the database. If there are
// multiple favicon bitmaps for |favicon_id|, the largest favicon bitmap is
@@ -227,7 +220,8 @@ class FaviconService : public KeyedService {
// Helper function for GetFaviconImageForPageURL(), GetRawFaviconForPageURL()
// and GetFaviconForPageURL().
base::CancelableTaskTracker::TaskId GetFaviconForPageURLImpl(
- const FaviconForPageURLParams& params,
+ const GURL& page_url,
+ int icon_types,
const std::vector<int>& desired_sizes_in_pixel,
const favicon_base::FaviconResultsCallback& callback,
base::CancelableTaskTracker* tracker);
« no previous file with comments | « chrome/browser/favicon/favicon_handler.cc ('k') | chrome/browser/favicon/favicon_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698