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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_ 5 #ifndef CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_
6 #define CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_ 6 #define CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/gtest_prod_util.h" 10 #include "base/gtest_prod_util.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 // current thumbnail score and places it in |score| and returns 92 // current thumbnail score and places it in |score| and returns
93 // true. Returns false otherwise. 93 // true. Returns false otherwise.
94 bool ThumbnailScoreForId(URLID id, ThumbnailScore* score); 94 bool ThumbnailScoreForId(URLID id, ThumbnailScore* score);
95 95
96 // Called by the to delete all old thumbnails and make a clean table. 96 // Called by the to delete all old thumbnails and make a clean table.
97 // Returns true on success. 97 // Returns true on success.
98 bool RecreateThumbnailTable(); 98 bool RecreateThumbnailTable();
99 99
100 // Favicon Bitmaps ----------------------------------------------------------- 100 // Favicon Bitmaps -----------------------------------------------------------
101 101
102 // Returns true if there are favicon bitmaps for |icon_id|. If
103 // |bitmap_size_listing| is non NULL, sets it to a listing of the favicon
104 // bitmap ids and their associated pixel sizes for the favicon with
105 // |icon_id|.
106 bool GetFaviconBitmapIDSizeList(
107 FaviconID icon_id,
108 std::vector<FaviconBitmapIDSize>* bitmap_id_size_list);
109
102 // Returns true if there are any matched bitmaps for the given |icon_id|. All 110 // Returns true if there are any matched bitmaps for the given |icon_id|. All
103 // matched results are returned if |favicon_bitmaps| is not NULL. 111 // matched results are returned if |favicon_bitmaps| is not NULL.
104 bool GetFaviconBitmaps(FaviconID icon_id, 112 bool GetFaviconBitmaps(FaviconID icon_id,
105 std::vector<FaviconBitmap>* favicon_bitmaps); 113 std::vector<FaviconBitmap>* favicon_bitmaps);
106 114
115 // Gets the favicon id, last updated time, bitmap data, and pixel size of the
116 // favicon bitmap at |bitmap_id|.
117 // Returns true if successful.
118 bool GetFaviconBitmap(FaviconBitmapID bitmap_id,
119 base::Time* last_updated,
120 scoped_refptr<base::RefCountedMemory>* png_icon_data,
121 gfx::Size* pixel_size);
122
123 // Sets the bitmap data and the last updated time for the favicon bitmap at
124 // |bitmap_id|. Returns true if successful.
125 bool SetFaviconBitmap(FaviconBitmapID bitmap_id,
126 scoped_refptr<base::RefCountedMemory> icon_data,
127 base::Time time);
128
107 // Adds a bitmap component at |pixel_size| for the favicon with |icon_id|. 129 // Adds a bitmap component at |pixel_size| for the favicon with |icon_id|.
108 // Only favicons representing a .ico file should have multiple favicon bitmaps 130 // Only favicons representing a .ico file should have multiple favicon bitmaps
109 // per favicon. 131 // per favicon.
110 // |icon_data| is the png encoded data. 132 // |icon_data| is the png encoded data.
111 // The |time| indicates the access time, and is used to detect when the 133 // The |time| indicates the access time, and is used to detect when the
112 // favicon should be refreshed. 134 // favicon should be refreshed.
113 // |pixel_size| is the pixel dimensions of |icon_data|. 135 // |pixel_size| is the pixel dimensions of |icon_data|.
114 // Returns the id of the added bitmap or 0 if unsuccessful. 136 // Returns the id of the added bitmap or 0 if unsuccessful.
115 FaviconBitmapID AddFaviconBitmap( 137 FaviconBitmapID AddFaviconBitmap(
116 FaviconID icon_id, 138 FaviconID icon_id,
117 const scoped_refptr<base::RefCountedMemory>& icon_data, 139 const scoped_refptr<base::RefCountedMemory>& icon_data,
118 base::Time time, 140 base::Time time,
119 const gfx::Size& pixel_size); 141 const gfx::Size& pixel_size);
120 142
121 // Deletes the favicon bitmaps for the favicon with with |icon_id|. 143 // Deletes the favicon bitmap with |bitmap_id|. Returns true if successful.
122 // Returns true if successful. 144 bool DeleteFaviconBitmap(FaviconBitmapID bitmap_id);
123 bool DeleteFaviconBitmapsForFavicon(FaviconID icon_id);
124 145
125 // Favicons ------------------------------------------------------------------ 146 // Favicons ------------------------------------------------------------------
126 147
127 // Updates the sizes associated with a favicon to |sizes|. See the comment 148 // Updates the sizes associated with a favicon to |sizes|. See comment at
128 // at the top of the .cc file for the format of the |sizes| parameter. 149 // top of the .ccc file for description of |sizes|.
129 bool SetFaviconSizes(FaviconID icon_id, const std::string& sizes); 150 bool SetFaviconSizes(FaviconID icon_id, const FaviconSizes& sizes);
130 151
131 // Sets the the favicon as out of date. This will set |last_updated| for all 152 // Sets the the favicon as out of date. This will set |last_updated| for all
132 // of the bitmaps for |icon_id| to be out of date. 153 // of the bitmaps for |icon_id| to be out of date.
133 bool SetFaviconOutOfDate(FaviconID icon_id); 154 bool SetFaviconOutOfDate(FaviconID icon_id);
134 155
135 // Returns the id of the entry in the favicon database with the specified url 156 // Returns the id of the entry in the favicon database with the specified url
136 // and icon type. If |required_icon_type| contains multiple icon types and 157 // and icon type. If |required_icon_type| contains multiple icon types and
137 // there are more than one matched icon in database, only one icon will be 158 // there are more than one matched icon in database, only one icon will be
138 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and 159 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and
139 // FAVICON, and the icon type is returned in icon_type parameter if it is not 160 // FAVICON.
140 // NULL.
141 // Returns 0 if no entry exists for the specified url. 161 // Returns 0 if no entry exists for the specified url.
142 FaviconID GetFaviconIDForFaviconURL(const GURL& icon_url, 162 FaviconID GetFaviconIDForFaviconURL(const GURL& icon_url,
143 int required_icon_type, 163 int required_icon_type);
144 IconType* icon_type);
145
146 // Gets the png encoded favicon, last updated time, icon_url and icon_type for
147 // the specified favicon id.
148 // TODO(pkotwicz): Remove this function.
149 bool GetFavicon(FaviconID icon_id,
150 base::Time* last_updated,
151 scoped_refptr<base::RefCountedMemory>* png_icon_data,
152 GURL* icon_url,
153 IconType* icon_type);
154 164
155 // Gets the icon_url, icon_type and sizes for the specified |icon_id|. 165 // Gets the icon_url, icon_type and sizes for the specified |icon_id|.
156 bool GetFaviconHeader(FaviconID icon_id, 166 bool GetFaviconHeader(FaviconID icon_id,
157 GURL* icon_url, 167 GURL* icon_url,
158 IconType* icon_type, 168 IconType* icon_type,
159 std::string* sizes); 169 FaviconSizes* sizes);
160 170
161 // Adds the favicon URL and icon type to the favicon db, returning its id. 171 // Adds favicon with |icon_url| and |icon_type| to the favicon db, returning
172 // its id.
162 FaviconID AddFavicon(const GURL& icon_url, IconType icon_type); 173 FaviconID AddFavicon(const GURL& icon_url, IconType icon_type);
163 174
164 // Adds a favicon with a single bitmap. This call is equivalent to calling 175 // Adds a favicon with a single bitmap. This call is equivalent to calling
165 // AddFavicon, SetFaviconSizes, and AddFaviconBitmap. 176 // AddFavicon, SetFaviconSizes, and AddFaviconBitmap.
166 FaviconID AddFavicon(const GURL& icon_url, 177 FaviconID AddFavicon(const GURL& icon_url,
167 IconType icon_type, 178 IconType icon_type,
168 const std::string& sizes, 179 const FaviconSizes& sizes,
169 const scoped_refptr<base::RefCountedMemory>& icon_data, 180 const scoped_refptr<base::RefCountedMemory>& icon_data,
170 base::Time time, 181 base::Time time,
171 const gfx::Size& pixel_size); 182 const gfx::Size& pixel_size);
172 183
173 // Delete the favicon with the provided id. Returns false on failure 184 // Delete the favicon with the provided id. Returns false on failure
174 bool DeleteFavicon(FaviconID id); 185 bool DeleteFavicon(FaviconID id);
175 186
176 // Icon Mapping -------------------------------------------------------------- 187 // Icon Mapping --------------------------------------------------------------
177 // 188 //
178 // Returns true if there is a matched icon mapping for the given page and 189 // Returns true if there is a matched icon mapping for the given page and
179 // icon type. 190 // icon type.
180 // The matched icon mapping is returned in the icon_mapping parameter if it is 191 // The matched icon mapping is returned in the icon_mapping parameter if it is
181 // not NULL. 192 // not NULL.
182 bool GetIconMappingForPageURL(const GURL& page_url, 193
183 IconType required_icon_type, 194 // Returns true if there are icon mappings for the given page and icon type.
184 IconMapping* icon_mapping); 195 // If |required_icon_types| contains multiple icon types and there is more
196 // than one matched icon type in the database, icons of only a single type
197 // will be returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON,
198 // and FAVICON.
199 // The matched icon mappings are returned in the |icon_mappings| parameter if
200 // it is not NULL.
201 bool GetIconMappingsForPageURL(const GURL& page_url,
202 int required_icon_types,
203 std::vector<IconMapping>* mapping_data);
185 204
186 // Returns true if there is any matched icon mapping for the given page. 205 // Returns true if there is any matched icon mapping for the given page.
187 // All matched icon mappings are returned in descent order of IconType if 206 // All matched icon mappings are returned in descent order of IconType if
188 // mapping_data is not NULL. 207 // mapping_data is not NULL.
189 bool GetIconMappingsForPageURL(const GURL& page_url, 208 bool GetIconMappingsForPageURL(const GURL& page_url,
190 std::vector<IconMapping>* mapping_data); 209 std::vector<IconMapping>* mapping_data);
191 210
192 // Adds a mapping between the given page_url and icon_id. 211 // Adds a mapping between the given page_url and icon_id.
193 // Returns the new mapping id if the adding succeeds, otherwise 0 is returned. 212 // Returns the new mapping id if the adding succeeds, otherwise 0 is returned.
194 IconMappingID AddIconMapping(const GURL& page_url, FaviconID icon_id); 213 IconMappingID AddIconMapping(const GURL& page_url, FaviconID icon_id);
195 214
196 // Updates the page and icon mapping for the given mapping_id with the given 215 // Updates the page and icon mapping for the given mapping_id with the given
197 // icon_id. 216 // icon_id.
198 // Returns true if the update succeeded. 217 // Returns true if the update succeeded.
199 bool UpdateIconMapping(IconMappingID mapping_id, FaviconID icon_id); 218 bool UpdateIconMapping(IconMappingID mapping_id, FaviconID icon_id);
200 219
201 // Deletes the icon mapping entries for the given page url. 220 // Deletes the icon mapping entries for the given page url.
202 // Returns true if the deletion succeeded. 221 // Returns true if the deletion succeeded.
203 bool DeleteIconMappings(const GURL& page_url); 222 bool DeleteIconMappings(const GURL& page_url);
204 223
224 // Deletes the icon mapping with |mapping_id|.
225 // Returns true if the deletion succeeded.
226 bool DeleteIconMapping(IconMappingID mapping_id);
227
205 // Checks whether a favicon is used by any URLs in the database. 228 // Checks whether a favicon is used by any URLs in the database.
206 bool HasMappingFor(FaviconID id); 229 bool HasMappingFor(FaviconID id);
207 230
208 // Clones the existing mappings from |old_page_url| if |new_page_url| has no 231 // Clones the existing mappings from |old_page_url| if |new_page_url| has no
209 // mappings. Otherwise, will leave mappings alone. 232 // mappings. Otherwise, will leave mappings alone.
210 bool CloneIconMapping(const GURL& old_page_url, const GURL& new_page_url); 233 bool CloneIconMappings(const GURL& old_page_url, const GURL& new_page_url);
211 234
212 // The class to enumerate icon mappings. Use InitIconMappingEnumerator to 235 // The class to enumerate icon mappings. Use InitIconMappingEnumerator to
213 // initialize. 236 // initialize.
214 class IconMappingEnumerator { 237 class IconMappingEnumerator {
215 public: 238 public:
216 IconMappingEnumerator(); 239 IconMappingEnumerator();
217 ~IconMappingEnumerator(); 240 ~IconMappingEnumerator();
218 241
219 // Get the next icon mapping, return false if no more are available. 242 // Get the next icon mapping, return false if no more are available.
220 bool GetNextIconMapping(IconMapping* icon_mapping); 243 bool GetNextIconMapping(IconMapping* icon_mapping);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 bool RenameAndDropThumbnails(const FilePath& old_db_file, 295 bool RenameAndDropThumbnails(const FilePath& old_db_file,
273 const FilePath& new_db_file); 296 const FilePath& new_db_file);
274 297
275 private: 298 private:
276 friend class ExpireHistoryBackend; 299 friend class ExpireHistoryBackend;
277 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, 300 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest,
278 GetFaviconAfterMigrationToTopSites); 301 GetFaviconAfterMigrationToTopSites);
279 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion4); 302 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion4);
280 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion5); 303 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion5);
281 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion6); 304 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, UpgradeToVersion6);
305 FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, FaviconSizesToAndFromString);
282 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping); 306 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping);
283 307
284 // Creates the thumbnail table, returning true if the table already exists 308 // Creates the thumbnail table, returning true if the table already exists
285 // or was successfully created. 309 // or was successfully created.
286 bool InitThumbnailTable(); 310 bool InitThumbnailTable();
287 311
288 // Helper function to handle cleanup on upgrade failures. 312 // Helper function to handle cleanup on upgrade failures.
289 sql::InitStatus CantUpgradeToVersion(int cur_version); 313 sql::InitStatus CantUpgradeToVersion(int cur_version);
290 314
291 // Adds support for the new metadata on web page thumbnails. 315 // Adds support for the new metadata on web page thumbnails.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 // Adds a mapping between the given page_url and icon_id; The mapping will be 368 // Adds a mapping between the given page_url and icon_id; The mapping will be
345 // added to temp_icon_mapping table if is_temporary is true. 369 // added to temp_icon_mapping table if is_temporary is true.
346 // Returns the new mapping id if the adding succeeds, otherwise 0 is returned. 370 // Returns the new mapping id if the adding succeeds, otherwise 0 is returned.
347 IconMappingID AddIconMapping(const GURL& page_url, 371 IconMappingID AddIconMapping(const GURL& page_url,
348 FaviconID icon_id, 372 FaviconID icon_id,
349 bool is_temporary); 373 bool is_temporary);
350 374
351 // Returns True if the current database is latest. 375 // Returns True if the current database is latest.
352 bool IsLatestVersion(); 376 bool IsLatestVersion();
353 377
378 // Converts the vector representation of sizes as passed into SetFaviconSizes
379 // to a string to store in the |favicons| database table.
380 // Format:
381 // Each widthxheight pair is separated by a space.
382 // Width and height are separated by a space.
383 // For instance, if sizes contains pixel sizes (16x16, 32x32), the
384 // string representation is "16 16 32 32".
385 static void FaviconSizesToDatabaseString(const FaviconSizes& sizes,
386 std::string* sizes_string);
387
388 // Converts the string representation of sizes as stored in the |favicons|
389 // database table to a vector.
390 // Returns true if there were no errors.
391 static bool DatabaseStringToFaviconSizes(const std::string sizes_string,
392 FaviconSizes* sizes);
393
354 sql::Connection db_; 394 sql::Connection db_;
355 sql::MetaTable meta_table_; 395 sql::MetaTable meta_table_;
356 396
357 // This object is created and managed by the history backend. We maintain an 397 // This object is created and managed by the history backend. We maintain an
358 // opaque pointer to the object for our use. 398 // opaque pointer to the object for our use.
359 // This can be NULL if there are no indexers registered to receive indexing 399 // This can be NULL if there are no indexers registered to receive indexing
360 // data from us. 400 // data from us.
361 const HistoryPublisher* history_publisher_; 401 const HistoryPublisher* history_publisher_;
362 402
363 // True if migration to TopSites has been done and the thumbnails 403 // True if migration to TopSites has been done and the thumbnails
364 // table should not be used. 404 // table should not be used.
365 bool use_top_sites_; 405 bool use_top_sites_;
366 }; 406 };
367 407
368 } // namespace history 408 } // namespace history
369 409
370 #endif // CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_ 410 #endif // CHROME_BROWSER_HISTORY_THUMBNAIL_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698