// 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. #ifndef COMPONENTS_IMAGE_FETCHER_IMAGE_FETCHER_H_ #define COMPONENTS_IMAGE_FETCHER_IMAGE_FETCHER_H_ #include #include "base/callback.h" #include "base/macros.h" #include "components/data_use_measurement/core/data_use_user_data.h" #include "components/image_fetcher/image_fetcher_delegate.h" #include "url/gurl.h" namespace gfx { class Image; class Size; } namespace image_fetcher { // A class used to fetch server images. It can be called from any thread and the // callback will be called on the thread which initiated the fetch. class ImageFetcher { public: ImageFetcher() {} virtual ~ImageFetcher() {} using DataUseServiceName = data_use_measurement::DataUseUserData::ServiceName; virtual void SetImageFetcherDelegate(ImageFetcherDelegate* delegate) = 0; // Sets a service name against which to track data usage. virtual void SetDataUseServiceName( DataUseServiceName data_use_service_name) = 0; // Sets the desired size for images with multiple frames (like .ico files). // By default, the image fetcher choses smaller images. Override to choose a // frame with a size as close as possible to |size| (trying to take one in // larger size if there's no precise match). Passing gfx::Size() as // |size| is also supported and will result in chosing the smallest available // size. virtual void SetDesiredImageFrameSize(const gfx::Size& size) = 0; // An empty gfx::Image will be returned to the callback in case the image // could not be fetched. virtual void StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, base::Callback callback) = 0; // TODO(treib,markusheintz): Now that iOS uses the same ImageFetcherImpl (see // crbug.com/689020), add a getter for the ImageDecoder here. private: DISALLOW_COPY_AND_ASSIGN(ImageFetcher); }; } // namespace image_fetcher #endif // COMPONENTS_IMAGE_FETCHER_IMAGE_FETCHER_H_