summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/errors.rs15
-rw-r--r--runtime/ops/worker_host.rs11
2 files changed, 19 insertions, 7 deletions
diff --git a/runtime/errors.rs b/runtime/errors.rs
index 4c6aeab98..bc28339ad 100644
--- a/runtime/errors.rs
+++ b/runtime/errors.rs
@@ -18,6 +18,7 @@ use deno_core::url;
use deno_core::ModuleResolutionError;
use deno_cron::CronError;
use deno_tls::TlsError;
+use deno_webstorage::WebStorageError;
use std::env;
use std::error::Error;
use std::io;
@@ -158,6 +159,15 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str {
}
}
+fn get_webstorage_class_name(e: &WebStorageError) -> &'static str {
+ match e {
+ WebStorageError::ContextNotSupported => "DOMExceptionNotSupportedError",
+ WebStorageError::Sqlite(_) => todo!(),
+ WebStorageError::Io(e) => get_io_error_class(e),
+ WebStorageError::StorageExceeded => "DOMExceptionQuotaExceededError",
+ }
+}
+
fn get_tls_error_class(e: &TlsError) -> &'static str {
match e {
TlsError::Rustls(_) => "Error",
@@ -221,7 +231,6 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> {
deno_core::error::get_custom_error_class(e)
.or_else(|| deno_webgpu::error::get_error_class_name(e))
.or_else(|| deno_web::get_error_class_name(e))
- .or_else(|| deno_webstorage::get_not_supported_error_class_name(e))
.or_else(|| deno_websocket::get_network_error_class_name(e))
.or_else(|| e.downcast_ref::<TlsError>().map(get_tls_error_class))
.or_else(|| e.downcast_ref::<CronError>().map(get_cron_error_class))
@@ -232,6 +241,10 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> {
.map(get_broadcast_channel_error)
})
.or_else(|| {
+ e.downcast_ref::<WebStorageError>()
+ .map(get_webstorage_class_name)
+ })
+ .or_else(|| {
e.downcast_ref::<dlopen2::Error>()
.map(get_dlopen_error_class)
})
diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs
index b9fd06654..61e5ef3e0 100644
--- a/runtime/ops/worker_host.rs
+++ b/runtime/ops/worker_host.rs
@@ -10,6 +10,7 @@ use crate::web_worker::WorkerControlEvent;
use crate::web_worker::WorkerId;
use crate::web_worker::WorkerMetadata;
use crate::worker::FormatJsErrorFn;
+use deno_core::error::custom_error;
use deno_core::error::AnyError;
use deno_core::op2;
use deno_core::serde::Deserialize;
@@ -136,12 +137,10 @@ fn op_create_worker(
let worker_type = args.worker_type;
if let WebWorkerType::Classic = worker_type {
if let TestingFeaturesEnabled(false) = state.borrow() {
- return Err(
- deno_webstorage::DomExceptionNotSupportedError::new(
- "Classic workers are not supported.",
- )
- .into(),
- );
+ return Err(custom_error(
+ "DOMExceptionNotSupportedError",
+ "Classic workers are not supported.",
+ ));
}
}