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

Unified Diff: chrome/browser/history/thumbnail_database.h

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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
Index: chrome/browser/history/thumbnail_database.h
diff --git a/chrome/browser/history/thumbnail_database.h b/chrome/browser/history/thumbnail_database.h
index 7a1780f776fc909fe8e6291e41b6e6752ebe2fbd..feb170906db6adee2b2a9000e98552f412dc6f39 100644
--- a/chrome/browser/history/thumbnail_database.h
+++ b/chrome/browser/history/thumbnail_database.h
@@ -99,11 +99,33 @@ class ThumbnailDatabase {
// Favicon Bitmaps -----------------------------------------------------------
+ // Returns true if there are favicon bitmaps for |icon_id|. If
+ // |bitmap_size_listing| is non NULL, sets it to a listing of the favicon
+ // bitmap ids and their associated pixel sizes for the favicon with
+ // |icon_id|.
+ bool GetFaviconBitmapIDSizeList(
+ FaviconID icon_id,
+ std::vector<FaviconBitmapIDSize>* bitmap_id_size_list);
+
// Returns true if there are any matched bitmaps for the given |icon_id|. All
// matched results are returned if |favicon_bitmaps| is not NULL.
bool GetFaviconBitmaps(FaviconID icon_id,
std::vector<FaviconBitmap>* favicon_bitmaps);
+ // Gets the favicon id, last updated time, bitmap data, and pixel size of the
+ // favicon bitmap at |bitmap_id|.
+ // Returns true if successful.
+ bool GetFaviconBitmap(FaviconBitmapID bitmap_id,
+ base::Time* last_updated,
+ scoped_refptr<base::RefCountedMemory>* png_icon_data,
+ gfx::Size* pixel_size);
+
+ // Sets the bitmap data and the last updated time for the favicon bitmap at
+ // |bitmap_id|. Returns true if successful.
+ bool SetFaviconBitmap(FaviconBitmapID bitmap_id,
+ scoped_refptr<base::RefCountedMemory> icon_data,
+ base::Time time);
+
// Adds a bitmap component at |pixel_size| for the favicon with |icon_id|.
// Only favicons representing a .ico file should have multiple favicon bitmaps
// per favicon.
@@ -118,15 +140,14 @@ class ThumbnailDatabase {
base::Time time,
const gfx::Size& pixel_size);
- // Deletes the favicon bitmaps for the favicon with with |icon_id|.
- // Returns true if successful.
- bool DeleteFaviconBitmapsForFavicon(FaviconID icon_id);
+ // Deletes the favicon bitmap with |bitmap_id|. Returns true if successful.
+ bool DeleteFaviconBitmap(FaviconBitmapID bitmap_id);
// Favicons ------------------------------------------------------------------
- // Updates the sizes associated with a favicon to |sizes|. See the comment
- // at the top of the .cc file for the format of the |sizes| parameter.
- bool SetFaviconSizes(FaviconID icon_id, const std::string& sizes);
+ // Updates the sizes associated with a favicon to |sizes|. See comment at
+ // top of the .ccc file for description of |sizes|.
+ bool SetFaviconSizes(FaviconID icon_id, const FaviconSizes& sizes);
// Sets the the favicon as out of date. This will set |last_updated| for all
// of the bitmaps for |icon_id| to be out of date.
@@ -136,36 +157,26 @@ class ThumbnailDatabase {
// and icon type. If |required_icon_type| contains multiple icon types and
// there are more than one matched icon in database, only one icon will be
// returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and
- // FAVICON, and the icon type is returned in icon_type parameter if it is not
- // NULL.
+ // FAVICON.
// Returns 0 if no entry exists for the specified url.
FaviconID GetFaviconIDForFaviconURL(const GURL& icon_url,
- int required_icon_type,
- IconType* icon_type);
-
- // Gets the png encoded favicon, last updated time, icon_url and icon_type for
- // the specified favicon id.
- // TODO(pkotwicz): Remove this function.
- bool GetFavicon(FaviconID icon_id,
- base::Time* last_updated,
- scoped_refptr<base::RefCountedMemory>* png_icon_data,
- GURL* icon_url,
- IconType* icon_type);
+ int required_icon_type);
// Gets the icon_url, icon_type and sizes for the specified |icon_id|.
bool GetFaviconHeader(FaviconID icon_id,
GURL* icon_url,
IconType* icon_type,
- std::string* sizes);
+ FaviconSizes* sizes);
- // Adds the favicon URL and icon type to the favicon db, returning its id.
+ // Adds favicon with |icon_url| and |icon_type| to the favicon db, returning
+ // its id.
FaviconID AddFavicon(const GURL& icon_url, IconType icon_type);
// Adds a favicon with a single bitmap. This call is equivalent to calling
// AddFavicon, SetFaviconSizes, and AddFaviconBitmap.
FaviconID AddFavicon(const GURL& icon_url,
IconType icon_type,
- const std::string& sizes,
+ const FaviconSizes& sizes,
const scoped_refptr<base::RefCountedMemory>& icon_data,
base::Time time,
const gfx::Size& pixel_size);
@@ -179,9 +190,17 @@ class ThumbnailDatabase {
// icon type.
// The matched icon mapping is returned in the icon_mapping parameter if it is
// not NULL.
- bool GetIconMappingForPageURL(const GURL& page_url,
- IconType required_icon_type,
- IconMapping* icon_mapping);
+
+ // Returns true if there are icon mappings for the given page and icon type.
+ // If |required_icon_types| contains multiple icon types and there is more
+ // than one matched icon type in the database, icons of only a single type
+ // will be returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON,
+ // and FAVICON.
+ // The matched icon mappings are returned in the |icon_mappings| parameter if
+ // it is not NULL.
+ bool GetIconMappingsForPageURL(const GURL& page_url,
+ int required_icon_types,
+ std::vector<IconMapping>* mapping_data);
// Returns true if there is any matched icon mapping for the given page.
// All matched icon mappings are returned in descent order of IconType if
@@ -202,12 +221,16 @@ class ThumbnailDatabase {
// Returns true if the deletion succeeded.
bool DeleteIconMappings(const GURL& page_url);
+ // Deletes the icon mapping with |mapping_id|.
+ // Returns true if the deletion succeeded.
+ bool DeleteIconMapping(IconMappingID mapping_id);
+
// Checks whether a favicon is used by any URLs in the database.
bool HasMappingFor(FaviconID id);
// Clones the existing mappings from |old_page_url| if |new_page_url| has no
// mappings. Otherwise, will leave mappings alone.
- bool CloneIconMapping(const GURL& old_page_url, const GURL& new_page_url);
+ bool CloneIconMappings(const GURL& old_page_url, const GURL& new_page_url);
// The class to enumerate icon mappings. Use InitIconMappingEnumerator to
// initialize.
@@ -279,6 +302,7 @@ class ThumbnailDatabase {
FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion4);
FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion5);
FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion6);
+ FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, FaviconSizesToAndFromString);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping);
// Creates the thumbnail table, returning true if the table already exists
@@ -351,6 +375,22 @@ class ThumbnailDatabase {
// Returns True if the current database is latest.
bool IsLatestVersion();
+ // Converts the vector representation of sizes as passed into SetFaviconSizes
+ // to a string to store in the |favicons| database table.
+ // Format:
+ // Each widthxheight pair is separated by a space.
+ // Width and height are separated by a space.
+ // For instance, if sizes contains pixel sizes (16x16, 32x32), the
+ // string representation is "16 16 32 32".
+ static void FaviconSizesToDatabaseString(const FaviconSizes& sizes,
+ std::string* sizes_string);
+
+ // Converts the string representation of sizes as stored in the |favicons|
+ // database table to a vector.
+ // Returns true if there were no errors.
+ static bool DatabaseStringToFaviconSizes(const std::string sizes_string,
+ FaviconSizes* sizes);
+
sql::Connection db_;
sql::MetaTable meta_table_;

Powered by Google App Engine
This is Rietveld 408576698