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(); |
} |