blob: fc880870b71681ddcd0e8e0191dae905ad450f68 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/macros.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 {
// 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.
// Largest icon specified by the page which is of type
// favicon_base::IconType::kFavicon.
// Largest icon specified by the page which is of type
// favicon_base::IconType::kTouchIcon or of type
// favicon_base::IconType::kTouchPrecomposedIcon.
FaviconDriverObserver() {}
virtual ~FaviconDriverObserver() {}
// 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:
// Icon:
// Data for 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
// 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