Commit bb1454a4 authored by Florin Malita's avatar Florin Malita Committed by Commit Bot

Clarify ImageRepSkia constructor arg ownership

Use smart pointers to make the ownership transfer self-documenting.

Change-Id: Ia685023795257c648bfa44637c95e387626ca23a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1503626Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Cr-Commit-Position: refs/heads/master@{#638149}
parent 56720f17
......@@ -148,11 +148,8 @@ class ImageRepPNG : public ImageRep {
class ImageRepSkia : public ImageRep {
public:
// Takes ownership of |image|.
explicit ImageRepSkia(ImageSkia* image)
: ImageRep(Image::kImageRepSkia),
image_(image) {
}
explicit ImageRepSkia(std::unique_ptr<ImageSkia> image)
: ImageRep(Image::kImageRepSkia), image_(std::move(image)) {}
~ImageRepSkia() override {}
......@@ -345,8 +342,8 @@ Image::Image(const std::vector<ImagePNGRep>& image_reps) {
Image::Image(const ImageSkia& image) {
if (!image.isNull()) {
storage_ = new internal::ImageStorage(Image::kImageRepSkia);
AddRepresentation(
std::make_unique<internal::ImageRepSkia>(new ImageSkia(image)));
AddRepresentation(std::make_unique<internal::ImageRepSkia>(
std::make_unique<ImageSkia>(image)));
}
}
......@@ -425,16 +422,16 @@ const ImageSkia* Image::ToImageSkia() const {
const internal::ImageRepCocoaTouch* native_rep =
GetRepresentation(kImageRepCocoaTouch, true)
->AsImageRepCocoaTouch();
scoped_rep.reset(new internal::ImageRepSkia(
new ImageSkia(ImageSkiaFromUIImage(native_rep->image()))));
scoped_rep.reset(new internal::ImageRepSkia(std::make_unique<ImageSkia>(
ImageSkiaFromUIImage(native_rep->image()))));
break;
}
#elif defined(OS_MACOSX)
case kImageRepCocoa: {
const internal::ImageRepCocoa* native_rep =
GetRepresentation(kImageRepCocoa, true)->AsImageRepCocoa();
scoped_rep.reset(new internal::ImageRepSkia(
new ImageSkia(ImageSkiaFromNSImage(native_rep->image()))));
scoped_rep.reset(new internal::ImageRepSkia(std::make_unique<ImageSkia>(
ImageSkiaFromNSImage(native_rep->image()))));
break;
}
#endif
......
......@@ -4,6 +4,7 @@
#include "ui/gfx/image/image_platform.h"
#include <memory>
#include <set>
#include <utility>
......@@ -16,12 +17,11 @@ namespace internal {
namespace {
// Returns a 16x16 red image to visually show error in decoding PNG.
// Caller takes ownership of returned ImageSkia.
ImageSkia* GetErrorImageSkia() {
std::unique_ptr<ImageSkia> GetErrorImageSkia() {
SkBitmap bitmap;
bitmap.allocN32Pixels(16, 16);
bitmap.eraseARGB(0xff, 0xff, 0, 0);
return new ImageSkia(ImageSkiaRep(bitmap, 1.0f));
return std::make_unique<ImageSkia>(ImageSkiaRep(bitmap, 1.0f));
}
class PNGImageSource : public ImageSkiaSource {
......@@ -90,7 +90,8 @@ class PNGImageSource : public ImageSkiaSource {
} // namespace
ImageSkia* ImageSkiaFromPNG(const std::vector<ImagePNGRep>& image_png_reps) {
std::unique_ptr<ImageSkia> ImageSkiaFromPNG(
const std::vector<ImagePNGRep>& image_png_reps) {
if (image_png_reps.empty())
return GetErrorImageSkia();
std::unique_ptr<PNGImageSource> image_source(new PNGImageSource);
......@@ -103,7 +104,7 @@ ImageSkia* ImageSkiaFromPNG(const std::vector<ImagePNGRep>& image_png_reps) {
DCHECK(!size.IsEmpty());
if (size.IsEmpty())
return GetErrorImageSkia();
return new ImageSkia(std::move(image_source), size);
return std::make_unique<ImageSkia>(std::move(image_source), size);
}
scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
......
......@@ -109,11 +109,11 @@ scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
return Get1xPNGBytesFromUIImage(image);
}
ImageSkia* ImageSkiaFromPNG(
std::unique_ptr<ImageSkia> ImageSkiaFromPNG(
const std::vector<gfx::ImagePNGRep>& image_png_reps) {
// iOS does not expose libpng, so conversion from PNG to ImageSkia must go
// through UIImage.
gfx::ImageSkia* image_skia = new gfx::ImageSkia();
auto image_skia = std::make_unique<gfx::ImageSkia>();
for (size_t i = 0; i < image_png_reps.size(); ++i) {
base::scoped_nsobject<UIImage> uiimage(
CreateUIImageFromImagePNGRep(image_png_reps[i]));
......
......@@ -11,6 +11,7 @@
#ifndef UI_GFX_IMAGE_IMAGE_PLATFORM_H_
#define UI_GFX_IMAGE_IMAGE_PLATFORM_H_
#include <memory>
#include <vector>
#include "base/memory/ref_counted.h"
......@@ -45,7 +46,8 @@ NSImage* NSImageFromPNG(const std::vector<ImagePNGRep>& image_png_reps,
gfx::Size NSImageSize(NSImage* image);
#endif // defined(OS_MACOSX)
ImageSkia* ImageSkiaFromPNG(const std::vector<ImagePNGRep>& image_png_reps);
std::unique_ptr<ImageSkia> ImageSkiaFromPNG(
const std::vector<ImagePNGRep>& image_png_reps);
scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
const ImageSkia* image_skia);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment