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

Side by Side Diff: chrome/browser/history/history.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, 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 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_HISTORY_H_ 5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_H_
6 #define CHROME_BROWSER_HISTORY_HISTORY_H_ 6 #define CHROME_BROWSER_HISTORY_HISTORY_H_
7 7
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/file_path.h" 13 #include "base/file_path.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "base/observer_list_threadsafe.h" 16 #include "base/observer_list_threadsafe.h"
17 #include "base/string16.h" 17 #include "base/string16.h"
18 #include "chrome/browser/cancelable_request.h" 18 #include "chrome/browser/cancelable_request.h"
19 #include "chrome/browser/favicon/favicon_service.h" 19 #include "chrome/browser/favicon/favicon_service.h"
20 #include "chrome/browser/history/history_types.h" 20 #include "chrome/browser/history/history_types.h"
21 #include "chrome/browser/profiles/refcounted_profile_keyed_service.h" 21 #include "chrome/browser/profiles/refcounted_profile_keyed_service.h"
22 #include "chrome/browser/search_engines/template_url_id.h" 22 #include "chrome/browser/search_engines/template_url_id.h"
23 #include "chrome/common/ref_counted_util.h" 23 #include "chrome/common/ref_counted_util.h"
24 #include "content/public/browser/notification_observer.h" 24 #include "content/public/browser/notification_observer.h"
25 #include "content/public/browser/notification_registrar.h" 25 #include "content/public/browser/notification_registrar.h"
26 #include "content/public/common/page_transition_types.h" 26 #include "content/public/common/page_transition_types.h"
27 #include "sql/init_status.h" 27 #include "sql/init_status.h"
28 #include "ui/base/layout.h"
28 29
29 #if defined(OS_ANDROID) 30 #if defined(OS_ANDROID)
30 #include "chrome/browser/history/android/android_history_provider_service.h" 31 #include "chrome/browser/history/android/android_history_provider_service.h"
31 #endif 32 #endif
32 33
33 class BookmarkService; 34 class BookmarkService;
34 class FilePath; 35 class FilePath;
35 class GURL; 36 class GURL;
36 class HistoryURLProvider; 37 class HistoryURLProvider;
37 struct HistoryURLProviderParams; 38 struct HistoryURLProviderParams;
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 // Notification from the backend that it has finished loading. Sends 680 // Notification from the backend that it has finished loading. Sends
680 // notification (NOTIFY_HISTORY_LOADED) and sets backend_loaded_ to true. 681 // notification (NOTIFY_HISTORY_LOADED) and sets backend_loaded_ to true.
681 void OnDBLoaded(int backend_id); 682 void OnDBLoaded(int backend_id);
682 683
683 // Favicon ------------------------------------------------------------------- 684 // Favicon -------------------------------------------------------------------
684 685
685 // These favicon methods are exposed to the FaviconService. Instead of calling 686 // These favicon methods are exposed to the FaviconService. Instead of calling
686 // these methods directly you should call the respective method on the 687 // these methods directly you should call the respective method on the
687 // FaviconService. 688 // FaviconService.
688 689
689 // Used by the FaviconService to get a favicon from the history backend. 690 // Used by FaviconService to get all the favicon bitmaps from the history
691 // backend for the favicons at |icon_urls|.
690 void GetFavicon(FaviconService::GetFaviconRequest* request, 692 void GetFavicon(FaviconService::GetFaviconRequest* request,
691 const GURL& icon_url, 693 const std::vector<GURL>& icon_urls,
692 history::IconType icon_type); 694 history::IconType icon_type,
695 const gfx::Size& desired_dip_size,
696 const std::vector<ui::ScaleFactor>& desired_scale_factors);
697
698 // Used by the FaviconService to get all the favicons mapped to |page_url|
699 // from the history backend.
700 void GetFaviconForURL(
701 FaviconService::GetFaviconRequest* request,
702 const GURL& page_url,
703 int icon_types,
704 const gfx::Size& desired_dip_size,
705 const std::vector<ui::ScaleFactor>& desired_scale_factors);
693 706
694 // Used by the FaviconService to update the favicon mappings on the history 707 // Used by the FaviconService to update the favicon mappings on the history
708 // backend for favicons of type FAVICON.
709 // |icon_urls| is a list of all the favicon URLs known for |page_url|. It is
710 // important for this list to be complete as any favicons mapped to
711 // |page_url| whose icon URL is not in |icon_urls| will be deleted.
712 void UpdateFaviconMappingsAndFetch(
713 FaviconService::GetFaviconRequest* request,
714 const GURL& page_url,
715 const std::vector<GURL>& icon_urls,
716 history::IconType icon_type,
717 const gfx::Size& desired_dip_size,
718 const std::vector<ui::ScaleFactor>& desired_scale_factors);
719
720 // Used by the FaviconService to add favicons for a page on the history
721 // backend. This method queries for the IconURLSizesMap from |page_url|. If
722 // unavailable, a guess at what IconURLSizesMap should be is used. This
723 // function is inefficient. Do not use if at all possible.
724 // TODO(pkotwicz): Remove this function once it is no longer required by
725 // sync.
726 void AddFavicons(
727 const GURL& page_url,
728 const GURL& icon_url,
729 history::IconType icon_type,
730 const std::vector<history::FaviconBitmapData>& favicon_bitmaps);
731
732 // Used by the FaviconService to set the favicons for a page on the history
695 // backend. 733 // backend.
696 void UpdateFaviconMappingAndFetch(FaviconService::GetFaviconRequest* request, 734 // |elements| is a listing of additional favicon bitmaps to store for
697 const GURL& page_url, 735 // |page_url|.
698 const GURL& icon_url, 736 // |icon_url_sizes| is a mapping of all the icon urls of favicons available
699 history::IconType icon_type); 737 // for |page_url| to the sizes that those favicons are available at from the
738 // web. |elements| does not need to have entries for all the icon urls or
739 // sizes listed in |icon_url_sizes|. However, the icon urls and sizes in
740 // |elements| must be a subset of |icon_url_sizes|. It is important that
741 // |icon_url_sizes| be complete as mappings to favicons whose icon url or
742 // pixel size is not in |icon_url_sizes| will be deleted.
743 void SetFavicons(
744 const GURL& page_url,
745 const GURL& icon_url,
746 history::IconType icon_type,
747 const std::vector<history::FaviconBitmapData>& favicon_bitmaps,
748 const history::IconURLSizesMap& icon_url_sizes);
700 749
701 // Used by the FaviconService to get a favicon from the history backend. 750 // Used by the FaviconService to mark the favicons for the page as being out
702 void GetFaviconForURL(FaviconService::GetFaviconRequest* request,
703 const GURL& page_url,
704 int icon_types);
705
706 // Used by the FaviconService to mark the favicon for the page as being out
707 // of date. 751 // of date.
708 void SetFaviconOutOfDateForPage(const GURL& page_url); 752 void SetFaviconsOutOfDateForPage(const GURL& page_url);
709 753
710 // Used by the FaviconService to clone favicons from one page to another, 754 // Used by the FaviconService to clone favicons from one page to another,
711 // provided that other page does not already have favicons. 755 // provided that other page does not already have favicons.
712 void CloneFavicon(const GURL& old_page_url, const GURL& new_page_url); 756 void CloneFavicons(const GURL& old_page_url, const GURL& new_page_url);
713 757
714 // Used by the FaviconService for importing many favicons for many pages at 758 // Used by the FaviconService for importing many favicons for many pages at
715 // once. The pages must exist, any favicon sets for unknown pages will be 759 // once. The pages must exist, any favicon sets for unknown pages will be
716 // discarded. Existing favicons will not be overwritten. 760 // discarded. Existing favicons will not be overwritten.
717 void SetImportedFavicons( 761 void SetImportedFavicons(
718 const std::vector<history::ImportedFaviconUsage>& favicon_usage); 762 const std::vector<history::ImportedFaviconUsage>& favicon_usage);
719 763
720 // Used by the FaviconService to set the favicon for a page on the history
721 // backend.
722 void SetFavicon(const GURL& page_url,
723 const GURL& icon_url,
724 const std::vector<unsigned char>& image_data,
725 history::IconType icon_type);
726
727
728 // Sets the in-memory URL database. This is called by the backend once the 764 // Sets the in-memory URL database. This is called by the backend once the
729 // database is loaded to make it available. 765 // database is loaded to make it available.
730 void SetInMemoryBackend(int backend_id, 766 void SetInMemoryBackend(int backend_id,
731 history::InMemoryHistoryBackend* mem_backend); 767 history::InMemoryHistoryBackend* mem_backend);
732 768
733 // Called by our BackendDelegate when there is a problem reading the database. 769 // Called by our BackendDelegate when there is a problem reading the database.
734 void NotifyProfileError(int backend_id, sql::InitStatus init_status); 770 void NotifyProfileError(int backend_id, sql::InitStatus init_status);
735 771
736 // Call to schedule a given task for running on the history thread with the 772 // Call to schedule a given task for running on the history thread with the
737 // specified priority. The task will have ownership taken. 773 // specified priority. The task will have ownership taken.
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 LoadBackendIfNecessary(); 870 LoadBackendIfNecessary();
835 if (consumer) 871 if (consumer)
836 AddRequest(request, consumer); 872 AddRequest(request, consumer);
837 ScheduleTask(priority, 873 ScheduleTask(priority,
838 base::Bind(func, history_backend_.get(), 874 base::Bind(func, history_backend_.get(),
839 scoped_refptr<RequestType>(request), 875 scoped_refptr<RequestType>(request),
840 a, b, c, d)); 876 a, b, c, d));
841 return request->handle(); 877 return request->handle();
842 } 878 }
843 879
880 template<typename BackendFunc,
881 class RequestType, // Descendant of CancelableRequstBase.
882 typename ArgA,
883 typename ArgB,
884 typename ArgC,
885 typename ArgD,
886 typename ArgE>
887 Handle Schedule(SchedulePriority priority,
888 BackendFunc func, // Function to call on the HistoryBackend.
889 CancelableRequestConsumerBase* consumer,
890 RequestType* request,
891 const ArgA& a,
892 const ArgB& b,
893 const ArgC& c,
894 const ArgD& d,
895 const ArgE& e) {
896 DCHECK(thread_) << "History service being called after cleanup";
897 LoadBackendIfNecessary();
898 if (consumer)
899 AddRequest(request, consumer);
900 ScheduleTask(priority,
901 base::Bind(func, history_backend_.get(),
902 scoped_refptr<RequestType>(request),
903 a, b, c, d, e));
904 return request->handle();
905 }
906
844 // ScheduleAndForget --------------------------------------------------------- 907 // ScheduleAndForget ---------------------------------------------------------
845 // 908 //
846 // Functions for scheduling operations on the history thread that do not need 909 // Functions for scheduling operations on the history thread that do not need
847 // any callbacks and are not cancelable. 910 // any callbacks and are not cancelable.
848 911
849 template<typename BackendFunc> 912 template<typename BackendFunc>
850 void ScheduleAndForget(SchedulePriority priority, 913 void ScheduleAndForget(SchedulePriority priority,
851 BackendFunc func) { // Function to call on backend. 914 BackendFunc func) { // Function to call on backend.
852 DCHECK(thread_) << "History service being called after cleanup"; 915 DCHECK(thread_) << "History service being called after cleanup";
853 LoadBackendIfNecessary(); 916 LoadBackendIfNecessary();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 const ArgA& a, 957 const ArgA& a,
895 const ArgB& b, 958 const ArgB& b,
896 const ArgC& c, 959 const ArgC& c,
897 const ArgD& d) { 960 const ArgD& d) {
898 DCHECK(thread_) << "History service being called after cleanup"; 961 DCHECK(thread_) << "History service being called after cleanup";
899 LoadBackendIfNecessary(); 962 LoadBackendIfNecessary();
900 ScheduleTask(priority, base::Bind(func, history_backend_.get(), 963 ScheduleTask(priority, base::Bind(func, history_backend_.get(),
901 a, b, c, d)); 964 a, b, c, d));
902 } 965 }
903 966
967 template<typename BackendFunc,
968 typename ArgA,
969 typename ArgB,
970 typename ArgC,
971 typename ArgD,
972 typename ArgE>
973 void ScheduleAndForget(SchedulePriority priority,
974 BackendFunc func, // Function to call on backend.
975 const ArgA& a,
976 const ArgB& b,
977 const ArgC& c,
978 const ArgD& d,
979 const ArgE& e) {
980 DCHECK(thread_) << "History service being called after cleanup";
981 LoadBackendIfNecessary();
982 ScheduleTask(priority, base::Bind(func, history_backend_.get(),
983 a, b, c, d, e));
984 }
985
904 content::NotificationRegistrar registrar_; 986 content::NotificationRegistrar registrar_;
905 987
906 // Some void primitives require some internal processing in the main thread 988 // Some void primitives require some internal processing in the main thread
907 // when done. We use this internal consumer for this purpose. 989 // when done. We use this internal consumer for this purpose.
908 CancelableRequestConsumer internal_consumer_; 990 CancelableRequestConsumer internal_consumer_;
909 991
910 // The thread used by the history service to run complicated operations. 992 // The thread used by the history service to run complicated operations.
911 // |thread_| is NULL once |Cleanup| is NULL. 993 // |thread_| is NULL once |Cleanup| is NULL.
912 base::Thread* thread_; 994 base::Thread* thread_;
913 995
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 // The index used for quick history lookups. 1028 // The index used for quick history lookups.
947 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_; 1029 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_;
948 1030
949 scoped_refptr<ObserverListThreadSafe<history::VisitDatabaseObserver> > 1031 scoped_refptr<ObserverListThreadSafe<history::VisitDatabaseObserver> >
950 visit_database_observers_; 1032 visit_database_observers_;
951 1033
952 DISALLOW_COPY_AND_ASSIGN(HistoryService); 1034 DISALLOW_COPY_AND_ASSIGN(HistoryService);
953 }; 1035 };
954 1036
955 #endif // CHROME_BROWSER_HISTORY_HISTORY_H_ 1037 #endif // CHROME_BROWSER_HISTORY_HISTORY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698