Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| index 92bb9b06880f739a6f47ea05b5396c20521d464e..6c9900891c702639bcd66956ade380218c9d6574 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| @@ -358,16 +358,27 @@ void ImageDecoder::setTargetColorProfile(const WebVector<char>& profile) { |
| BitmapImageMetrics::countGamma(gTargetColorSpace); |
| } |
| -void ImageDecoder::setColorSpaceAndComputeTransform(const char* iccData, |
| - unsigned iccLength) { |
| - setColorSpaceAndComputeTransform(SkColorSpace::NewICC(iccData, iccLength)); |
| +sk_sp<SkColorSpace> ImageDecoder::colorSpace() const { |
| + if (!RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) |
| + return nullptr; |
| + |
| + if (m_embeddedColorSpace) |
| + return m_embeddedColorSpace; |
| + return SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); |
| +} |
| + |
| +void ImageDecoder::setColorProfileAndComputeTransform(const char* iccData, |
| + unsigned iccLength) { |
| + sk_sp<SkColorSpace> colorSpace = SkColorSpace::NewICC(iccData, iccLength); |
|
Justin Novosad
2016/10/31 14:55:13
I feel that at this point the nullness of ColorSpa
ccameron
2016/10/31 18:10:18
Yes, definitely. Added. We should also consider so
|
| + setColorSpaceAndComputeTransform(colorSpace); |
| } |
| void ImageDecoder::setColorSpaceAndComputeTransform( |
| - sk_sp<SkColorSpace> srcSpace) { |
| + sk_sp<SkColorSpace> colorSpace) { |
| DCHECK(!m_ignoreColorSpace); |
| - m_srcSpace = srcSpace; |
| + m_embeddedColorSpace = colorSpace; |
| + |
| m_sourceToOutputDeviceColorTransform = nullptr; |
| // With color correct rendering, we do not transform to the output color space |
| @@ -376,7 +387,7 @@ void ImageDecoder::setColorSpaceAndComputeTransform( |
| if (RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) |
| return; |
| - if (!m_srcSpace) |
| + if (!m_embeddedColorSpace) |
| return; |
| // Take a lock around initializing and accessing the global device color |
| @@ -390,12 +401,12 @@ void ImageDecoder::setColorSpaceAndComputeTransform( |
| SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named).release(); |
| } |
| - if (SkColorSpace::Equals(srcSpace.get(), gTargetColorSpace)) { |
| + if (SkColorSpace::Equals(m_embeddedColorSpace.get(), gTargetColorSpace)) { |
| return; |
| } |
| m_sourceToOutputDeviceColorTransform = |
| - SkColorSpaceXform::New(srcSpace.get(), gTargetColorSpace); |
| + SkColorSpaceXform::New(m_embeddedColorSpace.get(), gTargetColorSpace); |
| } |
| } // namespace blink |