| 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) {
|
|
|