Index: chrome/browser/history/history.h |
diff --git a/chrome/browser/history/history.h b/chrome/browser/history/history.h |
index 69fda8bc97b9ddd6773302bc72290e5b8c5eef6b..a60c83a9192181dde85769ebf9acb9e2cdf5cb26 100644 |
--- a/chrome/browser/history/history.h |
+++ b/chrome/browser/history/history.h |
@@ -689,6 +689,7 @@ class HistoryService : public CancelableRequestProvider, |
// Used by the FaviconService to get a favicon from the history backend. |
void GetFavicon(FaviconService::GetFaviconRequest* request, |
const GURL& icon_url, |
+ const gfx::Size& pixel_size, |
history::IconType icon_type); |
// Used by the FaviconService to update the favicon mappings on the history |
@@ -696,11 +697,13 @@ class HistoryService : public CancelableRequestProvider, |
void UpdateFaviconMappingAndFetch(FaviconService::GetFaviconRequest* request, |
const GURL& page_url, |
const GURL& icon_url, |
+ const gfx::Size& pixel_size, |
history::IconType icon_type); |
// Used by the FaviconService to get a favicon from the history backend. |
void GetFaviconForURL(FaviconService::GetFaviconRequest* request, |
const GURL& page_url, |
+ const gfx::Size& pixel_size, |
int icon_types); |
// Used by the FaviconService to get a favicon from the history backend. |
@@ -723,12 +726,18 @@ class HistoryService : public CancelableRequestProvider, |
// Used by the FaviconService to set the favicon for a page on the history |
// backend. |
+ // |requested size| is the size which was used to search for |image_data| |
+ // for which |image_data| is the best match from |page_url|'s favicons. |
+ // This does not necessarily correspond to the favicon's pixel size. |
+ // For instance, if the ideal favicon size is 16x16 but the best match is |
+ // a 10x16 favicon, |requested_size| is 16x16. |
+ // TODO(pkotwicz): Add a parameter for the favicon's pixel size. |
void SetFavicon(const GURL& page_url, |
const GURL& icon_url, |
const std::vector<unsigned char>& image_data, |
+ const gfx::Size& requested_size, |
history::IconType icon_type); |
- |
// Sets the in-memory URL database. This is called by the backend once the |
// database is loaded to make it available. |
void SetInMemoryBackend(int backend_id, |
@@ -845,6 +854,33 @@ class HistoryService : public CancelableRequestProvider, |
return request->handle(); |
} |
+ template<typename BackendFunc, |
+ class RequestType, // Descendant of CancelableRequstBase. |
+ typename ArgA, |
+ typename ArgB, |
+ typename ArgC, |
+ typename ArgD, |
+ typename ArgE> |
+ Handle Schedule(SchedulePriority priority, |
+ BackendFunc func, // Function to call on the HistoryBackend. |
+ CancelableRequestConsumerBase* consumer, |
+ RequestType* request, |
+ const ArgA& a, |
+ const ArgB& b, |
+ const ArgC& c, |
+ const ArgD& d, |
+ const ArgE& e) { |
+ DCHECK(thread_) << "History service being called after cleanup"; |
+ LoadBackendIfNecessary(); |
+ if (consumer) |
+ AddRequest(request, consumer); |
+ ScheduleTask(priority, |
+ base::Bind(func, history_backend_.get(), |
+ scoped_refptr<RequestType>(request), |
+ a, b, c, d, e)); |
+ return request->handle(); |
+ } |
+ |
// ScheduleAndForget --------------------------------------------------------- |
// |
// Functions for scheduling operations on the history thread that do not need |
@@ -905,6 +941,25 @@ class HistoryService : public CancelableRequestProvider, |
a, b, c, d)); |
} |
+ template<typename BackendFunc, |
+ typename ArgA, |
+ typename ArgB, |
+ typename ArgC, |
+ typename ArgD, |
+ typename ArgE> |
+ void ScheduleAndForget(SchedulePriority priority, |
+ BackendFunc func, // Function to call on backend. |
+ const ArgA& a, |
+ const ArgB& b, |
+ const ArgC& c, |
+ const ArgD& d, |
+ const ArgE& e) { |
+ DCHECK(thread_) << "History service being called after cleanup"; |
+ LoadBackendIfNecessary(); |
+ ScheduleTask(priority, base::Bind(func, history_backend_.get(), |
+ a, b, c, d, e)); |
+ } |
+ |
content::NotificationRegistrar registrar_; |
// Some void primitives require some internal processing in the main thread |