From 48e4d29302a52fe8ff29a238374adcb552c96dfe Mon Sep 17 00:00:00 2001 From: ldm0 Date: Mon, 14 Sep 2026 14:29:05 +0800 Subject: [PATCH] fix(webapi): migrate replayed SVG and internal object bindings Use shared SVG interface identities and plain-object declarations for internal stream callbacks and Window proxy handlers. Align imports with the current receiver APIs and format the replayed bindings. Consolidate the duplicate DOMMatrix serialization test while preserving both inferred and explicit dimension assertions. Keep the XHR and child script tests that still have only one declaration at this replay point. Bring forward the applicable parts of 0500891ecc independently of the pending stylesheet MIME and committed-origin conflict resolution. Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17751 passed, 13 skipped). --- moli-geometry/src/lib.rs | 23 +---- moli-renderer-v8/src/blob.rs | 2 +- moli-renderer-v8/src/context_bootstrap.rs | 4 +- .../bridge_descriptor/descriptors.rs | 85 +++++++++++++++---- .../src/context_bootstrap/file_api.rs | 3 +- .../context_bootstrap/file_api/file_list.rs | 1 - .../indexed_db/core/clone.rs | 5 +- .../context_bootstrap/performance_runtime.rs | 1 - .../src/context_bootstrap/streams/from.rs | 4 +- .../svg_runtime/callbacks.rs | 67 ++------------- .../src/context_bootstrap/window_template.rs | 2 +- moli-renderer-v8/src/structured_clone.rs | 41 +++++---- 12 files changed, 114 insertions(+), 124 deletions(-) diff --git a/moli-geometry/src/lib.rs b/moli-geometry/src/lib.rs index 1fbc5b3ccd..07a6121417 100644 --- a/moli-geometry/src/lib.rs +++ b/moli-geometry/src/lib.rs @@ -38,6 +38,10 @@ mod tests { matrix.dom_matrix_text().unwrap(), format!("matrix(1, 0, 0, 1, 0, {expected})") ); + assert_eq!( + matrix.dom_matrix_text_with_dimension(true).unwrap(), + format!("matrix(1, 0, 0, 1, 0, {expected})") + ); } } @@ -81,25 +85,6 @@ mod tests { ); } - #[test] - fn dom_matrix_text_uses_ecmascript_number_serialization() { - for (value, expected) in [ - (1.0 / 300_000_000.0, "3.3333333333333334e-9"), - (f64::MAX, "1.7976931348623157e+308"), - (f64::MIN_POSITIVE * f64::EPSILON, "5e-324"), - ] { - let matrix = DomMatrixComponents { - m42: value, - ..DomMatrixComponents::identity() - }; - - assert_eq!( - matrix.dom_matrix_text_with_dimension(true).unwrap(), - format!("matrix(1, 0, 0, 1, 0, {expected})") - ); - } - } - #[test] fn inverse_handles_invertible_3d_matrix() { let matrix = DomMatrixComponents::identity() diff --git a/moli-renderer-v8/src/blob.rs b/moli-renderer-v8/src/blob.rs index 820a3bd0dc..0607c49ead 100644 --- a/moli-renderer-v8/src/blob.rs +++ b/moli-renderer-v8/src/blob.rs @@ -1,4 +1,4 @@ -use crate::web_api_interfaces; +use crate::{native_bridge, web_api_interfaces}; use moli_file_api::{ BlobId, BlobLineEndings, BlobStore, blob_slice_relative_index, clamp_blob_long_long, normalize_blob_line_endings_with_native_ending, normalize_blob_mime_type, diff --git a/moli-renderer-v8/src/context_bootstrap.rs b/moli-renderer-v8/src/context_bootstrap.rs index a654229569..3bcead188f 100644 --- a/moli-renderer-v8/src/context_bootstrap.rs +++ b/moli-renderer-v8/src/context_bootstrap.rs @@ -256,7 +256,7 @@ pub(crate) use self::css_stylesheet_runtime::{ sync_css_style_sheet_shadow_root_adopted_owner_tracking, }; pub(crate) use self::dom_rect::build_dom_rect_object; -pub(crate) use self::dom_rect_list::{build_dom_rect_list_object}; +pub(crate) use self::dom_rect_list::build_dom_rect_list_object; pub(crate) use self::events::{ EVENT_DISPATCHING_SLOT, EVENT_PASSIVE_SLOT, EVENT_STOP_IMMEDIATE_PROPAGATION_SLOT, EVENT_STOP_PROPAGATION_SLOT, EventHandlerType, apply_before_unload_event_handler_return_value, apply_event_handler_return_value, clear_event_composed_path, event_attribute, event_backing, @@ -274,7 +274,7 @@ pub(crate) use self::file_api::{ pub(crate) use self::file_api::{apply_drag_modifier_drop_effect, build_data_transfer_object}; pub(crate) use self::file_api::{ build_file_list_object, build_file_object, file_list_files_from_object, - flush_one_pending_file_reader, is_file_list_object, selected_file_from_object, + flush_one_pending_file_reader, selected_file_from_object, }; pub(crate) use self::form_data_runtime::form_data_request_body; pub(crate) use self::geometry_clone::{ diff --git a/moli-renderer-v8/src/context_bootstrap/bridge_descriptor/descriptors.rs b/moli-renderer-v8/src/context_bootstrap/bridge_descriptor/descriptors.rs index 5e1a60d711..8a15403ce4 100644 --- a/moli-renderer-v8/src/context_bootstrap/bridge_descriptor/descriptors.rs +++ b/moli-renderer-v8/src/context_bootstrap/bridge_descriptor/descriptors.rs @@ -109,14 +109,20 @@ const NODE_BRIDGE_DESCRIPTORS: &[BridgeDescriptor] = &[ ELEMENT_GROUPS, ), descriptor(web_api_interfaces::SVGAElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGClipPathElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGClipPathElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), specialized_descriptor( web_api_interfaces::SVGCircleElement::DESCRIPTOR, ELEMENT_GROUPS, SpecializedTemplateInstaller::None, SVG_GEOMETRY_RUNTIME_INSTALL_GROUPS, ), - descriptor(web_api_interfaces::SVGFilterElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFilterElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGDefsElement::DESCRIPTOR, ELEMENT_GROUPS, @@ -151,12 +157,18 @@ const NODE_BRIDGE_DESCRIPTORS: &[BridgeDescriptor] = &[ web_api_interfaces::SVGFEFuncRElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGFEBlendElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFEBlendElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGFEColorMatrixElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGFECompositeElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFECompositeElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGFEConvolveMatrixElement::DESCRIPTOR, ELEMENT_GROUPS, @@ -173,20 +185,38 @@ const NODE_BRIDGE_DESCRIPTORS: &[BridgeDescriptor] = &[ web_api_interfaces::SVGFEDistantLightElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGFEDropShadowElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFEDropShadowElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGFEGaussianBlurElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGFEMorphologyElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGFEOffsetElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGFEPointLightElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFEMorphologyElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGFEOffsetElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGFEPointLightElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGFESpecularLightingElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGFESpotLightElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGFETurbulenceElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGFESpotLightElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGFETurbulenceElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), descriptor( web_api_interfaces::SVGForeignObjectElement::DESCRIPTOR, ELEMENT_GROUPS, @@ -218,12 +248,30 @@ const NODE_BRIDGE_DESCRIPTORS: &[BridgeDescriptor] = &[ svg_gradient_transform: true, }, ), - descriptor(web_api_interfaces::SVGMarkerElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGMaskElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGMetadataElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGScriptElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGStopElement::DESCRIPTOR, ELEMENT_GROUPS), - descriptor(web_api_interfaces::SVGStyleElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGMarkerElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGMaskElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGMetadataElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGScriptElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGStopElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), + descriptor( + web_api_interfaces::SVGStyleElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), specialized_descriptor( web_api_interfaces::SVGPathElement::DESCRIPTOR, ELEMENT_GROUPS, @@ -318,7 +366,10 @@ const NODE_BRIDGE_DESCRIPTORS: &[BridgeDescriptor] = &[ web_api_interfaces::SVGUseElement::DESCRIPTOR, ELEMENT_GROUPS, ), - descriptor(web_api_interfaces::SVGViewElement::DESCRIPTOR, ELEMENT_GROUPS), + descriptor( + web_api_interfaces::SVGViewElement::DESCRIPTOR, + ELEMENT_GROUPS, + ), specialized_descriptor( web_api_interfaces::SVGRectElement::DESCRIPTOR, ELEMENT_GROUPS, diff --git a/moli-renderer-v8/src/context_bootstrap/file_api.rs b/moli-renderer-v8/src/context_bootstrap/file_api.rs index 219e224325..73fec9682d 100644 --- a/moli-renderer-v8/src/context_bootstrap/file_api.rs +++ b/moli-renderer-v8/src/context_bootstrap/file_api.rs @@ -39,8 +39,7 @@ pub(crate) use file_entry_file::{ }; pub(super) use file_list::file_list_item_callback; pub(crate) use file_list::{ - build_file_list_object, file_list_files_from_object, is_file_list_object, - sync_file_list_contents, + build_file_list_object, file_list_files_from_object, sync_file_list_contents, }; pub(crate) use file_reader::flush_one_pending_file_reader; pub(super) use file_reader::{ diff --git a/moli-renderer-v8/src/context_bootstrap/file_api/file_list.rs b/moli-renderer-v8/src/context_bootstrap/file_api/file_list.rs index 436d6ead28..b652b79133 100644 --- a/moli-renderer-v8/src/context_bootstrap/file_api/file_list.rs +++ b/moli-renderer-v8/src/context_bootstrap/file_api/file_list.rs @@ -9,7 +9,6 @@ const FILE_LIST_FILES_SLOT: &str = "__lmFileListFiles"; #[derive(WebApiObject)] #[webapi(interface = web_api_interfaces::FileList, require_prototype)] struct FileListObjectDeclaration { - #[webapi(slot = FILE_LIST_LENGTH_SLOT)] length: f64, } diff --git a/moli-renderer-v8/src/context_bootstrap/indexed_db/core/clone.rs b/moli-renderer-v8/src/context_bootstrap/indexed_db/core/clone.rs index fd14723bfa..be6c1a1d3f 100644 --- a/moli-renderer-v8/src/context_bootstrap/indexed_db/core/clone.rs +++ b/moli-renderer-v8/src/context_bootstrap/indexed_db/core/clone.rs @@ -110,7 +110,10 @@ impl v8::ValueSerializerImpl for IndexedDbStructuredCloneSerializer { return Some(true); } } - Some("DOMPoint" | "DOMPointReadOnly" | "DOMRect" | "DOMRectReadOnly" | "DOMQuad" | "DOMMatrix" | "DOMMatrixReadOnly") => { + Some( + "DOMPoint" | "DOMPointReadOnly" | "DOMRect" | "DOMRectReadOnly" | "DOMQuad" + | "DOMMatrix" | "DOMMatrixReadOnly", + ) => { if let Some(payload) = geometry_clone_payload_from_object(scope, object) { write_geometry_clone_payload(serializer, payload); return Some(true); diff --git a/moli-renderer-v8/src/context_bootstrap/performance_runtime.rs b/moli-renderer-v8/src/context_bootstrap/performance_runtime.rs index 75e1bd9fc7..1fb254870b 100644 --- a/moli-renderer-v8/src/context_bootstrap/performance_runtime.rs +++ b/moli-renderer-v8/src/context_bootstrap/performance_runtime.rs @@ -98,7 +98,6 @@ pub(super) use super::performance_observer_runtime::{ performance_observer_disconnect_callback, performance_observer_observe_callback, performance_observer_take_records_callback, }; -pub(crate) use entries::is_performance_entry_object; use entries::{ append_performance_entry, create_performance_entry, initialize_resource_timing_slots, push_performance_entry, diff --git a/moli-renderer-v8/src/context_bootstrap/streams/from.rs b/moli-renderer-v8/src/context_bootstrap/streams/from.rs index 1990ec63ee..97f863ade9 100644 --- a/moli-renderer-v8/src/context_bootstrap/streams/from.rs +++ b/moli-renderer-v8/src/context_bootstrap/streams/from.rs @@ -9,7 +9,7 @@ const READABLE_STREAM_FROM_REACTION_STREAM_SLOT: &str = "__moliReadableStreamFro const READABLE_STREAM_FROM_REACTION_SYNC_SLOT: &str = "__moliReadableStreamFromReactionSync"; #[derive(WebApiObject)] -#[webapi(interface = "Object")] +#[webapi(plain)] struct ReadableStreamFromSourceDeclaration<'scope> { #[webapi(slot = READABLE_STREAM_FROM_ITERATOR_SLOT)] iterator: v8::Local<'scope, v8::Object>, @@ -24,7 +24,7 @@ struct ReadableStreamFromSourceDeclaration<'scope> { } #[derive(WebApiObject)] -#[webapi(interface = "Object")] +#[webapi(plain)] struct ReadableStreamFromReactionDeclaration<'scope> { #[webapi(slot = READABLE_STREAM_FROM_REACTION_STREAM_SLOT)] stream: v8::Local<'scope, v8::Object>, diff --git a/moli-renderer-v8/src/context_bootstrap/svg_runtime/callbacks.rs b/moli-renderer-v8/src/context_bootstrap/svg_runtime/callbacks.rs index e38711080e..8555aa8c95 100644 --- a/moli-renderer-v8/src/context_bootstrap/svg_runtime/callbacks.rs +++ b/moli-renderer-v8/src/context_bootstrap/svg_runtime/callbacks.rs @@ -783,13 +783,7 @@ pub(super) fn svg_marker_set_orient_to_angle_callback<'s>( ); return; }; - if !require_svg_receiver( - scope, - angle, - SVG_ANGLE_UNIT_TYPE_SLOT, - "SVGAngle", - "setOrientToAngle argument", - ) { + if !require_svg_receiver(scope, angle, "SVGAngle", "setOrientToAngle argument") { return; } sync_svg_angle_from_owner_attribute(scope, angle); @@ -880,7 +874,7 @@ fn require_svg_interface_receiver<'s>( } let Some(parent) = crate::context_bootstrap::bridge_descriptor::node_bridge_descriptor(interface_name) - .and_then(|descriptor| descriptor.parent_constructor) + .and_then(|descriptor| descriptor.interface.parent_name()) else { break; }; @@ -1210,7 +1204,6 @@ pub(super) fn svg_animated_boolean_getter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_BOOLEAN_BASE_VAL_SLOT, "SVGAnimatedBoolean", &format!("{name} getter"), ) { @@ -1245,7 +1238,6 @@ pub(super) fn svg_animated_boolean_setter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_BOOLEAN_BASE_VAL_SLOT, "SVGAnimatedBoolean", &format!("{name} setter"), ) || name != "baseVal" @@ -1352,7 +1344,6 @@ pub(super) fn svg_animated_angle_getter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_ANGLE_BASE_VAL_SLOT, "SVGAnimatedAngle", &format!("{name} getter"), ) { @@ -1388,7 +1379,6 @@ pub(super) fn svg_animated_rect_getter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_RECT_BASE_VAL_SLOT, "SVGAnimatedRect", &format!("{name} getter"), ) { @@ -1424,7 +1414,6 @@ pub(super) fn svg_animated_preserve_aspect_ratio_getter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_PRESERVE_ASPECT_RATIO_BASE_VAL_SLOT, "SVGAnimatedPreserveAspectRatio", &format!("{name} getter"), ) { @@ -1461,7 +1450,6 @@ pub(super) fn svg_preserve_aspect_ratio_getter<'s>( if !require_svg_receiver( scope, aspect_ratio, - SVG_PRESERVE_ASPECT_RATIO_ALIGN_SLOT, "SVGPreserveAspectRatio", &format!("{name} getter"), ) { @@ -1503,7 +1491,6 @@ pub(super) fn svg_preserve_aspect_ratio_setter<'s>( if !require_svg_receiver( scope, aspect_ratio, - SVG_PRESERVE_ASPECT_RATIO_ALIGN_SLOT, "SVGPreserveAspectRatio", &format!("{name} setter"), ) { @@ -1652,13 +1639,7 @@ pub(super) fn svg_angle_getter<'s>( rv.set_undefined(); return; }; - if !require_svg_receiver( - scope, - args.this(), - SVG_ANGLE_UNIT_TYPE_SLOT, - "SVGAngle", - &format!("{name} getter"), - ) { + if !require_svg_receiver(scope, args.this(), "SVGAngle", &format!("{name} getter")) { return; } sync_svg_angle_from_owner_attribute(scope, args.this()); @@ -1700,13 +1681,7 @@ pub(super) fn svg_angle_setter<'s>( ) else { return; }; - if !require_svg_receiver( - scope, - args.this(), - SVG_ANGLE_UNIT_TYPE_SLOT, - "SVGAngle", - &format!("{name} setter"), - ) { + if !require_svg_receiver(scope, args.this(), "SVGAngle", &format!("{name} setter")) { return; } if svg_angle_is_read_only(scope, args.this()) { @@ -1917,7 +1892,6 @@ pub(super) fn svg_animated_integer_getter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_INTEGER_BASE_VAL_SLOT, "SVGAnimatedInteger", &format!("{name} getter"), ) { @@ -2116,7 +2090,6 @@ pub(super) fn svg_animated_integer_setter<'s>( if !require_svg_receiver( scope, args.this(), - SVG_ANIMATED_INTEGER_BASE_VAL_SLOT, "SVGAnimatedInteger", &format!("{name} setter"), ) || name != "baseVal" @@ -3794,13 +3767,7 @@ pub(super) fn svg_length_new_value_specified_units_callback<'s>( args: v8::FunctionCallbackArguments<'s>, mut rv: v8::ReturnValue<'_, v8::Value>, ) { - if !require_svg_receiver( - scope, - args.this(), - SVG_LENGTH_UNIT_TYPE_SLOT, - "SVGLength", - "newValueSpecifiedUnits", - ) { + if !require_svg_receiver(scope, args.this(), "SVGLength", "newValueSpecifiedUnits") { return; } let Some(parsed) = webidl::parse_args::(scope, &args) @@ -3827,13 +3794,7 @@ pub(super) fn svg_angle_new_value_specified_units_callback<'s>( args: v8::FunctionCallbackArguments<'s>, mut rv: v8::ReturnValue<'_, v8::Value>, ) { - if !require_svg_receiver( - scope, - args.this(), - SVG_ANGLE_UNIT_TYPE_SLOT, - "SVGAngle", - "newValueSpecifiedUnits", - ) { + if !require_svg_receiver(scope, args.this(), "SVGAngle", "newValueSpecifiedUnits") { return; } if svg_angle_is_read_only(scope, args.this()) { @@ -3867,13 +3828,7 @@ pub(super) fn svg_length_convert_to_specified_units_callback<'s>( args: v8::FunctionCallbackArguments<'s>, mut rv: v8::ReturnValue<'_, v8::Value>, ) { - if !require_svg_receiver( - scope, - args.this(), - SVG_LENGTH_UNIT_TYPE_SLOT, - "SVGLength", - "convertToSpecifiedUnits", - ) { + if !require_svg_receiver(scope, args.this(), "SVGLength", "convertToSpecifiedUnits") { return; } let Some(parsed) = webidl::parse_args::(scope, &args) @@ -3912,13 +3867,7 @@ pub(super) fn svg_angle_convert_to_specified_units_callback<'s>( args: v8::FunctionCallbackArguments<'s>, mut rv: v8::ReturnValue<'_, v8::Value>, ) { - if !require_svg_receiver( - scope, - args.this(), - SVG_ANGLE_UNIT_TYPE_SLOT, - "SVGAngle", - "convertToSpecifiedUnits", - ) { + if !require_svg_receiver(scope, args.this(), "SVGAngle", "convertToSpecifiedUnits") { return; } if svg_angle_is_read_only(scope, args.this()) { diff --git a/moli-renderer-v8/src/context_bootstrap/window_template.rs b/moli-renderer-v8/src/context_bootstrap/window_template.rs index 938784c516..44964c4be9 100644 --- a/moli-renderer-v8/src/context_bootstrap/window_template.rs +++ b/moli-renderer-v8/src/context_bootstrap/window_template.rs @@ -28,7 +28,7 @@ use moli_webapi_declare::{WebApiFunctionTemplate, WebApiObject}; const WINDOW_NAMED_PROPERTIES_REFLECT_SET_SLOT: &str = "__moliWindowNamedPropertiesReflectSet"; #[derive(WebApiObject)] -#[webapi(interface = "Object")] +#[webapi(plain)] struct WindowNamedPropertiesProxyHandlerDeclaration { #[webapi(method, length = 4, callback = window_named_properties_proxy_set_callback)] set: (), diff --git a/moli-renderer-v8/src/structured_clone.rs b/moli-renderer-v8/src/structured_clone.rs index 1f56964ab1..c63369e514 100644 --- a/moli-renderer-v8/src/structured_clone.rs +++ b/moli-renderer-v8/src/structured_clone.rs @@ -11,22 +11,21 @@ use crate::{ CryptoKeyAlgorithmClonePayload, CryptoKeyClonePayload, FileSystemFileSnapshotClonePayload, FileSystemHandleClonePayload, GeometryClonePayload, ImageDataClonePayload, ReadableStreamClonePayload, TransformStreamClonePayload, WritableStreamClonePayload, - attach_file_system_file_snapshot_clone_payload, build_file_object, - build_file_list_object, file_list_files_from_object, - build_file_system_handle_from_clone_payload, build_image_data_object_from_clone_payload, - build_readable_stream_clone_shell, build_transform_stream_clone_shell, - build_writable_stream_clone_shell, crypto_key_clone_payload_from_object, - crypto_key_object_from_clone_payload, detach_message_port_owner_for_transfer, - detach_transferred_message_port, dom_exception_clone_fields, - ensure_message_port_wrapper_for_id, file_system_file_snapshot_clone_payload_from_object, - file_system_handle_clone_payload_from_object, image_data_clone_payload_from_object, - initialize_readable_stream_clone_shell, initialize_transform_stream_clone_shell, - initialize_writable_stream_clone_shell, message_port_id_from_object, - new_dom_exception_value, new_quota_exceeded_error_value, prepare_readable_stream_transfer, - prepare_transform_stream_transfer, prepare_writable_stream_transfer, - quota_exceeded_error_clone_fields, require_internal_stream_value, - selected_file_from_object, - build_geometry_object_from_clone_payload, geometry_clone_payload_from_object, + attach_file_system_file_snapshot_clone_payload, build_file_list_object, build_file_object, + build_file_system_handle_from_clone_payload, build_geometry_object_from_clone_payload, + build_image_data_object_from_clone_payload, build_readable_stream_clone_shell, + build_transform_stream_clone_shell, build_writable_stream_clone_shell, + crypto_key_clone_payload_from_object, crypto_key_object_from_clone_payload, + detach_message_port_owner_for_transfer, detach_transferred_message_port, + dom_exception_clone_fields, ensure_message_port_wrapper_for_id, + file_list_files_from_object, file_system_file_snapshot_clone_payload_from_object, + file_system_handle_clone_payload_from_object, geometry_clone_payload_from_object, + image_data_clone_payload_from_object, initialize_readable_stream_clone_shell, + initialize_transform_stream_clone_shell, initialize_writable_stream_clone_shell, + message_port_id_from_object, new_dom_exception_value, new_quota_exceeded_error_value, + prepare_readable_stream_transfer, prepare_transform_stream_transfer, + prepare_writable_stream_transfer, quota_exceeded_error_clone_fields, + require_internal_stream_value, selected_file_from_object, }, dom::native::SelectedFile, types::MessagePortId, @@ -418,7 +417,10 @@ impl v8::ValueSerializerImpl for WireSerializer { return Some(true); } } - Some("DOMPoint" | "DOMPointReadOnly" | "DOMRect" | "DOMRectReadOnly" | "DOMQuad" | "DOMMatrix" | "DOMMatrixReadOnly") => { + Some( + "DOMPoint" | "DOMPointReadOnly" | "DOMRect" | "DOMRectReadOnly" | "DOMQuad" + | "DOMMatrix" | "DOMMatrixReadOnly", + ) => { if let Some(payload) = geometry_clone_payload_from_object(scope, object) { write_geometry_clone_payload(serializer, payload); return Some(true); @@ -504,7 +506,10 @@ impl v8::ValueSerializerImpl for WireSerializer { return None; }; let Ok(length) = u32::try_from(files.len()) else { - throw_data_clone_exception(scope, "Too many Files in structured clone FileList."); + throw_data_clone_exception( + scope, + "Too many Files in structured clone FileList.", + ); return None; }; let mut clone_ids = Vec::with_capacity(files.len());