diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index da460ad94b6..5953a013d6d 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -303,7 +303,10 @@ impl Error { global: &GlobalScope, rval: MutableHandleValue, ) { - assert!(!JS_IsExceptionPending(cx)); + match self { + Error::JSFailed => (), + _ => assert!(!JS_IsExceptionPending(cx)), + } throw_dom_exception(cx, global, self); assert!(JS_IsExceptionPending(cx)); assert!(JS_GetPendingException(cx, rval)); diff --git a/components/script/dom/permissions.rs b/components/script/dom/permissions.rs index 87dc88636da..5c6d7b0aed0 100644 --- a/components/script/dom/permissions.rs +++ b/components/script/dom/permissions.rs @@ -31,8 +31,6 @@ const DIALOG_TITLE: &'static str = "Permission request dialog"; const NONSECURE_DIALOG_MESSAGE: &'static str = "feature is only safe to use in secure context,\ but servo can't guarantee\n that the current context is secure. Do you want to proceed and grant permission?"; const REQUEST_DIALOG_MESSAGE: &'static str = "Do you want to grant permission for"; -const ROOT_DESC_CONVERSION_ERROR: &'static str = - "Can't convert to an IDL value of type PermissionDescriptor"; pub trait PermissionAlgorithm { type Descriptor; @@ -237,7 +235,7 @@ impl PermissionAlgorithm for Permissions { match PermissionDescriptor::new(cx, property.handle()) { Ok(ConversionResult::Success(descriptor)) => Ok(descriptor), Ok(ConversionResult::Failure(error)) => Err(Error::Type(error.into_owned())), - Err(_) => Err(Error::Type(String::from(ROOT_DESC_CONVERSION_ERROR))), + Err(_) => Err(Error::JSFailed), } } } diff --git a/tests/wpt/metadata/permissions/interfaces.any.js.ini b/tests/wpt/metadata/permissions/interfaces.any.js.ini index e7315f81741..1b5fd9fc44b 100644 --- a/tests/wpt/metadata/permissions/interfaces.any.js.ini +++ b/tests/wpt/metadata/permissions/interfaces.any.js.ini @@ -1,6 +1,10 @@ [interfaces.any.html] - expected: CRASH + [Permissions interface: operation query(object)] + expected: FAIL + + [Permissions interface: calling query(object) on navigator.permissions with too few arguments must throw TypeError] + expected: FAIL + [interfaces.any.worker.html] - expected: CRASH - + expected: CRASH \ No newline at end of file diff --git a/tests/wpt/metadata/permissions/test-background-fetch-permission.html.ini b/tests/wpt/metadata/permissions/test-background-fetch-permission.html.ini index aa2ce6f2435..fbd77c171d4 100644 --- a/tests/wpt/metadata/permissions/test-background-fetch-permission.html.ini +++ b/tests/wpt/metadata/permissions/test-background-fetch-permission.html.ini @@ -1,5 +1,3 @@ [test-background-fetch-permission.html] - expected: CRASH [Test Background Fetch Permission.] - expected: FAIL - + expected: FAIL \ No newline at end of file