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

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

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes as requested by Sky and stevenjb 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/history_types.h
diff --git a/chrome/browser/history/history_types.h b/chrome/browser/history/history_types.h
index 6ae787e32c0c599a0088fe98730ecb62f5ffe57a..ecc4acf19cde34d6503890a32d4a6e613141054a 100644
--- a/chrome/browser/history/history_types.h
+++ b/chrome/browser/history/history_types.h
@@ -274,23 +274,6 @@ typedef std::vector<VisitRow> VisitVector;
// used by HistoryBackend::AddVisits() to create new visits for a URL.
typedef std::pair<base::Time, content::PageTransition> VisitInfo;
-// Favicons -------------------------------------------------------------------
-
-// Used by the importer to set favicons for imported bookmarks.
-struct ImportedFaviconUsage {
- ImportedFaviconUsage();
- ~ImportedFaviconUsage();
-
- // The URL of the favicon.
- GURL favicon_url;
-
- // The raw png-encoded data.
- std::vector<unsigned char> png_data;
-
- // The list of URLs using this favicon.
- std::set<GURL> urls;
-};
-
// PageVisit ------------------------------------------------------------------
// Represents a simplified version of a visit for external users. Normally,
@@ -768,40 +751,122 @@ struct IconMapping {
// The unique id of the icon.
FaviconID icon_id;
+ // The url of the icon.
+ GURL icon_url;
+
// The type of icon.
IconType icon_type;
};
+// Sizes represents the sizes that the thumbnail database knows a favicon is
+// available at from the web. This can be different from the pixel sizes of
+// the favicon bitmaps stored for the favicon. For instance, if a web page has
+// a .ico favicon with bitmaps of pixel sizes (16x16, 24x24, 32x32),
+// FaviconSizes::has_size will be true for all three pixel sizes regardless of
+// whether bitmaps for all three pixel sizes are stored in the favicon_bitmaps
+// database table. However, the pixel sizes of favicon bitmaps stored for a
+// FaviconID must be a subset of the FaviconSizes for the favicon.
+// FaviconSizes intentionally supports copy and assign.
+class FaviconSizes {
+ public:
+ FaviconSizes();
+ FaviconSizes(const std::string& string_representation);
+ FaviconSizes(const std::vector<gfx::Size>& vector_representation);
+ ~FaviconSizes();
+
+ // Inserts size to the list of sizes supported by the favicon.
+ void InsertSize(const gfx::Size& size);
+
+ // Returns true if |size| is supported by the favicon.
+ bool has_size(const gfx::Size& size) const {
+ return sizes_.find(size) != sizes_.end();
+ }
+
+ size_t num_sizes() const { return sizes_.size(); }
+
+ // Returns string representation of sizes.
+ // 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".
+ std::string ToString() const;
+
+ // Returns vector representation of sizes.
+ std::vector<gfx::Size> ToVector() const;
+
+ private:
+ std::set<gfx::Size> sizes_;
+};
+
+// Defines a favicon bitmap stored in the history backend.
+struct FaviconDataElement {
+ FaviconDataElement();
+ ~FaviconDataElement();
+
+ // The bits of the bitmap.
+ scoped_refptr<base::RefCountedMemory> bitmap_data;
+
+ // The pixel dimensions of |bitmap_data|.
+ gfx::Size pixel_size;
+
+ // The icon's URL.
+ GURL icon_url;
+};
+
+// Mapping of icon URL to the sizes the favicon is available at from the web.
+typedef std::map<GURL, FaviconSizes> IconURLSizesMap;
+
// Defines the favicon stored in history backend.
struct FaviconData {
FaviconData();
~FaviconData();
- // Returns true if the icon is known and image has data.
+ // Returns true if the icon is known, there is at least one element in
+ // |elements| and all |elements| have valid data.
bool is_valid();
// Indicates whether the icon is known by the history backend.
bool known_icon;
- // The bits of image.
- scoped_refptr<base::RefCountedMemory> image_data;
-
- // Indicates whether image is expired.
+ // Indicates whether at least one of the bitmaps in |elements| is expired.
bool expired;
- // The icon's URL.
- GURL icon_url;
-
// The type of favicon.
history::IconType icon_type;
+
+ // Each entry in |elements| represents a favicon bitmap at a different pixel
+ // size.
+ // If a |pixel_size| parameter was passed in order to get the favicon data,
+ // |elements| will have a single entry with the best match for |pixel_size|.
+ std::vector<FaviconDataElement> elements;
+
+ // Mapping of icon URL to the sizes that the favicon at the icon URL is
+ // available at from the web.
+ IconURLSizesMap icon_url_sizes;
+};
+
+// Defines a favicon bitmap and its associated pixel size.
+struct FaviconBitmapIDSize {
+ FaviconBitmapIDSize();
+ ~FaviconBitmapIDSize();
+
+ // The unique id of the favicon bitmap.
+ FaviconBitmapID bitmap_id;
+
+ // The pixel dimensions of the associated bitmap.
+ gfx::Size pixel_size;
};
// Defines a favicon bitmap stored in the history backend.
struct FaviconBitmap {
+ FaviconBitmap();
+ ~FaviconBitmap();
+
// The unique id of the bitmap.
FaviconBitmapID bitmap_id;
- // The id of the favicon to which the bitmap belongs to.
+ // The id of the favicon to which the bitmap belongs.
FaviconID icon_id;
// Time at which |bitmap_data| was last updated.
@@ -814,6 +879,21 @@ struct FaviconBitmap {
gfx::Size pixel_size;
};
+// Used by the importer to set favicons for imported bookmarks.
+struct ImportedFaviconUsage {
+ ImportedFaviconUsage();
+ ~ImportedFaviconUsage();
+
+ // The URL of the favicon.
+ GURL favicon_url;
+
+ // The raw png-encoded data.
+ std::vector<unsigned char> png_data;
+
+ // The list of URLs using this favicon.
+ std::set<GURL> urls;
+};
+
// Abbreviated information about a visit.
struct BriefVisitInfo {
URLID url_id;

Powered by Google App Engine
This is Rietveld 408576698