diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index 3cd70bdf0f8..01edba3bfb4 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -98,6 +98,7 @@ pub(crate) fn throw_dom_exception( Error::Operation => DOMErrorName::OperationError, Error::NotAllowed => DOMErrorName::NotAllowedError, Error::Encoding => DOMErrorName::EncodingError, + Error::Constraint => DOMErrorName::ConstraintError, Error::Type(message) => unsafe { assert!(!JS_IsExceptionPending(*cx)); throw_type_error(*cx, &message); diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 0e47bc56719..9309cabe75f 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -57,6 +57,7 @@ pub(crate) enum DOMErrorName { NotReadableError, OperationError, NotAllowedError, + ConstraintError, } impl DOMErrorName { @@ -92,6 +93,7 @@ impl DOMErrorName { "NotReadableError" => Some(DOMErrorName::NotReadableError), "OperationError" => Some(DOMErrorName::OperationError), "NotAllowedError" => Some(DOMErrorName::NotAllowedError), + "ConstraintError" => Some(DOMErrorName::ConstraintError), _ => None, } } @@ -156,6 +158,9 @@ impl DOMException { r#"The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."# }, + DOMErrorName::ConstraintError => { + "A mutation operation in a transaction failed because a constraint was not satisfied." + }, }; ( diff --git a/components/script/dom/idbdatabase.rs b/components/script/dom/idbdatabase.rs index 18587394229..cf99446dcc1 100644 --- a/components/script/dom/idbdatabase.rs +++ b/components/script/dom/idbdatabase.rs @@ -213,8 +213,7 @@ impl IDBDatabaseMethods for IDBDatabase { .iter() .any(|store_name| store_name.to_string() == name.to_string()) { - // TODO: Add constraint as an dom exception and throw that instead - return Err(Error::InvalidState); + return Err(Error::Constraint); } // Step 7 diff --git a/components/script_bindings/error.rs b/components/script_bindings/error.rs index 2d9bee9a3d9..ac8b6c3123b 100644 --- a/components/script_bindings/error.rs +++ b/components/script_bindings/error.rs @@ -70,6 +70,8 @@ pub enum Error { NotAllowed, /// EncodingError DOMException Encoding, + /// ConstraintError DOMException + Constraint, /// TypeError JavaScript Error Type(String),