| 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
|
|
|