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

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

Issue 10910212: Enable hidpi favicons for favicons history does not know about (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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_unittest.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 3e95786f747b62b4db6356739632971b8b4380f1..c22ad1b949634b74c87a726a731401ac204bcce0 100644
--- a/chrome/browser/favicon/favicon_service.h
+++ b/chrome/browser/favicon/favicon_service.h
@@ -85,11 +85,11 @@ class FaviconService : public CancelableRequestProvider,
// The third argument is a map of the icon URLs mapped to |page_url| to
// the sizes at which the favicon is available from the web.
// b) If the callback is called as a result of GetFavicon() or
- // UpdateFaviconMappingAndFetch():
- // The third argument is a map with a single element with the passed in
- // |icon_url| to the vector of sizes of the favicon bitmaps at that URL. If
- // |icon_url| is not known to the history backend, an empty map is
- // returned.
+ // UpdateFaviconMappingsAndFetch():
+ // The third argument is a map of the subset of |icon_urls| known to the
+ // history backend to a vector of sizes of the favicon bitmaps at each
+ // URL. If none of |icon_urls| are known to the history backend, an empty
+ // map is returned.
// See history_types.h for more information about IconURLSizesMap.
typedef base::Callback<
void(Handle, // handle
@@ -127,16 +127,33 @@ class FaviconService : public CancelableRequestProvider,
CancelableRequestConsumerBase* consumer,
const FaviconResultsCallback& callback);
- // Fetches the |icon_type| of favicon at |icon_url|, sending the results to
- // the given |callback|. If the favicon has previously been set via
- // SetFavicon(), then the favicon URL for |page_url| and all redirects is set
- // to |icon_url|. If the favicon has not been set, the database is not
- // updated.
- Handle UpdateFaviconMappingAndFetch(const GURL& page_url,
- const GURL& icon_url,
- history::IconType icon_type,
- CancelableRequestConsumerBase* consumer,
- const FaviconResultsCallback& callback);
+ // Set the favicon mappings to |page_url| for |icon_types| in the history
+ // database.
+ // Sample |icon_urls|:
+ // { ICON_URL1 -> TOUCH_ICON, known to the database,
+ // ICON_URL2 -> TOUCH_ICON, not known to the database,
+ // ICON_URL3 -> TOUCH_PRECOMPOSED_ICON, known to the database }
+ // The new mappings are computed from |icon_urls| with these rules:
+ // 1) Any urls in |icon_urls| which are not already known to the database are
+ // rejected.
+ // Sample new mappings to |page_url|: { ICON_URL1, ICON_URL3 }
+ // 2) If |icon_types| has multiple types, the mappings are only set for the
+ // largest icon type.
+ // Sample new mappings to |page_url|: { ICON_URL3 }
+ // |icon_types| can only have multiple IconTypes if
+ // |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON.
+ // The favicon bitmaps which most closely match |desired_size_in_dip|
+ // and |desired_scale_factors| from the favicons which were just mapped
+ // to |page_url| are returned. If |desired_size_in_dip| is 0, the
+ // largest favicon bitmap is returned.
+ Handle UpdateFaviconMappingsAndFetch(
+ const GURL& page_url,
+ const std::vector<GURL>& icon_urls,
+ int icon_types,
+ int desired_size_in_dip,
+ const std::vector<ui::ScaleFactor>& desired_scale_factors,
+ CancelableRequestConsumerBase* consumer,
+ const FaviconResultsCallback& callback);
// Requests the favicons of any of |icon_types| whose pixel sizes most
// closely match |desired_size_in_dip| and desired scale factors for a web
@@ -184,11 +201,42 @@ class FaviconService : public CancelableRequestProvider,
void SetImportedFavicons(
const std::vector<history::ImportedFaviconUsage>& favicon_usage);
- // Sets the favicon for a page.
- void SetFavicon(const GURL& page_url,
- const GURL& icon_url,
- const std::vector<unsigned char>& image_data,
- history::IconType icon_type);
+ // Set the favicon for |page_url| for |icon_type| in the thumbnail database.
+ // Unlike SetFavicons(), this method will not delete preexisting bitmap data
+ // which is associated to |page_url| if at all possible. Use this method if
+ // the favicon bitmaps for any of ui::GetSupportedScaleFactors() are not
+ // known. If a favicon bitmap at |icon_url| with |pixel_size| is already in
+ // the database:
+ // The favicon bitmap for |icon_url| will be updated with |bitmap_data|.
+ // If a favicon bitmap at |icon_url| with |pixel_size| is not in the database:
+ // A new favicon bitmap (and favicon if necessary) will be created. The
+ // favicon sizes for |icon_url| will be set to the default favicon sizes to
+ // indicate that the favicon sizes are no longer known.
+ // Arbitrary favicons and favicon bitmaps associated to |page_url| and
+ // |icon_url| may be deleted in order to maintain the restriction for the
+ // max favicons per page, and max favicon bitmaps per icon URL.
+ // TODO(pkotwicz): Remove once no longer required by sync.
+ void MergeFavicon(const GURL& page_url,
+ const GURL& icon_url,
+ history::IconType icon_type,
+ scoped_refptr<base::RefCountedMemory> bitmap_data,
+ const gfx::Size& pixel_size);
+
+ // Set the favicon for |page_url| for |icon_type| in the thumbnail database.
+ // |icon_url| is the single favicon to map to |page_url|. Mappings from
+ // |page_url| to favicons at different icon URLs will be deleted.
+ // A favicon bitmap is added for each image rep in |image|. Any preexisting
+ // bitmap data for |icon_url| is deleted. It is important that |image|
+ // contains image reps for all of ui::GetSupportedScaleFactors(). Use
+ // MergeFavicon() if it does not.
+ // TODO(pkotwicz): Save unresized favicon bitmaps to the database.
+ // TODO(pkotwicz): Support adding favicons for multiple icon URLs to the
+ // thumbnail database.
+ void SetFavicons(
+ const GURL& page_url,
+ const GURL& icon_url,
+ history::IconType icon_type,
+ const gfx::Image& image);
private:
HistoryService* history_service_;
« no previous file with comments | « chrome/browser/favicon/favicon_handler_unittest.cc ('k') | chrome/browser/favicon/favicon_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698