| 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 c397e7bcf1af164c711aaa7df78f4c5f4f835eef..92bb9b06880f739a6f47ea05b5396c20521d464e 100644 | 
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp | 
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp | 
| @@ -71,7 +71,7 @@ std::unique_ptr<ImageDecoder> ImageDecoder::create( | 
| PassRefPtr<SegmentReader> passData, | 
| bool dataComplete, | 
| AlphaOption alphaOption, | 
| -    GammaAndColorProfileOption colorOptions) { | 
| +    ColorSpaceOption colorOptions) { | 
| RefPtr<SegmentReader> data = passData; | 
|  | 
| // We need at least kLongestSignatureLength bytes to run the signature | 
| @@ -359,14 +359,16 @@ void ImageDecoder::setTargetColorProfile(const WebVector<char>& profile) { | 
| } | 
|  | 
| void ImageDecoder::setColorSpaceAndComputeTransform(const char* iccData, | 
| -                                                    unsigned iccLength, | 
| -                                                    bool useSRGB) { | 
| -  // Sub-classes should not call this if they were instructed to ignore embedded | 
| -  // color profiles. | 
| -  DCHECK(!m_ignoreGammaAndColorProfile); | 
| +                                                    unsigned iccLength) { | 
| +  setColorSpaceAndComputeTransform(SkColorSpace::NewICC(iccData, iccLength)); | 
| +} | 
| + | 
| +void ImageDecoder::setColorSpaceAndComputeTransform( | 
| +    sk_sp<SkColorSpace> srcSpace) { | 
| +  DCHECK(!m_ignoreColorSpace); | 
|  | 
| -  m_colorProfile.assign(iccData, iccLength); | 
| -  m_hasColorProfile = true; | 
| +  m_srcSpace = srcSpace; | 
| +  m_sourceToOutputDeviceColorTransform = nullptr; | 
|  | 
| // With color correct rendering, we do not transform to the output color space | 
| // at decode time.  Instead, we tag the raw image pixels and pass the tagged | 
| @@ -374,17 +376,7 @@ void ImageDecoder::setColorSpaceAndComputeTransform(const char* iccData, | 
| if (RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) | 
| return; | 
|  | 
| -  m_sourceToOutputDeviceColorTransform = nullptr; | 
| - | 
| -  // Create the input profile. | 
| -  sk_sp<SkColorSpace> srcSpace = nullptr; | 
| -  if (useSRGB) { | 
| -    srcSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); | 
| -  } else { | 
| -    srcSpace = SkColorSpace::NewICC(iccData, iccLength); | 
| -  } | 
| - | 
| -  if (!srcSpace) | 
| +  if (!m_srcSpace) | 
| return; | 
|  | 
| // Take a lock around initializing and accessing the global device color | 
|  |