diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/errors.rs | 15 | ||||
-rw-r--r-- | runtime/ops/worker_host.rs | 11 |
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.", + )); } } |