1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_
6 #define CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_
7 
8 #include <memory>
9 #include <vector>
10 
11 #include "chrome/browser/image_decoder/image_decoder.h"
12 #include "components/image_fetcher/core/image_decoder.h"
13 
14 // image_fetcher::ImageDecoder implementation.
15 class ImageDecoderImpl : public image_fetcher::ImageDecoder {
16  public:
17   ImageDecoderImpl();
18   ~ImageDecoderImpl() override;
19 
20   void DecodeImage(const std::string& image_data,
21                    const gfx::Size& desired_image_frame_size,
22                    image_fetcher::ImageDecodedCallback callback) override;
23 
24  private:
25   class DecodeImageRequest;
26 
27   // Removes the passed image decode |request| from the internal request queue.
28   void RemoveDecodeImageRequest(DecodeImageRequest* request);
29 
30   // All active image decoding requests.
31   std::vector<std::unique_ptr<DecodeImageRequest>> decode_image_requests_;
32 
33   DISALLOW_COPY_AND_ASSIGN(ImageDecoderImpl);
34 };
35 
36 #endif  // CHROME_BROWSER_IMAGE_FETCHER_IMAGE_DECODER_IMPL_H_
37