diff --git a/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h b/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h
index 0615f5b1769..b0b907c8266 100644
--- a/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h
+++ b/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h
@@ -15,8 +15,8 @@ class CanvasImageData {
public:
virtual ~CanvasImageData() = default;
- virtual WebIDL::ExceptionOr> create_image_data(int width, int height) const = 0;
- virtual WebIDL::ExceptionOr> get_image_data(int x, int y, int width, int height) const = 0;
+ virtual WebIDL::ExceptionOr> create_image_data(int width, int height, Optional const& settings = {}) const = 0;
+ virtual WebIDL::ExceptionOr> get_image_data(int x, int y, int width, int height, Optional const& settings = {}) const = 0;
virtual void put_image_data(ImageData const&, float x, float y) = 0;
protected:
diff --git a/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl b/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl
index 9be76e63254..7cc5c9dbaa4 100644
--- a/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl
+++ b/Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl
@@ -2,12 +2,10 @@
// https://html.spec.whatwg.org/multipage/canvas.html#canvasimagedata
interface mixin CanvasImageData {
- // FIXME: Should be `ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});`
- ImageData createImageData(long sw, long sh);
+ ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});
// FIXME: ImageData createImageData(ImageData imagedata);
- // FIXME: Should be `ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});`
- ImageData getImageData(long sx, long sy, long sw, long sh);
+ ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});
undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy);
// FIXME: undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight);
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
index e40d26d77d3..3dda750d12e 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
@@ -375,13 +375,13 @@ void CanvasRenderingContext2D::fill(Path2D& path, StringView fill_rule)
return fill_internal(transformed_path, parse_fill_rule(fill_rule));
}
-WebIDL::ExceptionOr> CanvasRenderingContext2D::create_image_data(int width, int height) const
+WebIDL::ExceptionOr> CanvasRenderingContext2D::create_image_data(int width, int height, Optional const& settings) const
{
- return ImageData::create(realm(), width, height);
+ return ImageData::create(realm(), width, height, settings);
}
// https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-getimagedata
-WebIDL::ExceptionOr> CanvasRenderingContext2D::get_image_data(int x, int y, int width, int height) const
+WebIDL::ExceptionOr> CanvasRenderingContext2D::get_image_data(int x, int y, int width, int height, Optional const& settings) const
{
// 1. If either the sw or sh arguments are zero, then throw an "IndexSizeError" DOMException.
if (width == 0 || height == 0)
@@ -393,7 +393,7 @@ WebIDL::ExceptionOr> CanvasRenderingContext2D::get_image_da
// 3. Let imageData be a new ImageData object.
// 4. Initialize imageData given sw, sh, settings set to settings, and defaultColorSpace set to this's color space.
- auto image_data = TRY(ImageData::create(realm(), width, height));
+ auto image_data = TRY(ImageData::create(realm(), width, height, settings));
// NOTE: We don't attempt to create the underlying bitmap here; if it doesn't exist, it's like copying only transparent black pixels (which is a no-op).
if (!canvas_element().bitmap())
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
index f353346730e..65db4e911e4 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
@@ -76,8 +76,8 @@ public:
virtual void fill(StringView fill_rule) override;
virtual void fill(Path2D& path, StringView fill_rule) override;
- virtual WebIDL::ExceptionOr> create_image_data(int width, int height) const override;
- virtual WebIDL::ExceptionOr> get_image_data(int x, int y, int width, int height) const override;
+ virtual WebIDL::ExceptionOr> create_image_data(int width, int height, Optional const& settings = {}) const override;
+ virtual WebIDL::ExceptionOr> get_image_data(int x, int y, int width, int height, Optional const& settings = {}) const override;
virtual void put_image_data(ImageData const&, float x, float y) override;
virtual void reset_to_default_state() override;