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

Side by Side Diff: chrome/browser/history/history_backend.h

Issue 11746010: Cleanup history favicon code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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
« no previous file with comments | « chrome/browser/history/history.cc ('k') | chrome/browser/history/history_backend.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_HISTORY_BACKEND_H_ 5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
6 #define CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_ 6 #define CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 // 251 //
252 // Exposed for testing reasons. 252 // Exposed for testing reasons.
253 void GetPageThumbnailDirectly( 253 void GetPageThumbnailDirectly(
254 const GURL& page_url, 254 const GURL& page_url,
255 scoped_refptr<base::RefCountedBytes>* data); 255 scoped_refptr<base::RefCountedBytes>* data);
256 256
257 void MigrateThumbnailsDatabase(); 257 void MigrateThumbnailsDatabase();
258 258
259 // Favicon ------------------------------------------------------------------- 259 // Favicon -------------------------------------------------------------------
260 260
261 struct FaviconResults {
262 FaviconResults();
263 ~FaviconResults();
264 void Clear();
265
266 std::vector<history::FaviconBitmapResult> bitmap_results;
267 IconURLSizesMap size_map;
268 };
269
270 void GetFavicons(const std::vector<GURL>& icon_urls, 261 void GetFavicons(const std::vector<GURL>& icon_urls,
271 int icon_types, 262 int icon_types,
272 int desired_size_in_dip, 263 int desired_size_in_dip,
273 const std::vector<ui::ScaleFactor>& desired_scale_factors, 264 const std::vector<ui::ScaleFactor>& desired_scale_factors,
274 FaviconResults* results); 265 std::vector<FaviconBitmapResult>* bitmap_results);
275 266
276 void GetFaviconsForURL( 267 void GetFaviconsForURL(
277 const GURL& page_url, 268 const GURL& page_url,
278 int icon_types, 269 int icon_types,
279 int desired_size_in_dip, 270 int desired_size_in_dip,
280 const std::vector<ui::ScaleFactor>& desired_scale_factors, 271 const std::vector<ui::ScaleFactor>& desired_scale_factors,
281 FaviconResults* results); 272 std::vector<FaviconBitmapResult>* bitmap_results);
282 273
283 void GetFaviconForID( 274 void GetFaviconForID(
284 FaviconID favicon_id, 275 FaviconID favicon_id,
285 int desired_size_in_dip, 276 int desired_size_in_dip,
286 ui::ScaleFactor desired_scale_factor, 277 ui::ScaleFactor desired_scale_factor,
287 FaviconResults* results); 278 std::vector<FaviconBitmapResult>* bitmap_results);
288 279
289 void UpdateFaviconMappingsAndFetch( 280 void UpdateFaviconMappingsAndFetch(
290 const GURL& page_url, 281 const GURL& page_url,
291 const std::vector<GURL>& icon_urls, 282 const std::vector<GURL>& icon_urls,
292 int icon_types, 283 int icon_types,
293 int desired_size_in_dip, 284 int desired_size_in_dip,
294 const std::vector<ui::ScaleFactor>& desired_scale_factors, 285 const std::vector<ui::ScaleFactor>& desired_scale_factors,
295 FaviconResults* results); 286 std::vector<FaviconBitmapResult>* bitmap_results);
296 287
297 void MergeFavicon(const GURL& page_url, 288 void MergeFavicon(const GURL& page_url,
298 const GURL& icon_url, 289 const GURL& icon_url,
299 IconType icon_type, 290 IconType icon_type,
300 scoped_refptr<base::RefCountedMemory> bitmap_data, 291 scoped_refptr<base::RefCountedMemory> bitmap_data,
301 const gfx::Size& pixel_size); 292 const gfx::Size& pixel_size);
302 293
303 void SetFavicons( 294 void SetFavicons(
304 const GURL& page_url, 295 const GURL& page_url,
305 IconType icon_type, 296 IconType icon_type,
306 const std::vector<FaviconBitmapData>& favicon_bitmap_data, 297 const std::vector<FaviconBitmapData>& favicon_bitmap_data);
307 const IconURLSizesMap& icon_url_sizes);
308 298
309 void SetFaviconsOutOfDateForPage(const GURL& page_url); 299 void SetFaviconsOutOfDateForPage(const GURL& page_url);
310 300
311 void CloneFavicons(const GURL& old_page_url, const GURL& new_page_url); 301 void CloneFavicons(const GURL& old_page_url, const GURL& new_page_url);
312 302
313 void SetImportedFavicons( 303 void SetImportedFavicons(
314 const std::vector<ImportedFaviconUsage>& favicon_usage); 304 const std::vector<ImportedFaviconUsage>& favicon_usage);
315 305
316 // Downloads ----------------------------------------------------------------- 306 // Downloads -----------------------------------------------------------------
317 307
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddVisitsSource); 499 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddVisitsSource);
510 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetMostRecentVisits); 500 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetMostRecentVisits);
511 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsSource); 501 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsSource);
512 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsTransitions); 502 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsTransitions);
513 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationVisitSource); 503 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationVisitSource);
514 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping); 504 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping);
515 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 505 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
516 SetFaviconMappingsForPageAndRedirects); 506 SetFaviconMappingsForPageAndRedirects);
517 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 507 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
518 SetFaviconMappingsForPageDuplicates); 508 SetFaviconMappingsForPageDuplicates);
519 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFavicons);
520 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsDeleteBitmaps); 509 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsDeleteBitmaps);
521 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsReplaceBitmapData); 510 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsReplaceBitmapData);
522 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 511 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
523 SetFaviconsSameFaviconURLForTwoPages); 512 SetFaviconsSameFaviconURLForTwoPages);
524 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 513 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
525 UpdateFaviconMappingsAndFetchNoChange); 514 UpdateFaviconMappingsAndFetchNoChange);
526 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconPageURLNotInDB); 515 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconPageURLNotInDB);
527 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconPageURLInDB); 516 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconPageURLInDB);
528 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconMaxFaviconsPerPage); 517 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MergeFaviconMaxFaviconsPerPage);
529 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 518 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 // If |page_url| is non-null, |icon_types| can be multiple icon types 653 // If |page_url| is non-null, |icon_types| can be multiple icon types
665 // only if |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON. 654 // only if |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON.
666 // If multiple icon types are specified, |page_url| will be mapped to the 655 // If multiple icon types are specified, |page_url| will be mapped to the
667 // icon URLs of the largest type available in the database. 656 // icon URLs of the largest type available in the database.
668 void UpdateFaviconMappingsAndFetchImpl( 657 void UpdateFaviconMappingsAndFetchImpl(
669 const GURL* page_url, 658 const GURL* page_url,
670 const std::vector<GURL>& icon_urls, 659 const std::vector<GURL>& icon_urls,
671 int icon_types, 660 int icon_types,
672 int desired_size_in_dip, 661 int desired_size_in_dip,
673 const std::vector<ui::ScaleFactor>& desired_scale_factors, 662 const std::vector<ui::ScaleFactor>& desired_scale_factors,
674 FaviconResults* results); 663 std::vector<FaviconBitmapResult>* results);
675 664
676 // Set the favicon bitmaps for |icon_id|. 665 // Set the favicon bitmaps for |icon_id|.
677 // For each entry in |favicon_bitmap_data|, if a favicon bitmap already 666 // For each entry in |favicon_bitmap_data|, if a favicon bitmap already
678 // exists at the entry's pixel size, replace the favicon bitmap's data with 667 // exists at the entry's pixel size, replace the favicon bitmap's data with
679 // the entry's bitmap data. Otherwise add a new favicon bitmap. 668 // the entry's bitmap data. Otherwise add a new favicon bitmap.
669 // Any favicon bitmaps already mapped to |icon_id| whose pixel sizes are not
670 // in |favicon_bitmap_data| are deleted.
680 // If not NULL, |favicon_bitmaps_changed| is set to whether any of the bitmap 671 // If not NULL, |favicon_bitmaps_changed| is set to whether any of the bitmap
681 // data at |icon_id| is changed as a result of calling this method. 672 // data at |icon_id| is changed as a result of calling this method.
682 // Computing |favicon_bitmaps_changed| requires additional database queries 673 // Computing |favicon_bitmaps_changed| requires additional database queries
683 // so should be avoided if unnecessary. 674 // so should be avoided if unnecessary.
684 void SetFaviconBitmaps( 675 void SetFaviconBitmaps(
685 FaviconID icon_id, 676 FaviconID icon_id,
686 const std::vector<FaviconBitmapData>& favicon_bitmap_data, 677 const std::vector<FaviconBitmapData>& favicon_bitmap_data,
687 bool* favicon_bitmaps_changed); 678 bool* favicon_bitmaps_changed);
688 679
689 // Returns true if |favicon_bitmap_data| and |icon_url_sizes| passed to 680 // Returns true if |favicon_bitmap_data| passed to SetFavicons() is valid.
690 // SetFavicons() are valid.
691 // Criteria: 681 // Criteria:
692 // 1) |icon_url_sizes| contains no more than 682 // 1) |favicon_bitmap_data| contains no more than
693 // kMaxFaviconsPerPage icon URLs. 683 // kMaxFaviconsPerPage unique icon URLs.
694 // kMaxFaviconBitmapsPerIconURL favicon sizes for each icon URL. 684 // kMaxFaviconBitmapsPerIconURL favicon bitmaps for each icon URL.
695 // 2) The icon URLs and favicon sizes of |favicon_bitmap_data| are a subset 685 // 2) FaviconBitmapData::bitmap_data contains non NULL bitmap data.
696 // of |icon_url_sizes|.
697 // 3) The favicon sizes for entries in |icon_url_sizes| which have associated
698 // data in |favicon_bitmap_data| is not history::GetDefaultFaviconSizes().
699 // 4) FaviconBitmapData::bitmap_data contains non NULL bitmap data.
700 bool ValidateSetFaviconsParams( 686 bool ValidateSetFaviconsParams(
701 const std::vector<FaviconBitmapData>& favicon_bitmap_data, 687 const std::vector<FaviconBitmapData>& favicon_bitmap_data) const;
702 const IconURLSizesMap& icon_url_sizes) const;
703
704 // Sets the sizes that the thumbnail database knows that the favicon at
705 // |icon_id| is available from the web. See history_types.h for a more
706 // detailed description of FaviconSizes.
707 // Deletes any favicon bitmaps currently mapped to |icon_id| whose pixel
708 // sizes are not contained in |favicon_sizes|.
709 // |favicon_bitmaps_deleted| is set to true if at least one favicon bitmap
710 // is deleted.
711 void SetFaviconSizes(FaviconID icon_id,
712 const FaviconSizes& favicon_sizes,
713 bool* favicon_bitmaps_deleted);
714 688
715 // Returns true if the bitmap data at |bitmap_id| equals |new_bitmap_data|. 689 // Returns true if the bitmap data at |bitmap_id| equals |new_bitmap_data|.
716 bool IsFaviconBitmapDataEqual( 690 bool IsFaviconBitmapDataEqual(
717 FaviconBitmapID bitmap_id, 691 FaviconBitmapID bitmap_id,
718 const scoped_refptr<base::RefCountedMemory>& new_bitmap_data); 692 const scoped_refptr<base::RefCountedMemory>& new_bitmap_data);
719 693
720 // Returns true if there are favicons for |page_url| and one of the types in 694 // Returns true if there are favicons for |page_url| and one of the types in
721 // |icon_types|. 695 // |icon_types|.
722 // |favicon_bitmap_results| is set to the favicon bitmaps which most closely 696 // |favicon_bitmap_results| is set to the favicon bitmaps which most closely
723 // match |desired_size_in_dip| and |desired_scale_factors|. If 697 // match |desired_size_in_dip| and |desired_scale_factors|. If
724 // |desired_size_in_dip| is 0, the largest favicon bitmap with one of the icon 698 // |desired_size_in_dip| is 0, the largest favicon bitmap with one of the icon
725 // types in |icon_types| is returned. If |icon_types| contains multiple icon 699 // types in |icon_types| is returned. If |icon_types| contains multiple icon
726 // types and there are several matched icon types in the database, results 700 // types and there are several matched icon types in the database, results
727 // will only be returned for a single icon type in the priority of 701 // will only be returned for a single icon type in the priority of
728 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. See the comment for 702 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. See the comment for
729 // GetFaviconResultsForBestMatch() for more details on how 703 // GetFaviconResultsForBestMatch() for more details on how
730 // |favicon_bitmap_results| is constructed. 704 // |favicon_bitmap_results| is constructed.
731 // |icon_url_sizes| is set to a mapping of all the icon URLs which are mapped
732 // to |page_url| to the sizes of the favicon bitmaps available at each icon
733 // URL on the web.
734 bool GetFaviconsFromDB( 705 bool GetFaviconsFromDB(
735 const GURL& page_url, 706 const GURL& page_url,
736 int icon_types, 707 int icon_types,
737 const int desired_size_in_dip, 708 const int desired_size_in_dip,
738 const std::vector<ui::ScaleFactor>& desired_scale_factors, 709 const std::vector<ui::ScaleFactor>& desired_scale_factors,
739 std::vector<FaviconBitmapResult>* favicon_bitmap_results, 710 std::vector<FaviconBitmapResult>* favicon_bitmap_results);
740 IconURLSizesMap* icon_url_sizes);
741 711
742 // Returns the favicon bitmaps which most closely match |desired_size_in_dip| 712 // Returns the favicon bitmaps which most closely match |desired_size_in_dip|
743 // and |desired_scale_factors| in |favicon_bitmap_results|. If 713 // and |desired_scale_factors| in |favicon_bitmap_results|. If
744 // |desired_size_in_dip| is 0, only the largest favicon bitmap is returned. 714 // |desired_size_in_dip| is 0, only the largest favicon bitmap is returned.
745 // Goodness is computed via SelectFaviconBitmapIDs(). It is computed on a 715 // Goodness is computed via SelectFaviconBitmapIDs(). It is computed on a
746 // per favicon id basis, thus all |favicon_bitmap_results| are guaranteed to 716 // per favicon id basis, thus all |favicon_bitmap_results| are guaranteed to
747 // be for the same FaviconID. |favicon_bitmap_results| will have at most one 717 // be for the same FaviconID. |favicon_bitmap_results| will have at most one
748 // entry for each desired scale factor. There will be less entries if the same 718 // entry for each desired scale factor. There will be less entries if the same
749 // favicon bitmap is the best result for multiple scale factors. 719 // favicon bitmap is the best result for multiple scale factors.
750 // Returns true if there were no errors. 720 // Returns true if there were no errors.
751 bool GetFaviconBitmapResultsForBestMatch( 721 bool GetFaviconBitmapResultsForBestMatch(
752 const std::vector<FaviconID>& candidate_favicon_ids, 722 const std::vector<FaviconID>& candidate_favicon_ids,
753 int desired_size_in_dip, 723 int desired_size_in_dip,
754 const std::vector<ui::ScaleFactor>& desired_scale_factors, 724 const std::vector<ui::ScaleFactor>& desired_scale_factors,
755 std::vector<FaviconBitmapResult>* favicon_bitmap_results); 725 std::vector<FaviconBitmapResult>* favicon_bitmap_results);
756 726
757 // Build mapping of the icon URLs for |favicon_ids| to the sizes of the
758 // favicon bitmaps available at each icon URL on the web. Favicon bitmaps
759 // might not be cached in the thumbnail database for any of the sizes in the
760 // returned map. See history_types.h for a more detailed description of
761 // IconURLSizesMap.
762 // Returns true if map was successfully built.
763 bool BuildIconURLSizesMap(const std::vector<FaviconID>& favicon_ids,
764 IconURLSizesMap* icon_url_sizes);
765
766 // Maps the favicon ids in |icon_ids| to |page_url| (and all redirects) 727 // Maps the favicon ids in |icon_ids| to |page_url| (and all redirects)
767 // for |icon_type|. 728 // for |icon_type|.
768 // Returns true if the mappings for the page or any of its redirects were 729 // Returns true if the mappings for the page or any of its redirects were
769 // changed. 730 // changed.
770 bool SetFaviconMappingsForPageAndRedirects( 731 bool SetFaviconMappingsForPageAndRedirects(
771 const GURL& page_url, 732 const GURL& page_url,
772 IconType icon_type, 733 IconType icon_type,
773 const std::vector<FaviconID>& icon_ids); 734 const std::vector<FaviconID>& icon_ids);
774 735
775 // Maps the favicon ids in |icon_ids| to |page_url| for |icon_type|. 736 // Maps the favicon ids in |icon_ids| to |page_url| for |icon_type|.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 // Used to provide the Android ContentProvider APIs. 876 // Used to provide the Android ContentProvider APIs.
916 scoped_ptr<AndroidProviderBackend> android_provider_backend_; 877 scoped_ptr<AndroidProviderBackend> android_provider_backend_;
917 #endif 878 #endif
918 879
919 DISALLOW_COPY_AND_ASSIGN(HistoryBackend); 880 DISALLOW_COPY_AND_ASSIGN(HistoryBackend);
920 }; 881 };
921 882
922 } // namespace history 883 } // namespace history
923 884
924 #endif // CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_ 885 #endif // CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
OLDNEW
« no previous file with comments | « chrome/browser/history/history.cc ('k') | chrome/browser/history/history_backend.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698