| Index: components/favicon/core/favicon_driver_impl.h
|
| diff --git a/components/favicon/core/favicon_driver_impl.h b/components/favicon/core/favicon_driver_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f4a93d643b00fcf687e7677c4526b6942f0970c1
|
| --- /dev/null
|
| +++ b/components/favicon/core/favicon_driver_impl.h
|
| @@ -0,0 +1,98 @@
|
| +// Copyright 2015 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.
|
| +
|
| +#ifndef COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_IMPL_H_
|
| +#define COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_IMPL_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "components/favicon/core/favicon_driver.h"
|
| +
|
| +class GURL;
|
| +class SkBitmap;
|
| +
|
| +namespace bookmarks {
|
| +class BookmarkModel;
|
| +}
|
| +
|
| +namespace gfx {
|
| +class Image;
|
| +class Size;
|
| +}
|
| +
|
| +namespace history {
|
| +class HistoryService;
|
| +}
|
| +
|
| +namespace favicon {
|
| +
|
| +class FaviconDriverObserver;
|
| +class FaviconHandler;
|
| +class FaviconService;
|
| +struct FaviconURL;
|
| +
|
| +// FaviconDriverImpl is a partial implementation of FaviconDriver that allow
|
| +// sharing implementation between different embedder.
|
| +//
|
| +// FaviconDriverImpl works with FaviconHandlers to fetch the favicons. It
|
| +// fetches the given page's icons, requesting them from history backend. If the
|
| +// icon is not available or expired, the icon will be downloaded and saved in
|
| +// the history backend.
|
| +class FaviconDriverImpl : public FaviconDriver {
|
| + public:
|
| + // Favicon download callback.
|
| + // Public for testing.
|
| + void DidDownloadFavicon(int id,
|
| + int http_status_code,
|
| + const GURL& image_url,
|
| + const std::vector<SkBitmap>& bitmaps,
|
| + const std::vector<gfx::Size>& original_bitmap_sizes);
|
| +
|
| + // FaviconDriver implementation.
|
| + void FetchFavicon(const GURL& url) override;
|
| + void SaveFavicon() override;
|
| + bool IsBookmarked(const GURL& url) override;
|
| + void OnFaviconAvailable(const gfx::Image& image,
|
| + const GURL& icon_url,
|
| + bool is_active_favicon) override;
|
| + bool HasPendingTasksForTest() override;
|
| +
|
| + protected:
|
| + FaviconDriverImpl(FaviconService* favicon_service,
|
| + history::HistoryService* history_service,
|
| + bookmarks::BookmarkModel* bookmark_model);
|
| + ~FaviconDriverImpl() override;
|
| +
|
| + // Returns whether downloading favicon for |url| previously failed.
|
| + bool WasUnableToDownloadFavicon(const GURL& url);
|
| +
|
| + // Informs FaviconService that the favicon for |url| is out of date. If
|
| + // |force_reload| is true, then discard information about favicon download
|
| + // failures.
|
| + void SetFaviconOutOfDateForPage(const GURL& url, bool force_reload);
|
| +
|
| + // Broadcasts new favicon URL candidates to FaviconHandlers.
|
| + void OnUpdateFaviconURL(const std::vector<FaviconURL>& candidates);
|
| +
|
| + private:
|
| + // KeyedServices used by FaviconDriverImpl. They may be null during testing,
|
| + // but if they are defined, they must outlive the FaviconDriverImpl.
|
| + FaviconService* favicon_service_;
|
| + history::HistoryService* history_service_;
|
| + bookmarks::BookmarkModel* bookmark_model_;
|
| +
|
| + // FaviconHandlers used to download the different kind of favicons. Both
|
| + // |touch_icon_handler_| and |large_icon_handler_| may be null depending
|
| + // on the platform or variations.
|
| + scoped_ptr<FaviconHandler> favicon_handler_;
|
| + scoped_ptr<FaviconHandler> touch_icon_handler_;
|
| + scoped_ptr<FaviconHandler> large_icon_handler_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(FaviconDriverImpl);
|
| +};
|
| +
|
| +} // namespace favicon
|
| +
|
| +#endif // COMPONENTS_FAVICON_CORE_FAVICON_DRIVER_IMPL_H_
|
|
|