| OLD | NEW |
| 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2017 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 COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ | 5 #ifndef COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ |
| 6 #define COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ | 6 #define COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 // multiple favicon bitmaps for |favicon_id|, the largest favicon bitmap is | 132 // multiple favicon bitmaps for |favicon_id|, the largest favicon bitmap is |
| 133 // returned. | 133 // returned. |
| 134 virtual base::CancelableTaskTracker::TaskId GetLargestRawFaviconForID( | 134 virtual base::CancelableTaskTracker::TaskId GetLargestRawFaviconForID( |
| 135 favicon_base::FaviconID favicon_id, | 135 favicon_base::FaviconID favicon_id, |
| 136 const favicon_base::FaviconRawBitmapCallback& callback, | 136 const favicon_base::FaviconRawBitmapCallback& callback, |
| 137 base::CancelableTaskTracker* tracker) = 0; | 137 base::CancelableTaskTracker* tracker) = 0; |
| 138 | 138 |
| 139 // Marks all types of favicon for the page as being out of date. | 139 // Marks all types of favicon for the page as being out of date. |
| 140 virtual void SetFaviconOutOfDateForPage(const GURL& page_url) = 0; | 140 virtual void SetFaviconOutOfDateForPage(const GURL& page_url) = 0; |
| 141 | 141 |
| 142 // Mark that the on-demand favicon at |icon_url| was requested now. This |
| 143 // postpones the automatic eviction of the favicon from the database. Not all |
| 144 // calls end up in a write into the DB: |
| 145 // - It is no-op if the bitmaps are not stored using SetOnDemandFavicons(). |
| 146 // - The updates of the "last requested time" have limited frequency for each |
| 147 // particular favicon (e.g. once per week). This limits the overhead of |
| 148 // cache management for on-demand favicons. |
| 149 virtual void TouchOnDemandFavicon(const GURL& icon_url) = 0; |
| 150 |
| 142 // Allows the importer to set many favicons for many pages at once. The pages | 151 // Allows the importer to set many favicons for many pages at once. The pages |
| 143 // must exist, any favicon sets for unknown pages will be discarded. Existing | 152 // must exist, any favicon sets for unknown pages will be discarded. Existing |
| 144 // favicons will not be overwritten. | 153 // favicons will not be overwritten. |
| 145 virtual void SetImportedFavicons( | 154 virtual void SetImportedFavicons( |
| 146 const favicon_base::FaviconUsageDataList& favicon_usage) = 0; | 155 const favicon_base::FaviconUsageDataList& favicon_usage) = 0; |
| 147 | 156 |
| 148 // Set the favicon for |page_url| for |icon_type| in the thumbnail database. | 157 // Set the favicon for |page_url| for |icon_type| in the thumbnail database. |
| 149 // Unlike SetFavicons(), this method will not delete preexisting bitmap data | 158 // Unlike SetFavicons(), this method will not delete preexisting bitmap data |
| 150 // which is associated to |page_url| if at all possible. Use this method if | 159 // which is associated to |page_url| if at all possible. Use this method if |
| 151 // the favicon bitmaps for any of ui::GetSupportedScaleFactors() are not | 160 // the favicon bitmaps for any of ui::GetSupportedScaleFactors() are not |
| (...skipping 12 matching lines...) Expand all Loading... |
| 164 // contains image reps for all of ui::GetSupportedScaleFactors(). Use | 173 // contains image reps for all of ui::GetSupportedScaleFactors(). Use |
| 165 // MergeFavicon() if it does not. | 174 // MergeFavicon() if it does not. |
| 166 // TODO(pkotwicz): Save unresized favicon bitmaps to the database. | 175 // TODO(pkotwicz): Save unresized favicon bitmaps to the database. |
| 167 // TODO(pkotwicz): Support adding favicons for multiple icon URLs to the | 176 // TODO(pkotwicz): Support adding favicons for multiple icon URLs to the |
| 168 // thumbnail database. | 177 // thumbnail database. |
| 169 virtual void SetFavicons(const GURL& page_url, | 178 virtual void SetFavicons(const GURL& page_url, |
| 170 const GURL& icon_url, | 179 const GURL& icon_url, |
| 171 favicon_base::IconType icon_type, | 180 favicon_base::IconType icon_type, |
| 172 const gfx::Image& image) = 0; | 181 const gfx::Image& image) = 0; |
| 173 | 182 |
| 174 // Same as SetFavicons() with three differences: | 183 // Same as SetFavicons with three differences: |
| 175 // 1) It will be a no-op if there is an existing cached favicon for *any* type | 184 // 1) It will be a no-op if there is an existing cached favicon for *any* type |
| 176 // for |page_url|. | 185 // for |page_url|. |
| 177 // 2) If |icon_url| is known to the database, |bitmaps| will be ignored (i.e. | 186 // 2) If |icon_url| is known to the database, |bitmaps| will be ignored (i.e. |
| 178 // the icon won't be overwritten) but the mappings from |page_url| to | 187 // the icon won't be overwritten) but the mappings from |page_url| to |
| 179 // |icon_url| will be stored (conditioned to point 1 above). | 188 // |icon_url| will be stored (conditioned to point 1 above). |
| 180 // 3) If |icon_url| is stored, it will be marked as expired. | 189 // 3) If |icon_url| is stored, it will be marked as "on-demand". |
| 190 // |
| 191 // On-demand favicons are those that are fetched without visiting their page. |
| 192 // For this reason, their life-time cannot be bound to the life-time of the |
| 193 // corresponding visit in history. |
| 194 // - These bitmaps are evicted from the database based on the last time they |
| 195 // get requested. The last requested time is initially set to Now() and is |
| 196 // further updated by calling TouchOnDemandFavicon(). |
| 197 // - Furthermore, on-demand bitmaps are immediately marked as expired. Hence, |
| 198 // they are always replaced by standard favicons whenever their page gets |
| 199 // visited. |
| 181 // The callback will receive whether the write actually happened. | 200 // The callback will receive whether the write actually happened. |
| 182 virtual void SetLastResortFavicons(const GURL& page_url, | 201 virtual void SetOnDemandFavicons(const GURL& page_url, |
| 183 const GURL& icon_url, | 202 const GURL& icon_url, |
| 184 favicon_base::IconType icon_type, | 203 favicon_base::IconType icon_type, |
| 185 const gfx::Image& image, | 204 const gfx::Image& image, |
| 186 base::Callback<void(bool)> callback) = 0; | 205 base::Callback<void(bool)> callback) = 0; |
| 187 | 206 |
| 188 // Avoid repeated requests to download missing favicon. | 207 // Avoid repeated requests to download missing favicon. |
| 189 virtual void UnableToDownloadFavicon(const GURL& icon_url) = 0; | 208 virtual void UnableToDownloadFavicon(const GURL& icon_url) = 0; |
| 190 virtual bool WasUnableToDownloadFavicon(const GURL& icon_url) const = 0; | 209 virtual bool WasUnableToDownloadFavicon(const GURL& icon_url) const = 0; |
| 191 virtual void ClearUnableToDownloadFavicons() = 0; | 210 virtual void ClearUnableToDownloadFavicons() = 0; |
| 192 }; | 211 }; |
| 193 | 212 |
| 194 } // namespace favicon | 213 } // namespace favicon |
| 195 | 214 |
| 196 #endif // COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ | 215 #endif // COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_H_ |
| OLD | NEW |