From 62b2c65348a4fab5800299711cd97abcd03b4460 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sat, 28 Feb 2015 16:25:42 +0100 Subject: [PATCH] Add support for throwing TypeErrors from DOM implementations. --- components/script/dom/bindings/error.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index a150122e434..275c498c038 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -8,6 +8,8 @@ use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::global::GlobalRef; use dom::domexception::{DOMException, DOMErrorName}; +use util::str::DOMString; + use js::jsapi::{JSContext, JSBool, JSObject}; use js::jsapi::{JS_IsExceptionPending, JS_SetPendingException, JS_ReportPendingException}; use js::jsapi::{JS_ReportErrorNumber, JSErrorFormatString, JSEXN_TYPEERR}; @@ -52,6 +54,10 @@ pub enum Error { DataClone, /// NoModificationAllowedError DOMException NoModificationAllowedError, + + /// TypeError JavaScript Error + TypeError(DOMString), + /// A JavaScript exception is already pending. JSFailed, } @@ -83,6 +89,10 @@ pub fn throw_dom_exception(cx: *mut JSContext, global: GlobalRef, Error::Timeout => DOMErrorName::TimeoutError, Error::DataClone => DOMErrorName::DataCloneError, Error::NoModificationAllowedError => DOMErrorName::NoModificationAllowedError, + Error::TypeError(message) => { + throw_type_error(cx, &message); + return; + } Error::JSFailed => panic!(), }; let exception = DOMException::new(global, code).root();