Commit 9e53335a authored by Christopher Cameron's avatar Christopher Cameron Committed by Commit Bot

CanvasColor: Remove createImageBitmap colorSpaceConversion options

Remove the option to specify a color space when calling
createImageBitmap. Also remove the preserve_color_space parameter.
None of these are used by existing behaviors. Their existence
makes other cleanup harder.

Bug: 1119507
Change-Id: I4ddcd76afff0a542c318a0035ad4559ff0022303
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2370727
Commit-Queue: ccameron <ccameron@chromium.org>
Reviewed-by: default avatarYi Xu <yiyix@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802051}
parent 70883d6e
...@@ -48,10 +48,6 @@ constexpr const char* kImageBitmapOptionPremultiply = "premultiply"; ...@@ -48,10 +48,6 @@ constexpr const char* kImageBitmapOptionPremultiply = "premultiply";
constexpr const char* kImageBitmapOptionResizeQualityHigh = "high"; constexpr const char* kImageBitmapOptionResizeQualityHigh = "high";
constexpr const char* kImageBitmapOptionResizeQualityMedium = "medium"; constexpr const char* kImageBitmapOptionResizeQualityMedium = "medium";
constexpr const char* kImageBitmapOptionResizeQualityPixelated = "pixelated"; constexpr const char* kImageBitmapOptionResizeQualityPixelated = "pixelated";
constexpr const char* kPreserveImageBitmapColorSpaceConversion = "preserve";
constexpr const char* kSRGBImageBitmapColorSpaceConversion = "srgb";
constexpr const char* kP3ImageBitmapColorSpaceConversion = "p3";
constexpr const char* kRec2020ImageBitmapColorSpaceConversion = "rec2020";
namespace { namespace {
...@@ -96,27 +92,12 @@ ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options, ...@@ -96,27 +92,12 @@ ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options,
parsed_options.has_color_space_conversion = parsed_options.has_color_space_conversion =
(options->colorSpaceConversion() != kImageBitmapOptionNone); (options->colorSpaceConversion() != kImageBitmapOptionNone);
parsed_options.preserve_source_color_space =
(options->colorSpaceConversion() ==
kPreserveImageBitmapColorSpaceConversion);
parsed_options.color_params.SetCanvasColorSpace(CanvasColorSpace::kSRGB); parsed_options.color_params.SetCanvasColorSpace(CanvasColorSpace::kSRGB);
if (options->colorSpaceConversion() != kSRGBImageBitmapColorSpaceConversion && if (options->colorSpaceConversion() != kImageBitmapOptionNone &&
options->colorSpaceConversion() !=
kPreserveImageBitmapColorSpaceConversion &&
options->colorSpaceConversion() != kImageBitmapOptionNone &&
options->colorSpaceConversion() != kImageBitmapOptionDefault) { options->colorSpaceConversion() != kImageBitmapOptionDefault) {
parsed_options.color_params.SetCanvasPixelFormat(CanvasPixelFormat::kF16); NOTREACHED()
if (options->colorSpaceConversion() == kP3ImageBitmapColorSpaceConversion) { << "Invalid ImageBitmap creation attribute colorSpaceConversion: "
parsed_options.color_params.SetCanvasColorSpace(CanvasColorSpace::kP3); << IDLEnumAsString(options->colorSpaceConversion());
} else if (options->colorSpaceConversion() ==
kRec2020ImageBitmapColorSpaceConversion) {
parsed_options.color_params.SetCanvasColorSpace(
CanvasColorSpace::kRec2020);
} else {
NOTREACHED()
<< "Invalid ImageBitmap creation attribute colorSpaceConversion: "
<< IDLEnumAsString(options->colorSpaceConversion());
}
} }
int source_width = source_size.Width(); int source_width = source_size.Width();
...@@ -456,15 +437,7 @@ scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion( ...@@ -456,15 +437,7 @@ scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion(
if (src_image_info.isEmpty()) if (src_image_info.isEmpty())
return nullptr; return nullptr;
// If we should preserve color precision, don't lose it in color space // This will always convert to 8-bit sRGB.
// conversion.
if (options.pixel_format == kImageBitmapPixelFormat_Default &&
(src_image_info.colorType() == kRGBA_F16_SkColorType ||
(src_image_info.colorSpace() &&
src_image_info.colorSpace()->gammaIsLinear()) ||
(color_space && color_space->gammaIsLinear()))) {
color_type = kRGBA_F16_SkColorType;
}
return image->ConvertToColorSpace(color_space, color_type); return image->ConvertToColorSpace(color_space, color_type);
} }
...@@ -561,8 +534,7 @@ static scoped_refptr<StaticBitmapImage> CropImageAndApplyColorSpaceConversion( ...@@ -561,8 +534,7 @@ static scoped_refptr<StaticBitmapImage> CropImageAndApplyColorSpaceConversion(
} }
// color convert if needed // color convert if needed
if (parsed_options.has_color_space_conversion && if (parsed_options.has_color_space_conversion) {
!parsed_options.preserve_source_color_space) {
result = ApplyColorSpaceConversion(std::move(result), parsed_options); result = ApplyColorSpaceConversion(std::move(result), parsed_options);
if (!result) if (!result)
return nullptr; return nullptr;
......
...@@ -126,7 +126,6 @@ class CORE_EXPORT ImageBitmap final : public ScriptWrappable, ...@@ -126,7 +126,6 @@ class CORE_EXPORT ImageBitmap final : public ScriptWrappable,
bool premultiply_alpha = true; bool premultiply_alpha = true;
bool should_scale_input = false; bool should_scale_input = false;
bool has_color_space_conversion = false; bool has_color_space_conversion = false;
bool preserve_source_color_space = false;
bool source_is_unpremul = false; bool source_is_unpremul = false;
unsigned resize_width = 0; unsigned resize_width = 0;
unsigned resize_height = 0; unsigned resize_height = 0;
......
...@@ -308,69 +308,6 @@ TEST_F(ImageBitmapTest, AvoidGPUReadback) { ...@@ -308,69 +308,6 @@ TEST_F(ImageBitmapTest, AvoidGPUReadback) {
} }
} }
TEST_F(ImageBitmapTest, ImageBitmapPixelFormat) {
SkImageInfo info = SkImageInfo::MakeS32(10, 10, kPremul_SkAlphaType);
sk_sp<SkSurface> surface(SkSurface::MakeRaster(info));
sk_sp<SkImage> sk_image = surface->makeImageSnapshot();
scoped_refptr<StaticBitmapImage> bitmap_image =
UnacceleratedStaticBitmapImage::Create(sk_image);
// source: uint8, bitmap pixel format: default
ImageBitmapOptions* options = ImageBitmapOptions::Create();
auto* image_bitmap = MakeGarbageCollected<ImageBitmap>(
bitmap_image, bitmap_image->Rect(), options);
ASSERT_TRUE(image_bitmap);
sk_sp<SkImage> sk_image_internal =
image_bitmap->BitmapImage()->PaintImageForCurrentFrame().GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal->colorType());
// source: uint8, bitmap pixel format: uint8
options->setImagePixelFormat("uint8");
auto* image_bitmap_8888 = MakeGarbageCollected<ImageBitmap>(
bitmap_image, bitmap_image->Rect(), options);
ASSERT_TRUE(image_bitmap_8888);
sk_sp<SkImage> sk_image_internal_8888 = image_bitmap_8888->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal_8888->colorType());
// Since there is no conversion from uint8 to default for image bitmap pixel
// format option, we expect the two image bitmaps to refer to the same
// internal SkImage back storage.
ASSERT_EQ(sk_image_internal, sk_image_internal_8888);
sk_sp<SkColorSpace> p3_color_space = SkColorSpace::MakeRGB(
SkNamedTransferFn::kLinear, SkNamedGamut::kDisplayP3);
SkImageInfo info_f16 = SkImageInfo::Make(10, 10, kRGBA_F16_SkColorType,
kPremul_SkAlphaType, p3_color_space);
sk_sp<SkSurface> surface_f16(SkSurface::MakeRaster(info_f16));
sk_sp<SkImage> sk_image_f16 = surface_f16->makeImageSnapshot();
scoped_refptr<StaticBitmapImage> bitmap_image_f16 =
UnacceleratedStaticBitmapImage::Create(sk_image_f16);
// source: f16, bitmap pixel format: default
ImageBitmapOptions* options_f16 = ImageBitmapOptions::Create();
auto* image_bitmap_f16 = MakeGarbageCollected<ImageBitmap>(
bitmap_image_f16, bitmap_image_f16->Rect(), options_f16);
ASSERT_TRUE(image_bitmap_f16);
sk_sp<SkImage> sk_image_internal_f16 = image_bitmap_f16->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kRGBA_F16_SkColorType, sk_image_internal_f16->colorType());
// source: f16, bitmap pixel format: uint8
options_f16->setImagePixelFormat("uint8");
auto* image_bitmap_f16_8888 = MakeGarbageCollected<ImageBitmap>(
bitmap_image_f16, bitmap_image_f16->Rect(), options_f16);
ASSERT_TRUE(image_bitmap_f16_8888);
sk_sp<SkImage> sk_image_internal_f16_8888 =
image_bitmap_f16_8888->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal_f16_8888->colorType());
}
// This test is failing on asan-clang-phone because memory allocation is // This test is failing on asan-clang-phone because memory allocation is
// declined. See <http://crbug.com/782286>. // declined. See <http://crbug.com/782286>.
// See <http://crbug.com/1090252>, test is flaky in fuchsia. // See <http://crbug.com/1090252>, test is flaky in fuchsia.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment