Index: third_party/WebKit/Source/core/frame/ImageBitmap.cpp |
diff --git a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp |
index 6e1733e395b22b9ee49313b33cbd3983f57c562f..aab6e966c468004b960add45994942ccdf20cdf6 100644 |
--- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp |
+++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp |
@@ -89,6 +89,19 @@ static PassRefPtr<SkImage> premulSkImageToUnPremul(SkImage* input) |
return newSkImageFromRaster(info, dstPixels.release(), input->width() * info.bytesPerPixel()); |
} |
+PassRefPtr<SkImage> ImageBitmap::getSkImageFromDecoder(PassOwnPtr<ImageDecoder> decoder) |
+{ |
+ if (!decoder->frameCount()) |
+ return nullptr; |
+ ImageFrame* frame = decoder->frameBufferAtIndex(0); |
+ if (!frame || frame->status() != ImageFrame::FrameComplete) |
+ return nullptr; |
+ SkBitmap bitmap = frame->bitmap(); |
+ if (!frameIsValid(bitmap)) |
+ return nullptr; |
+ return adoptRef(SkImage::NewFromBitmap(bitmap)); |
+} |
+ |
static PassRefPtr<StaticBitmapImage> cropImage(Image* image, const IntRect& cropRect, bool flipY, bool premultiplyAlpha, bool isBitmapPremultiplied = true) |
{ |
ASSERT(image); |
@@ -114,15 +127,9 @@ static PassRefPtr<StaticBitmapImage> cropImage(Image* image, const IntRect& crop |
if (!decoder) |
return nullptr; |
decoder->setData(image->data(), true); |
- if (!decoder->frameCount()) |
- return nullptr; |
- ImageFrame* frame = decoder->frameBufferAtIndex(0); |
- if (!frame || frame->status() != ImageFrame::FrameComplete) |
- return nullptr; |
- SkBitmap bitmap = frame->bitmap(); |
- if (!frameIsValid(bitmap)) |
+ skiaImage = ImageBitmap::getSkImageFromDecoder(decoder.release()); |
+ if (!skiaImage) |
return nullptr; |
- skiaImage = adoptRef(SkImage::NewFromBitmap(bitmap)); |
} |
if (cropRect == srcRect) { |