cc: ImageDecodes: Remove ref counting from SIDC::DecodedImage.

This patch removes ref counting from DecodedImage class in
SoftwareImageDecodeController.

BUG=592823
R=enne, ericrk
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1778673005

Cr-Commit-Position: refs/heads/master@{#380789}
diff --git a/cc/tiles/software_image_decode_controller.h b/cc/tiles/software_image_decode_controller.h
index d68ac90c..7e370bb8 100644
--- a/cc/tiles/software_image_decode_controller.h
+++ b/cc/tiles/software_image_decode_controller.h
@@ -118,12 +118,12 @@
  private:
   // DecodedImage is a convenience storage for discardable memory. It can also
   // construct an image out of SkImageInfo and stored discardable memory.
-  // TODO(vmpstr): Make this scoped_ptr.
-  class DecodedImage : public base::RefCounted<DecodedImage> {
+  class DecodedImage {
    public:
     DecodedImage(const SkImageInfo& info,
                  scoped_ptr<base::DiscardableMemory> memory,
                  const SkSize& src_rect_offset);
+    ~DecodedImage();
 
     SkImage* image() const {
       DCHECK(locked_);
@@ -137,10 +137,6 @@
     void Unlock();
 
    private:
-    friend class base::RefCounted<DecodedImage>;
-
-    ~DecodedImage();
-
     bool locked_;
     SkImageInfo image_info_;
     scoped_ptr<base::DiscardableMemory> memory_;
@@ -175,8 +171,8 @@
   // Actually decode the image. Note that this function can (and should) be
   // called with no lock acquired, since it can do a lot of work. Note that it
   // can also return nullptr to indicate the decode failed.
-  scoped_refptr<DecodedImage> DecodeImageInternal(const ImageKey& key,
-                                                  const DrawImage& draw_image);
+  scoped_ptr<DecodedImage> DecodeImageInternal(const ImageKey& key,
+                                               const DrawImage& draw_image);
 
   // Get the decoded draw image for the given key and draw_image. Note that this
   // function has to be called with no lock acquired, since it will acquire its
@@ -207,9 +203,8 @@
   // ensure that they are safe to access on multiple threads.
   base::Lock lock_;
 
-  using ImageMRUCache = base::HashingMRUCache<ImageKey,
-                                              scoped_refptr<DecodedImage>,
-                                              ImageKeyHash>;
+  using ImageMRUCache =
+      base::HashingMRUCache<ImageKey, scoped_ptr<DecodedImage>, ImageKeyHash>;
 
   // Decoded images and ref counts (predecode path).
   ImageMRUCache decoded_images_;