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

Unified Diff: chrome/browser/image_decoder.h

Issue 2763103002: Move ImageDecoder to components/image_fetcher/content (Closed)
Patch Set: Rebased. Created 3 years, 9 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
« no previous file with comments | « chrome/browser/favicon/large_icon_service_factory.cc ('k') | chrome/browser/image_decoder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/image_decoder.h
diff --git a/chrome/browser/image_decoder.h b/chrome/browser/image_decoder.h
deleted file mode 100644
index 2a0d3225aaf2329bcb382fefd005a2c88b60ba3c..0000000000000000000000000000000000000000
--- a/chrome/browser/image_decoder.h
+++ /dev/null
@@ -1,140 +0,0 @@
-// 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 CHROME_BROWSER_IMAGE_DECODER_H_
-#define CHROME_BROWSER_IMAGE_DECODER_H_
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/sequence_checker.h"
-#include "base/sequenced_task_runner.h"
-#include "base/synchronization/lock.h"
-
-namespace gfx {
-class Size;
-} // namespace gfx
-
-class SkBitmap;
-
-// This is a helper class for decoding images safely in a sandboxed service. To
-// use this, call ImageDecoder::Start(...) or
-// ImageDecoder::StartWithOptions(...) on any thread.
-//
-// ImageRequest::OnImageDecoded or ImageRequest::OnDecodeImageFailed is posted
-// back to the |task_runner_| associated with the ImageRequest.
-//
-// The Cancel() method runs on whichever thread called it.
-//
-// TODO(rockot): Use of this class should be replaced with direct image_decoder
-// client library usage.
-class ImageDecoder {
- public:
- // ImageRequest objects needs to be created and destroyed on the same
- // SequencedTaskRunner.
- class ImageRequest {
- public:
- // Called when image is decoded.
- virtual void OnImageDecoded(const SkBitmap& decoded_image) = 0;
-
- // Called when decoding image failed. ImageRequest can do some cleanup in
- // this handler.
- virtual void OnDecodeImageFailed() {}
-
- base::SequencedTaskRunner* task_runner() const {
- return task_runner_.get();
- }
-
- protected:
- // Creates an ImageRequest that runs on the thread which created it.
- ImageRequest();
-
- // Explicitly pass in |task_runner| if the current thread is part of a
- // thread pool.
- explicit ImageRequest(
- const scoped_refptr<base::SequencedTaskRunner>& task_runner);
- virtual ~ImageRequest();
-
- private:
- // The thread to post OnImageDecoded() or OnDecodeImageFailed() once the
- // the image has been decoded.
- const scoped_refptr<base::SequencedTaskRunner> task_runner_;
-
- base::SequenceChecker sequence_checker_;
- };
-
- enum ImageCodec {
- DEFAULT_CODEC = 0, // Uses WebKit image decoding (via WebImage).
-#if defined(OS_CHROMEOS)
- ROBUST_JPEG_CODEC, // Restrict decoding to robust jpeg codec.
- ROBUST_PNG_CODEC, // Restrict decoding to robust PNG codec.
-#endif // defined(OS_CHROMEOS)
- };
-
- static ImageDecoder* GetInstance();
-
- // Calls StartWithOptions() with ImageCodec::DEFAULT_CODEC and
- // shrink_to_fit = false.
- static void Start(ImageRequest* image_request,
- std::vector<uint8_t> image_data);
- // Deprecated. Use std::vector<uint8_t> version to avoid an extra copy.
- static void Start(ImageRequest* image_request,
- const std::string& image_data);
-
- // Starts asynchronous image decoding. Once finished, the callback will be
- // posted back to image_request's |task_runner_|.
- // For images with multiple frames (e.g. ico files), a frame with a size as
- // close as possible to |desired_image_frame_size| is chosen (tries to take
- // one in larger size if there's no precise match). Passing gfx::Size() as
- // |desired_image_frame_size| is also supported and will result in chosing the
- // smallest available size.
- static void StartWithOptions(ImageRequest* image_request,
- std::vector<uint8_t> image_data,
- ImageCodec image_codec,
- bool shrink_to_fit,
- const gfx::Size& desired_image_frame_size);
- // Deprecated. Use std::vector<uint8_t> version to avoid an extra copy.
- static void StartWithOptions(ImageRequest* image_request,
- const std::string& image_data,
- ImageCodec image_codec,
- bool shrink_to_fit);
-
- // Removes all instances of |image_request| from |image_request_id_map_|,
- // ensuring callbacks are not made to the image_request after it is destroyed.
- static void Cancel(ImageRequest* image_request);
-
- private:
- using RequestMap = std::map<int, ImageRequest*>;
-
- ImageDecoder();
- ~ImageDecoder() = delete;
-
- void StartWithOptionsImpl(ImageRequest* image_request,
- std::vector<uint8_t> image_data,
- ImageCodec image_codec,
- bool shrink_to_fit,
- const gfx::Size& desired_image_frame_size);
-
- void CancelImpl(ImageRequest* image_request);
-
- // IPC message handlers.
- void OnDecodeImageSucceeded(const SkBitmap& decoded_image, int request_id);
- void OnDecodeImageFailed(int request_id);
-
- // id to use for the next Start() request that comes in.
- int image_request_id_counter_;
-
- // Map of request id's to ImageRequests.
- RequestMap image_request_id_map_;
-
- // Protects |image_request_id_map_| and |image_request_id_counter_|.
- base::Lock map_lock_;
-
- DISALLOW_COPY_AND_ASSIGN(ImageDecoder);
-};
-
-#endif // CHROME_BROWSER_IMAGE_DECODER_H_
« no previous file with comments | « chrome/browser/favicon/large_icon_service_factory.cc ('k') | chrome/browser/image_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698