aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/domexception.rs
diff options
context:
space:
mode:
authorJerens Lensun <54782057+jerensl@users.noreply.github.com>2025-04-14 02:10:04 +0800
committerGitHub <noreply@github.com>2025-04-13 18:10:04 +0000
commitd5284dfad9ee90a3cf689f41e8bddf8c98567a3f (patch)
tree4b823fd9928f48342df8f8c41c1d311472b363a8 /components/script/dom/domexception.rs
parent740a94ef20e0a1e5f4393152554cee92ba89e28f (diff)
downloadservo-d5284dfad9ee90a3cf689f41e8bddf8c98567a3f.tar.gz
servo-d5284dfad9ee90a3cf689f41e8bddf8c98567a3f.zip
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>
Diffstat (limited to 'components/script/dom/domexception.rs')
-rw-r--r--components/script/dom/domexception.rs15
1 files changed, 15 insertions, 0 deletions
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<DOMException> {
+ 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))