| Index: third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp b/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
|
| index 0dd8fb02fc50eaec31c47c534ac6e3067d9fc9ed..a7fef74dca5445a474591723d67efea2fdbfacaa 100644
|
| --- a/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
|
| @@ -576,25 +576,24 @@ TEST_F(ImageBitmapTest,
|
| }
|
|
|
| TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionImageData) {
|
| - unsigned char data_buffer[4] = {255, 0, 0, 255};
|
| + sk_sp<SkColorSpace> src_rgb_color_space = SkColorSpace::MakeSRGB();
|
| + unsigned char data_buffer[4] = {32, 96, 160, 255};
|
| DOMUint8ClampedArray* data = DOMUint8ClampedArray::Create(data_buffer, 4);
|
| - ImageData* image_data =
|
| - ImageData::Create(IntSize(1, 1), NotShared<DOMUint8ClampedArray>(data));
|
| + ImageDataColorSettings color_settings;
|
| + ImageData* image_data = ImageData::Create(
|
| + IntSize(1, 1), NotShared<DOMUint8ClampedArray>(data), &color_settings);
|
| std::unique_ptr<uint8_t[]> src_pixel(new uint8_t[4]());
|
| memcpy(src_pixel.get(), image_data->data()->Data(), 4);
|
|
|
| Optional<IntRect> crop_rect = IntRect(0, 0, 1, 1);
|
| sk_sp<SkColorSpace> color_space = nullptr;
|
| - SkColorSpaceXform::ColorFormat color_format32 =
|
| - (SkColorType::kN32_SkColorType == kBGRA_8888_SkColorType)
|
| - ? SkColorSpaceXform::ColorFormat::kBGRA_8888_ColorFormat
|
| - : SkColorSpaceXform::ColorFormat::kRGBA_8888_ColorFormat;
|
| SkColorType color_type = SkColorType::kN32_SkColorType;
|
| - SkColorSpaceXform::ColorFormat color_format = color_format32;
|
| + SkColorSpaceXform::ColorFormat color_format =
|
| + SkColorSpaceXform::ColorFormat::kRGBA_8888_ColorFormat;
|
|
|
| for (uint8_t i =
|
| static_cast<uint8_t>(ColorSpaceConversion::DEFAULT_COLOR_CORRECTED);
|
| - i <= static_cast<uint8_t>(ColorSpaceConversion::LINEAR_RGB); i++) {
|
| + i <= static_cast<uint8_t>(ColorSpaceConversion::LAST); i++) {
|
| ColorSpaceConversion color_space_conversion =
|
| static_cast<ColorSpaceConversion>(i);
|
| ImageBitmapOptions options =
|
| @@ -612,13 +611,26 @@ TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionImageData) {
|
| case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED:
|
| case ColorSpaceConversion::SRGB:
|
| color_space = SkColorSpace::MakeSRGB();
|
| - color_format = color_format32;
|
| break;
|
| case ColorSpaceConversion::LINEAR_RGB:
|
| color_space = SkColorSpace::MakeSRGBLinear();
|
| color_type = SkColorType::kRGBA_F16_SkColorType;
|
| color_format = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat;
|
| break;
|
| + case ColorSpaceConversion::P3:
|
| + color_space =
|
| + SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma,
|
| + SkColorSpace::kDCIP3_D65_Gamut);
|
| + color_type = SkColorType::kRGBA_F16_SkColorType;
|
| + color_format = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat;
|
| + break;
|
| + case ColorSpaceConversion::REC2020:
|
| + color_space =
|
| + SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma,
|
| + SkColorSpace::kRec2020_Gamut);
|
| + color_type = SkColorType::kRGBA_F16_SkColorType;
|
| + color_format = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat;
|
| + break;
|
| default:
|
| NOTREACHED();
|
| }
|
| @@ -634,13 +646,23 @@ TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionImageData) {
|
| // Transform the source pixel and check if the pixel from image bitmap has
|
| // the same color information.
|
| std::unique_ptr<SkColorSpaceXform> color_space_xform =
|
| - SkColorSpaceXform::New(image_data->GetSkColorSpace().get(),
|
| - color_space.get());
|
| + SkColorSpaceXform::New(src_rgb_color_space.get(), color_space.get());
|
| std::unique_ptr<uint8_t[]> transformed_pixel(
|
| new uint8_t[image_info.bytesPerPixel()]());
|
| - color_space_xform->apply(color_format, transformed_pixel.get(),
|
| - color_format32, src_pixel.get(), 1,
|
| - SkAlphaType::kUnpremul_SkAlphaType);
|
| + color_space_xform->apply(
|
| + color_format, transformed_pixel.get(),
|
| + SkColorSpaceXform::ColorFormat::kRGBA_8888_ColorFormat, src_pixel.get(),
|
| + 1, SkAlphaType::kUnpremul_SkAlphaType);
|
| +
|
| + LOG(ERROR) << "ColorSpaceConversion: " << (int)(i);
|
| + std::stringstream str, str2;
|
| + for (int p = 0; p < image_info.bytesPerPixel(); p++) {
|
| + str << (int)(converted_pixel[p]) << ", ";
|
| + str2 << (int)(transformed_pixel[p]) << ", ";
|
| + }
|
| + LOG(ERROR) << "converted_pixel: " << str.str();
|
| + LOG(ERROR) << "transformed_pixel: " << str2.str();
|
| +
|
| int compare = std::memcmp(converted_pixel.get(), transformed_pixel.get(),
|
| image_info.bytesPerPixel());
|
| ASSERT_EQ(compare, 0);
|
|
|