LibWeb: Implement transfer {,receiving} steps for ImageBitmap

This commit is contained in:
Kenneth Myhra 2025-07-19 08:07:15 +02:00 committed by Shannon Booth
commit ed3d0d76ec
Notes: github-actions[bot] 2025-07-20 00:31:58 +00:00
3 changed files with 22 additions and 9 deletions

View file

@ -82,25 +82,32 @@ WebIDL::ExceptionOr<void> ImageBitmap::deserialization_steps(HTML::TransferDataD
return {}; return {};
} }
WebIDL::ExceptionOr<void> ImageBitmap::transfer_steps(HTML::TransferDataEncoder&) // https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#the-imagebitmap-interface:transfer-steps
WebIDL::ExceptionOr<void> ImageBitmap::transfer_steps(HTML::TransferDataEncoder& data_holder)
{ {
// FIXME: Implement this // FIXME: 1. If value's origin-clean flag is not set, then throw a "DataCloneError" DOMException.
dbgln("(STUBBED) ImageBitmap::transfer_steps(HTML::TransferDataEncoder&)");
// 2. Set dataHolder.[[BitmapData]] to value's bitmap data.
serialize_bitmap(data_holder, *m_bitmap);
// 3. Unset value's bitmap data.
m_bitmap = nullptr;
return {}; return {};
} }
WebIDL::ExceptionOr<void> ImageBitmap::transfer_receiving_steps(HTML::TransferDataDecoder&) // https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#the-imagebitmap-interface:transfer-receiving-steps
WebIDL::ExceptionOr<void> ImageBitmap::transfer_receiving_steps(HTML::TransferDataDecoder& data_holder)
{ {
// FIXME: Implement this // 1. Set value's bitmap data to dataHolder.[[BitmapData]].
dbgln("(STUBBED) ImageBitmap::transfer_receiving_steps(HTML::TransferDataDecoder&)"); m_bitmap = TRY(deserialize_bitmap(this->realm(), data_holder));
return {}; return {};
} }
HTML::TransferType ImageBitmap::primary_interface() const HTML::TransferType ImageBitmap::primary_interface() const
{ {
// FIXME: Implement this return TransferType::ImageBitmap;
dbgln("(STUBBED) ImageBitmap::primary_interface()");
return TransferType::Unknown;
} }
// https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagebitmap-width // https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagebitmap-width

View file

@ -1147,6 +1147,11 @@ static WebIDL::ExceptionOr<GC::Ref<Bindings::PlatformObject>> create_transferred
TRY(transform_stream->transfer_receiving_steps(decoder)); TRY(transform_stream->transfer_receiving_steps(decoder));
return transform_stream; return transform_stream;
} }
case TransferType::ImageBitmap: {
auto image_bitmap = target_realm.create<ImageBitmap>(target_realm);
TRY(image_bitmap->transfer_receiving_steps(decoder));
return image_bitmap;
}
case TransferType::ArrayBuffer: case TransferType::ArrayBuffer:
case TransferType::ResizableArrayBuffer: case TransferType::ResizableArrayBuffer:
case TransferType::Unknown: case TransferType::Unknown:

View file

@ -44,6 +44,7 @@ enum class TransferType : u8 {
ReadableStream = 4, ReadableStream = 4,
WritableStream = 5, WritableStream = 5,
TransformStream = 6, TransformStream = 6,
ImageBitmap = 7,
}; };
} }