1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_OBSERVER_H_
#define COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_OBSERVER_H_
namespace gfx {
class Image;
}
class GURL;
namespace favicon {
class FaviconDriver;
// An observer implemented by classes which are interested in event from
// 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::IconType::kFavicon. 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::IconType::kFavicon.
NON_TOUCH_LARGEST,
// Largest icon specified by the page which is of type
// favicon_base::IconType::kTouchIcon or of type
// favicon_base::IconType::kTouchPrecomposedIcon.
TOUCH_LARGEST
};
FaviconDriverObserver() = default;
FaviconDriverObserver(const FaviconDriverObserver&) = delete;
FaviconDriverObserver& operator=(const FaviconDriverObserver&) = delete;
virtual ~FaviconDriverObserver() = default;
// 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.
//
// `icon_url` is empty for the cases where there is no actual icon (e.g. the
// page removed the favicon via Javascript).
virtual void OnFaviconUpdated(FaviconDriver* favicon_driver,
NotificationIconType notification_icon_type,
const GURL& icon_url,
bool icon_url_changed,
const gfx::Image& image) = 0;
};
} // namespace favicon
#endif // COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_OBSERVER_H_
|