Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Unified Diff: third_party/WebKit/Source/core/frame/ImageBitmap.cpp

Issue 1696753002: Change createImageBitmap(Blob) to use ImageDecoder instead of ImageSource (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {
« no previous file with comments | « third_party/WebKit/Source/core/frame/ImageBitmap.h ('k') | third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698