mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Inline DOMException::new_from_error.
This commit is contained in:
parent
4873682a3c
commit
6e3c130e6c
2 changed files with 20 additions and 30 deletions
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
use dom::bindings::conversions::ToJSValConvertible;
|
use dom::bindings::conversions::ToJSValConvertible;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
use dom::domexception::DOMException;
|
use dom::domexception::{DOMException, DOMErrorName};
|
||||||
|
|
||||||
use js::jsapi::{JSContext, JSBool, JSObject};
|
use js::jsapi::{JSContext, JSBool, JSObject};
|
||||||
use js::jsapi::{JS_IsExceptionPending, JS_SetPendingException, JS_ReportPendingException};
|
use js::jsapi::{JS_IsExceptionPending, JS_SetPendingException, JS_ReportPendingException};
|
||||||
|
@ -67,7 +67,25 @@ pub type ErrorResult = Fallible<()>;
|
||||||
pub fn throw_dom_exception(cx: *mut JSContext, global: GlobalRef,
|
pub fn throw_dom_exception(cx: *mut JSContext, global: GlobalRef,
|
||||||
result: Error) {
|
result: Error) {
|
||||||
assert!(unsafe { JS_IsExceptionPending(cx) } == 0);
|
assert!(unsafe { JS_IsExceptionPending(cx) } == 0);
|
||||||
let exception = DOMException::new_from_error(global, result).root();
|
let code = match result {
|
||||||
|
Error::IndexSize => DOMErrorName::IndexSizeError,
|
||||||
|
Error::NotFound => DOMErrorName::NotFoundError,
|
||||||
|
Error::HierarchyRequest => DOMErrorName::HierarchyRequestError,
|
||||||
|
Error::InvalidCharacter => DOMErrorName::InvalidCharacterError,
|
||||||
|
Error::NotSupported => DOMErrorName::NotSupportedError,
|
||||||
|
Error::InvalidState => DOMErrorName::InvalidStateError,
|
||||||
|
Error::Syntax => DOMErrorName::SyntaxError,
|
||||||
|
Error::NamespaceError => DOMErrorName::NamespaceError,
|
||||||
|
Error::InvalidAccess => DOMErrorName::InvalidAccessError,
|
||||||
|
Error::Security => DOMErrorName::SecurityError,
|
||||||
|
Error::Network => DOMErrorName::NetworkError,
|
||||||
|
Error::Abort => DOMErrorName::AbortError,
|
||||||
|
Error::Timeout => DOMErrorName::TimeoutError,
|
||||||
|
Error::DataClone => DOMErrorName::DataCloneError,
|
||||||
|
Error::NoModificationAllowedError => DOMErrorName::NoModificationAllowedError,
|
||||||
|
Error::JSFailed => panic!(),
|
||||||
|
};
|
||||||
|
let exception = DOMException::new(global, code).root();
|
||||||
let thrown = exception.to_jsval(cx);
|
let thrown = exception.to_jsval(cx);
|
||||||
unsafe {
|
unsafe {
|
||||||
JS_SetPendingException(cx, thrown);
|
JS_SetPendingException(cx, thrown);
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
use dom::bindings::codegen::Bindings::DOMExceptionBinding;
|
use dom::bindings::codegen::Bindings::DOMExceptionBinding;
|
||||||
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionConstants;
|
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionConstants;
|
||||||
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods;
|
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods;
|
||||||
use dom::bindings::error::Error;
|
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::{JSRef, Temporary};
|
use dom::bindings::js::{JSRef, Temporary};
|
||||||
use dom::bindings::utils::{Reflector, reflect_dom_object};
|
use dom::bindings::utils::{Reflector, reflect_dom_object};
|
||||||
|
@ -40,29 +39,6 @@ pub enum DOMErrorName {
|
||||||
EncodingError
|
EncodingError
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DOMErrorName {
|
|
||||||
fn from_error(error: Error) -> DOMErrorName {
|
|
||||||
match error {
|
|
||||||
Error::IndexSize => DOMErrorName::IndexSizeError,
|
|
||||||
Error::NotFound => DOMErrorName::NotFoundError,
|
|
||||||
Error::HierarchyRequest => DOMErrorName::HierarchyRequestError,
|
|
||||||
Error::InvalidCharacter => DOMErrorName::InvalidCharacterError,
|
|
||||||
Error::NotSupported => DOMErrorName::NotSupportedError,
|
|
||||||
Error::InvalidState => DOMErrorName::InvalidStateError,
|
|
||||||
Error::Syntax => DOMErrorName::SyntaxError,
|
|
||||||
Error::NamespaceError => DOMErrorName::NamespaceError,
|
|
||||||
Error::InvalidAccess => DOMErrorName::InvalidAccessError,
|
|
||||||
Error::Security => DOMErrorName::SecurityError,
|
|
||||||
Error::Network => DOMErrorName::NetworkError,
|
|
||||||
Error::Abort => DOMErrorName::AbortError,
|
|
||||||
Error::Timeout => DOMErrorName::TimeoutError,
|
|
||||||
Error::DataClone => DOMErrorName::DataCloneError,
|
|
||||||
Error::NoModificationAllowedError => DOMErrorName::NoModificationAllowedError,
|
|
||||||
Error::JSFailed => panic!(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct DOMException {
|
pub struct DOMException {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
|
@ -80,10 +56,6 @@ impl DOMException {
|
||||||
pub fn new(global: GlobalRef, code: DOMErrorName) -> Temporary<DOMException> {
|
pub fn new(global: GlobalRef, code: DOMErrorName) -> Temporary<DOMException> {
|
||||||
reflect_dom_object(box DOMException::new_inherited(code), global, DOMExceptionBinding::Wrap)
|
reflect_dom_object(box DOMException::new_inherited(code), global, DOMExceptionBinding::Wrap)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_from_error(global: GlobalRef, code: Error) -> Temporary<DOMException> {
|
|
||||||
DOMException::new(global, DOMErrorName::from_error(code))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> DOMExceptionMethods for JSRef<'a, DOMException> {
|
impl<'a> DOMExceptionMethods for JSRef<'a, DOMException> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue