| 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 776800c8b50edcf2a1e08e937bc39e32d2611268..64d6a6849b9a8bb9e2da1cac52ec8ef7bee55a23 100644
|
| --- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| @@ -300,7 +300,10 @@ static PassRefPtr<StaticBitmapImage> cropImage(
|
| static_cast<unsigned>(info.width()) * info.bytesPerPixel()));
|
| }
|
|
|
| - sk_sp<SkImage> skiaImage = image->imageForCurrentFrame();
|
| + // TODO(ccameron): Canvas should operate in sRGB and not display space.
|
| + // https://crbug.com/667431
|
| + sk_sp<SkImage> skiaImage =
|
| + image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget());
|
| // Attempt to get raw unpremultiplied image data, executed only when skiaImage
|
| // is premultiplied.
|
| if ((((!parsedOptions.premultiplyAlpha && !skiaImage->isOpaque()) ||
|
| @@ -398,7 +401,10 @@ ImageBitmap::ImageBitmap(HTMLImageElement* image,
|
| return;
|
| // In the case where the source image is lazy-decoded, m_image may not be in
|
| // a decoded state, we trigger it here.
|
| - sk_sp<SkImage> skImage = m_image->imageForCurrentFrame();
|
| + // TODO(ccameron): Canvas should operate in sRGB and not display space.
|
| + // https://crbug.com/667431
|
| + sk_sp<SkImage> skImage =
|
| + m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget());
|
| SkPixmap pixmap;
|
| if (!skImage->isTextureBacked() && !skImage->peekPixels(&pixmap)) {
|
| sk_sp<SkSurface> surface =
|
| @@ -489,8 +495,11 @@ ImageBitmap::ImageBitmap(HTMLCanvasElement* canvas,
|
| return;
|
| if (isPremultiplyAlphaReverted) {
|
| parsedOptions.premultiplyAlpha = false;
|
| - m_image = StaticBitmapImage::create(
|
| - premulSkImageToUnPremul(m_image->imageForCurrentFrame().get()));
|
| + // TODO(ccameron): Canvas should operate in sRGB and not display space.
|
| + // https://crbug.com/667431
|
| + m_image = StaticBitmapImage::create(premulSkImageToUnPremul(
|
| + m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget())
|
| + .get()));
|
| }
|
| if (!m_image)
|
| return;
|
| @@ -806,8 +815,12 @@ PassRefPtr<Uint8Array> ImageBitmap::copyBitmapData(AlphaDisposition alphaOp,
|
| (format == RGBAColorType) ? kRGBA_8888_SkColorType : kN32_SkColorType,
|
| (alphaOp == PremultiplyAlpha) ? kPremul_SkAlphaType
|
| : kUnpremul_SkAlphaType);
|
| - RefPtr<Uint8Array> dstPixels =
|
| - copySkImageData(m_image->imageForCurrentFrame().get(), info);
|
| + // TODO(ccameron): Canvas should operate in sRGB and not display space.
|
| + // https://crbug.com/667431
|
| + RefPtr<Uint8Array> dstPixels = copySkImageData(
|
| + m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget())
|
| + .get(),
|
| + info);
|
| return dstPixels.release();
|
| }
|
|
|
|
|