Index: components/favicon/core/favicon_driver_observer.h |
diff --git a/components/favicon/core/favicon_driver_observer.h b/components/favicon/core/favicon_driver_observer.h |
index eb3fd48f61ef712aa9fe1510eb5087019d504552..ce80877a7376948431f15b4c0741274cb746c15d 100644 |
--- a/components/favicon/core/favicon_driver_observer.h |
+++ b/components/favicon/core/favicon_driver_observer.h |
@@ -11,6 +11,8 @@ namespace gfx { |
class Image; |
} |
+class GURL; |
+ |
namespace favicon { |
class FaviconDriver; |
@@ -19,17 +21,47 @@ class FaviconDriver; |
// FaviconDriver. |
class FaviconDriverObserver { |
public: |
+ // The type of the icon in the OnFaviconUpdated() notification. |
+ enum NotificationIconType { |
+ // Multi-resolution 16x16 (gfx::kFaviconSize) device independant pixel |
+ // favicon of type favicon_base::FAVICON. If the page does not provide a |
+ // 16x16 DIP icon, the icon is generated by resizing another icon. |
+ NON_TOUCH_16_DIP, |
+ // Largest icon specified by the page which is of type |
+ // favicon_base::FAVICON. |
+ NON_TOUCH_LARGEST, |
+ // Largest icon specified by the page which is of type |
+ // favicon_base::TOUCH_ICON or of type favicon_base::TOUCH_PRECOMPOSED_ICON. |
+ TOUCH_LARGEST |
+ }; |
+ |
FaviconDriverObserver() {} |
virtual ~FaviconDriverObserver() {} |
- // Called when favicon |image| is retrieved from either web site or cached |
- // storage. |
- virtual void OnFaviconAvailable(const gfx::Image& image) = 0; |
- |
- // Called when favicon has changed for the current page. |icon_url_changed| is |
- // true if the favicon URL has also changed. |
+ // Called when either: |
+ // 1) Chrome determines the best icon for the page for |
+ // |notification_icon_type|. |
+ // Not called if the site does not provide a custom icon and the best icon |
+ // for the page is the default one provided by Chrome. |
+ // 2) The site changes its icon via Javascript. |
+ // |icon_url_changed| is false if OnFaviconAvailable() was already called for |
+ // |notification_icon_type| for the current page URL and |icon_url| is the |
+ // same as for the previous notification for |notification_icon_type|. |
+ // Example: |
+ // Page: www.google.com |
+ // Icon: www.google.com/favicon.ico |
+ // Data for www.google.com/favicon.ico in the database has expired. |
+ // i) OnFaviconUpdated() is called with |icon_url_changed| == true to notify |
+ // that a favicon was found in the history database. |
+ // ii) As the history data has expired, the icon at www.google.com/favicon.ico |
+ // is redownloaded and stored into the database. OnFaviconUpdated() is |
+ // called with |icon_url_changed| == false to notify that the icon in the |
+ // history database MAY have changed visually. |
virtual void OnFaviconUpdated(FaviconDriver* favicon_driver, |
- bool icon_url_changed) = 0; |
+ NotificationIconType notification_icon_type, |
+ const GURL& icon_url, |
+ bool icon_url_changed, |
+ const gfx::Image& image) = 0; |
private: |
DISALLOW_COPY_AND_ASSIGN(FaviconDriverObserver); |