| Index: third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp | 
| diff --git a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp | 
| index c791aa4197a8ce6fff89446fc06da839a49c9a1e..847c246d3f240bc0caca62f0ffca1762fe48ee6d 100644 | 
| --- a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp | 
| +++ b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp | 
| @@ -90,7 +90,6 @@ DeferredImageDecoder::DeferredImageDecoder( | 
| : m_allDataReceived(false), | 
| m_actualDecoder(std::move(actualDecoder)), | 
| m_repetitionCount(cAnimationNone), | 
| -      m_hasColorSpace(false), | 
| m_canYUVDecode(false), | 
| m_hasHotSpot(false) {} | 
|  | 
| @@ -179,8 +178,9 @@ bool DeferredImageDecoder::isSizeAvailable() { | 
| return m_actualDecoder ? m_actualDecoder->isSizeAvailable() : true; | 
| } | 
|  | 
| -bool DeferredImageDecoder::hasColorSpace() const { | 
| -  return m_actualDecoder ? m_actualDecoder->hasColorSpace() : m_hasColorSpace; | 
| +bool DeferredImageDecoder::hasEmbeddedColorSpace() const { | 
| +  return m_actualDecoder ? m_actualDecoder->hasEmbeddedColorSpace() | 
| +                         : m_hasEmbeddedColorSpace; | 
| } | 
|  | 
| IntSize DeferredImageDecoder::size() const { | 
| @@ -266,7 +266,7 @@ void DeferredImageDecoder::activateLazyDecoding() { | 
| // future.) | 
| m_canYUVDecode = RuntimeEnabledFeatures::decodeToYUVEnabled() && | 
| (m_filenameExtension == "jpg"); | 
| -  m_hasColorSpace = m_actualDecoder->hasColorSpace(); | 
| +  m_hasEmbeddedColorSpace = m_actualDecoder->hasEmbeddedColorSpace(); | 
|  | 
| const bool isSingleFrame = | 
| m_actualDecoder->repetitionCount() == cAnimationNone || | 
| @@ -274,7 +274,8 @@ void DeferredImageDecoder::activateLazyDecoding() { | 
| const SkISize decodedSize = | 
| SkISize::Make(m_actualDecoder->decodedSize().width(), | 
| m_actualDecoder->decodedSize().height()); | 
| -  m_frameGenerator = ImageFrameGenerator::create(decodedSize, !isSingleFrame); | 
| +  m_frameGenerator = ImageFrameGenerator::create( | 
| +      decodedSize, m_actualDecoder->colorSpace(), !isSingleFrame); | 
| } | 
|  | 
| void DeferredImageDecoder::prepareLazyDecodedFrames() { | 
| @@ -311,13 +312,6 @@ void DeferredImageDecoder::prepareLazyDecodedFrames() { | 
| } | 
| } | 
|  | 
| -inline SkImageInfo imageInfoFrom(const SkISize& decodedSize, | 
| -                                 bool knownToBeOpaque) { | 
| -  return SkImageInfo::MakeN32( | 
| -      decodedSize.width(), decodedSize.height(), | 
| -      knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| -} | 
| - | 
| sk_sp<SkImage> DeferredImageDecoder::createFrameImageAtIndex( | 
| size_t index, | 
| bool knownToBeOpaque) { | 
| @@ -328,9 +322,14 @@ sk_sp<SkImage> DeferredImageDecoder::createFrameImageAtIndex( | 
| sk_sp<SkROBuffer> roBuffer(m_rwBuffer->newRBufferSnapshot()); | 
| RefPtr<SegmentReader> segmentReader = | 
| SegmentReader::createFromSkROBuffer(std::move(roBuffer)); | 
| + | 
| +  SkImageInfo info = SkImageInfo::MakeN32( | 
| +      decodedSize.width(), decodedSize.height(), | 
| +      knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType, | 
| +      m_frameGenerator->getColorSpace()); | 
| + | 
| DecodingImageGenerator* generator = new DecodingImageGenerator( | 
| -      m_frameGenerator, imageInfoFrom(decodedSize, knownToBeOpaque), | 
| -      segmentReader.release(), m_allDataReceived, index, | 
| +      m_frameGenerator, info, segmentReader.release(), m_allDataReceived, index, | 
| m_frameData[index].m_uniqueID); | 
| sk_sp<SkImage> image = SkImage::MakeFromGenerator( | 
| generator);  // SkImage takes ownership of the generator. | 
|  |