| 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 d5f6e8af1790a049ad772ed2c5e34db56f804efc..b71204e87c025f3e20e393a6c404a9ec08b8cb72 100644
|
| --- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| @@ -365,7 +365,6 @@ static void applyColorSpaceConversion(sk_sp<SkImage>& image,
|
| }
|
| return;
|
| }
|
| -
|
| // Skia does not support drawing to unpremul surfaces/canvases.
|
| sk_sp<SkImage> unPremulImage = nullptr;
|
| if (image->alphaType() == kUnpremul_SkAlphaType)
|
| @@ -1102,7 +1101,16 @@ PassRefPtr<Image> ImageBitmap::getSourceImageForCanvas(
|
| SnapshotReason,
|
| const FloatSize&) const {
|
| *status = NormalSourceImageStatus;
|
| - return m_image ? m_image : nullptr;
|
| + if (!m_image)
|
| + return nullptr;
|
| + if (m_image->isPremultiplied())
|
| + return m_image;
|
| + // Skia does not support drawing unpremul SkImage on SkCanvas.
|
| + // Premultiply and return.
|
| + sk_sp<SkImage> premulSkImage = unPremulSkImageToPremul(
|
| + m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget())
|
| + .get());
|
| + return StaticBitmapImage::create(premulSkImage);
|
| }
|
|
|
| void ImageBitmap::adjustDrawRects(FloatRect* srcRect,
|
|
|