Index: third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp |
diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp |
index 8971ed623764129fce65dc0ba0b7bdb8b9481da7..97e8f79d9d70dfa02fc32e404063e98e5991c527 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp |
+++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp |
@@ -508,7 +508,10 @@ void HTMLCanvasElement::notifyListenersCanvasChanged() { |
FloatSize()); |
if (status != NormalSourceImageStatus) |
return; |
- sk_sp<SkImage> image = sourceImage->imageForCurrentFrame(); |
+ // TODO(ccameron): Canvas should produce sRGB images. |
+ // https://crbug.com/672299 |
+ sk_sp<SkImage> image = sourceImage->imageForCurrentFrame( |
+ ColorBehavior::transformToGlobalTarget()); |
for (CanvasDrawListener* listener : m_listeners) { |
if (listener->needsNewFrame()) { |
listener->sendNewFrame(image); |
@@ -638,7 +641,10 @@ ImageData* HTMLCanvasElement::toImageData(SourceDrawingBuffer sourceBuffer, |
if (hasImageBuffer()) { |
snapshot = buffer()->newSkImageSnapshot(PreferNoAcceleration, reason); |
} else if (placeholderFrame()) { |
- snapshot = placeholderFrame()->imageForCurrentFrame(); |
+ // TODO(ccameron): Canvas should produce sRGB images. |
+ // https://crbug.com/672299 |
+ snapshot = placeholderFrame()->imageForCurrentFrame( |
+ ColorBehavior::transformToGlobalTarget()); |
} |
if (snapshot) { |
@@ -1225,6 +1231,8 @@ PassRefPtr<Image> HTMLCanvasElement::getSourceImageForCanvas( |
return m_context->getImage(hint, reason); |
sk_sp<SkImage> skImage; |
+ // TODO(ccameron): Canvas should produce sRGB images. |
+ // https://crbug.com/672299 |
if (m_context->is3d()) { |
// Because WebGL sources always require making a copy of the back buffer, we |
// use paintRenderingResultsToCanvas instead of getImage in order to keep a |
@@ -1232,7 +1240,8 @@ PassRefPtr<Image> HTMLCanvasElement::getSourceImageForCanvas( |
renderingContext()->paintRenderingResultsToCanvas(BackBuffer); |
skImage = hasImageBuffer() |
? buffer()->newSkImageSnapshot(hint, reason) |
- : createTransparentImage(size())->imageForCurrentFrame(); |
+ : createTransparentImage(size())->imageForCurrentFrame( |
+ ColorBehavior::transformToGlobalTarget()); |
} else { |
if (ExpensiveCanvasHeuristicParameters:: |
DisableAccelerationToAvoidReadbacks && |
@@ -1241,8 +1250,11 @@ PassRefPtr<Image> HTMLCanvasElement::getSourceImageForCanvas( |
hasImageBuffer()) |
buffer()->disableAcceleration(); |
RefPtr<blink::Image> image = renderingContext()->getImage(hint, reason); |
- skImage = image ? image->imageForCurrentFrame() |
- : createTransparentImage(size())->imageForCurrentFrame(); |
+ skImage = image |
+ ? image->imageForCurrentFrame( |
+ ColorBehavior::transformToGlobalTarget()) |
+ : createTransparentImage(size())->imageForCurrentFrame( |
+ ColorBehavior::transformToGlobalTarget()); |
} |
if (skImage) { |