Index: chrome/browser/image_decoder.h |
diff --git a/chrome/browser/image_decoder.h b/chrome/browser/image_decoder.h |
index 2c8160d6f3989a7e6133937035c3a6d1e9f6ee8b..d8bda97454fab4f214441aa5624a14423f0b330e 100644 |
--- a/chrome/browser/image_decoder.h |
+++ b/chrome/browser/image_decoder.h |
@@ -6,35 +6,29 @@ |
#define CHROME_BROWSER_IMAGE_DECODER_H_ |
#include <map> |
-#include <memory> |
#include <string> |
#include <vector> |
-#include "base/lazy_instance.h" |
#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" |
-#include "base/timer/timer.h" |
-#include "build/build_config.h" |
-#include "chrome/common/image_decoder.mojom.h" |
-#include "content/public/browser/utility_process_host.h" |
-#include "content/public/browser/utility_process_host_client.h" |
class SkBitmap; |
-// This is a helper class for decoding images safely in a utility process. To |
+// 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. |
// |
-// Internally, most of the work happens on the IO thread, and then |
-// the callback (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. |map_lock_| is used |
-// to protect the data that is accessed from multiple threads. |
-class ImageDecoder : public content::UtilityProcessHostClient { |
+// 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. |
@@ -52,8 +46,9 @@ class ImageDecoder : public content::UtilityProcessHostClient { |
} |
protected: |
- // Creates an ImageRequest that runs on the thread creating it. |
+ // 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( |
@@ -76,6 +71,9 @@ class ImageDecoder : public content::UtilityProcessHostClient { |
#endif // defined(OS_CHROMEOS) |
}; |
+ ImageDecoder(); |
+ ~ImageDecoder(); |
+ |
// Calls StartWithOptions() with ImageCodec::DEFAULT_CODEC and |
// shrink_to_fit = false. |
static void Start(ImageRequest* image_request, |
@@ -101,54 +99,19 @@ class ImageDecoder : public content::UtilityProcessHostClient { |
static void Cancel(ImageRequest* image_request); |
private: |
- friend struct base::DefaultLazyInstanceTraits<ImageDecoder>; |
- |
using RequestMap = std::map<int, ImageRequest*>; |
- ImageDecoder(); |
- // It's a reference counted object, so destructor is private. |
- ~ImageDecoder() override; |
- |
- // Sends a request to the sandboxed process to decode the image. Starts |
- // batch mode if necessary. If the utility process fails to start, |
- // an OnDecodeImageFailed task is posted to image_request's |task_runner_|. |
- void DecodeImageInSandbox(int request_id, |
- std::vector<uint8_t> image_data, |
- ImageCodec image_codec, |
- bool shrink_to_fit); |
- |
void StartWithOptionsImpl(ImageRequest* image_request, |
std::vector<uint8_t> image_data, |
ImageCodec image_codec, |
bool shrink_to_fit); |
- void CancelImpl(ImageRequest* image_request); |
- |
- // Starts UtilityProcessHost in batch mode and starts |batch_mode_timer_|. |
- // If the utility process fails to start, the method resets |
- // |utility_process_host_| and returns. |
- void StartBatchMode(); |
- |
- // Stops batch mode if no requests have come in since |
- // |kBatchModeTimeoutSeconds|. |
- void StopBatchMode(); |
- |
- // Fails all outstanding requests. |
- void FailAllRequests(); |
- // Overidden from UtilityProcessHostClient. |
- void OnProcessCrashed(int exit_code) override; |
- void OnProcessLaunchFailed(int error_code) override; |
- bool OnMessageReceived(const IPC::Message& message) override; |
+ void CancelImpl(ImageRequest* image_request); |
// IPC message handlers. |
void OnDecodeImageSucceeded(const SkBitmap& decoded_image, int request_id); |
void OnDecodeImageFailed(int request_id); |
- // For the ImageRequest identified by |request_id|, call its OnImageDecoded() |
- // or OnDecodeImageFailed() method on its task runner thread. |
- void RunOnImageDecoded(const SkBitmap& decoded_image, int request_id); |
- void RunOnDecodeImageFailed(int request_id); |
- |
// id to use for the next Start() request that comes in. |
int image_request_id_counter_; |
@@ -158,17 +121,6 @@ class ImageDecoder : public content::UtilityProcessHostClient { |
// Protects |image_request_id_map_| and |image_request_id_counter_|. |
base::Lock map_lock_; |
- // The UtilityProcessHost requests are sent to. |
- base::WeakPtr<content::UtilityProcessHost> utility_process_host_; |
- |
- // Calls StopBatchMode() after |kBatchModeTimeoutSeconds| have elapsed, |
- // unless a new decoding request resets the timer. |
- std::unique_ptr<base::DelayTimer> batch_mode_timer_; |
- |
- // Mojo service connection. Must always be bound/reset and used on the IO |
- // thread. |
- mojom::ImageDecoderPtr decoder_; |
- |
DISALLOW_COPY_AND_ASSIGN(ImageDecoder); |
}; |