From d5284dfad9ee90a3cf689f41e8bddf8c98567a3f Mon Sep 17 00:00:00 2001 From: Jerens Lensun <54782057+jerensl@users.noreply.github.com> Date: Mon, 14 Apr 2025 02:10:04 +0800 Subject: Support optional message for dataclone error (#36308) - [x] our [DataClone error](https://github.com/servo/servo/blob/d733abfca02cdb9fd2af4f0d82ff050e25f71829/components/script/dom/bindings/error.rs#L80) needs to support an optional message - [x] we need to add support to our DOMException implementation to allow an optional message to replace the default message - [x] we need to create a new struct used by both StructuredDataReader and StructuredDataWriter for storing the error message in the report_error_callback - [x] report_error_callback needs to cast the closure pointer to the new struct - [x] the code that [throws a DataClone error](https://github.com/servo/servo/blob/5d1c64dba9cf3e65f770370eb17f00ad4114edce/components/script/dom/bindings/structuredclone.rs#L542) needs to use the stored error message if it's available Testing: *Describe how this pull request is tested or why it doesn't require tests* Fixes: #36191 --------- Signed-off-by: jerensl <54782057+jerensl@users.noreply.github.com> --- components/script/dom/domexception.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'components/script/dom/domexception.rs') diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 6a2ec644e5d..a5ad0bfb043 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -159,6 +159,21 @@ impl DOMException { ) } + pub(crate) fn new_with_custom_message( + global: &GlobalScope, + code: DOMErrorName, + message: String, + can_gc: CanGc, + ) -> DomRoot { + let (_, name) = DOMException::get_error_data_by_code(code); + + reflect_dom_object( + Box::new(DOMException::new_inherited(DOMString::from(message), name)), + global, + can_gc, + ) + } + // not an IDL stringifier, used internally pub(crate) fn stringifier(&self) -> DOMString { DOMString::from(format!("{}: {}", self.name, self.message)) -- cgit v1.2.3