Chromium Code Reviews| Index: components/favicon/core/favicon_service_impl.h |
| diff --git a/components/favicon/core/favicon_service_impl.h b/components/favicon/core/favicon_service_impl.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ecd5f732e015bebc5dde0dc96dbcf14014a4cadd |
| --- /dev/null |
| +++ b/components/favicon/core/favicon_service_impl.h |
| @@ -0,0 +1,150 @@ |
| +// Copyright (c) 2012 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_SERVICE_IMPL_H_ |
| +#define COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_IMPL_H_ |
| + |
| +#include <stdint.h> |
| + |
| +#include <memory> |
| +#include <vector> |
| + |
| +#include "base/callback.h" |
| +#include "base/containers/hash_tables.h" |
| +#include "base/macros.h" |
| +#include "base/memory/ref_counted.h" |
| +#include "base/task/cancelable_task_tracker.h" |
| +#include "components/favicon/core/favicon_service.h" |
| +#include "components/favicon_base/favicon_callback.h" |
| +#include "components/favicon_base/favicon_types.h" |
| +#include "components/favicon_base/favicon_usage_data.h" |
| + |
| +class GURL; |
| + |
| +namespace history { |
| +class HistoryService; |
| +} |
| + |
| +namespace favicon { |
| + |
| +class FaviconClient; |
| + |
| +// The favicon service provides methods to access favicons. It calls the history |
| +// backend behind the scenes. The callbacks are run asynchronously, even in the |
| +// case of an error. |
| +class FaviconServiceImpl : public FaviconService { |
| + public: |
| + // |history_service| most not be nullptr and must outlive this object. |
| + FaviconServiceImpl(std::unique_ptr<FaviconClient> favicon_client, |
| + history::HistoryService* history_service); |
| + ~FaviconServiceImpl() override; |
| + |
| + // FaviconServiceInterface implementation. |
|
pkotwicz
2017/02/16 04:07:27
Nit: "FaviconServiceInterface implementation." ->
mastiz
2017/02/16 09:46:25
Done, thx!
|
| + base::CancelableTaskTracker::TaskId GetFaviconImage( |
| + const GURL& icon_url, |
| + const favicon_base::FaviconImageCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetRawFavicon( |
| + const GURL& icon_url, |
| + favicon_base::IconType icon_type, |
| + int desired_size_in_pixel, |
| + const favicon_base::FaviconRawBitmapCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetFavicon( |
| + const GURL& icon_url, |
| + favicon_base::IconType icon_type, |
| + int desired_size_in_dip, |
| + const favicon_base::FaviconResultsCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetFaviconImageForPageURL( |
| + const GURL& page_url, |
| + const favicon_base::FaviconImageCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetRawFaviconForPageURL( |
| + const GURL& page_url, |
| + int icon_types, |
| + int desired_size_in_pixel, |
| + const favicon_base::FaviconRawBitmapCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetLargestRawFaviconForPageURL( |
| + const GURL& page_url, |
| + const std::vector<int>& icon_types, |
| + int minimum_size_in_pixels, |
| + const favicon_base::FaviconRawBitmapCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetFaviconForPageURL( |
| + const GURL& page_url, |
| + int icon_types, |
| + int desired_size_in_dip, |
| + const favicon_base::FaviconResultsCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId UpdateFaviconMappingsAndFetch( |
| + const GURL& page_url, |
| + const std::vector<GURL>& icon_urls, |
| + int icon_types, |
| + int desired_size_in_dip, |
| + const favicon_base::FaviconResultsCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + base::CancelableTaskTracker::TaskId GetLargestRawFaviconForID( |
| + favicon_base::FaviconID favicon_id, |
| + const favicon_base::FaviconRawBitmapCallback& callback, |
| + base::CancelableTaskTracker* tracker) override; |
| + void SetFaviconOutOfDateForPage(const GURL& page_url) override; |
| + void SetImportedFavicons( |
| + const favicon_base::FaviconUsageDataList& favicon_usage) override; |
| + void MergeFavicon(const GURL& page_url, |
| + const GURL& icon_url, |
| + favicon_base::IconType icon_type, |
| + scoped_refptr<base::RefCountedMemory> bitmap_data, |
| + const gfx::Size& pixel_size) override; |
| + void SetFavicons(const GURL& page_url, |
| + const GURL& icon_url, |
| + favicon_base::IconType icon_type, |
| + const gfx::Image& image) override; |
| + void UnableToDownloadFavicon(const GURL& icon_url) override; |
| + bool WasUnableToDownloadFavicon(const GURL& icon_url) const override; |
| + void ClearUnableToDownloadFavicons() override; |
| + |
| + private: |
| + typedef uint32_t MissingFaviconURLHash; |
| + |
| + // Helper function for GetFaviconImageForPageURL(), GetRawFaviconForPageURL() |
| + // and GetFaviconForPageURL(). |
| + base::CancelableTaskTracker::TaskId GetFaviconForPageURLImpl( |
| + const GURL& page_url, |
| + int icon_types, |
| + const std::vector<int>& desired_sizes_in_pixel, |
| + const favicon_base::FaviconResultsCallback& callback, |
| + base::CancelableTaskTracker* tracker); |
| + |
| + // Intermediate callback for GetFaviconImage() and GetFaviconImageForPageURL() |
| + // so that history service can deal solely with FaviconResultsCallback. |
| + // Builds favicon_base::FaviconImageResult from |favicon_bitmap_results| and |
| + // runs |callback|. |
| + void RunFaviconImageCallbackWithBitmapResults( |
| + const favicon_base::FaviconImageCallback& callback, |
| + int desired_size_in_dip, |
| + const std::vector<favicon_base::FaviconRawBitmapResult>& |
| + favicon_bitmap_results); |
| + |
| + // Intermediate callback for GetRawFavicon() and GetRawFaviconForPageURL() |
| + // so that history service can deal solely with FaviconResultsCallback. |
| + // Resizes favicon_base::FaviconRawBitmapResult if necessary and runs |
| + // |callback|. |
| + void RunFaviconRawBitmapCallbackWithBitmapResults( |
| + const favicon_base::FaviconRawBitmapCallback& callback, |
| + int desired_size_in_pixel, |
| + const std::vector<favicon_base::FaviconRawBitmapResult>& |
| + favicon_bitmap_results); |
| + |
| + base::hash_set<MissingFaviconURLHash> missing_favicon_urls_; |
| + std::unique_ptr<FaviconClient> favicon_client_; |
| + history::HistoryService* history_service_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FaviconServiceImpl); |
| +}; |
| + |
| +} // namespace favicon |
| + |
| +#endif // COMPONENTS_FAVICON_CORE_FAVICON_SERVICE_IMPL_H_ |