Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1344)

Unified Diff: components/favicon/core/favicon_driver_impl.h

Issue 1064823002: Componentize FaviconTabHelper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@favicon-notification
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..cb7c8bc8578e0df039f47d9f1dfd762552acb5f8
--- /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 fethes
droger 2015/04/07 15:33:24 s/fethes/fetches/
sdefresne 2015/04/07 16:50:06 Done.
+// the given page's icons, requesting them from history backend. If it 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();
+
+ // 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_

Powered by Google App Engine
This is Rietveld 408576698