| // Copyright 2016 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 CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_ | 
 | #define CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_ | 
 |  | 
 | #include <memory> | 
 | #include <vector> | 
 |  | 
 | #include "chrome/browser/image_decoder/image_decoder.h" | 
 | #include "components/image_fetcher/core/image_decoder.h" | 
 |  | 
 | // image_fetcher::ImageDecoder implementation. | 
 | class ImageDecoderImpl : public image_fetcher::ImageDecoder { | 
 |  public: | 
 |   ImageDecoderImpl(); | 
 |   ~ImageDecoderImpl() override; | 
 |  | 
 |   void DecodeImage(const std::string& image_data, | 
 |                    const gfx::Size& desired_image_frame_size, | 
 |                    image_fetcher::ImageDecodedCallback callback) override; | 
 |  | 
 |  private: | 
 |   class DecodeImageRequest; | 
 |  | 
 |   // Removes the passed image decode |request| from the internal request queue. | 
 |   void RemoveDecodeImageRequest(DecodeImageRequest* request); | 
 |  | 
 |   // All active image decoding requests. | 
 |   std::vector<std::unique_ptr<DecodeImageRequest>> decode_image_requests_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(ImageDecoderImpl); | 
 | }; | 
 |  | 
 | #endif  // CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_ |