Index: third_party/WebKit/Source/core/html/ImageData.cpp |
diff --git a/third_party/WebKit/Source/core/html/ImageData.cpp b/third_party/WebKit/Source/core/html/ImageData.cpp |
index 8a6f1b356e7beb70ec1b7102ec35f8310870b40c..fca2be31063d15ef893adaab27cee3e6ade6e38b 100644 |
--- a/third_party/WebKit/Source/core/html/ImageData.cpp |
+++ b/third_party/WebKit/Source/core/html/ImageData.cpp |
@@ -633,13 +633,17 @@ DOMArrayBufferBase* ImageData::BufferBase() const { |
return nullptr; |
} |
-// For ImageData, the color space is only specified by color settings. |
-// It cannot have a SkColorSpace. This doesn't mean anything. Fix this. |
-sk_sp<SkColorSpace> ImageData::GetSkColorSpace() { |
- if (!RuntimeEnabledFeatures::colorCanvasExtensionsEnabled()) |
- return nullptr; |
+CanvasColorParams ImageData::GetCanvasColorParams() { |
+ if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() || |
+ !RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) |
+ return CanvasColorParams(); |
- return SkColorSpace::MakeSRGB(); |
+ CanvasColorSpace color_space = |
+ ImageData::GetCanvasColorSpace(color_settings_.colorSpace()); |
+ CanvasPixelFormat pixel_format = kRGBA8CanvasPixelFormat; |
+ if (color_settings_.storageFormat() != kUint8ClampedArrayStorageFormatName) |
+ pixel_format = kF16CanvasPixelFormat; |
+ return CanvasColorParams(color_space, pixel_format); |
} |
bool ImageData::ImageDataInCanvasColorSettings( |
@@ -730,6 +734,14 @@ bool ImageData::ImageDataInCanvasColorSettings( |
return true; |
} |
+bool ImageData::ImageDataInCanvasColorSettings( |
+ const CanvasColorParams& canvas_color_params, |
+ std::unique_ptr<uint8_t[]>& converted_pixels) { |
+ return ImageDataInCanvasColorSettings(canvas_color_params.color_space(), |
+ canvas_color_params.pixel_format(), |
+ converted_pixels); |
+} |
+ |
void ImageData::Trace(Visitor* visitor) { |
visitor->Trace(data_); |
visitor->Trace(data_u16_); |