aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/bindings/callback.rs9
-rw-r--r--tests/wpt/metadata/dom/traversal/TreeWalker-acceptNode-filter.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html10
3 files changed, 8 insertions, 14 deletions
diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs
index 7a1c12f64d3..4baccae098e 100644
--- a/components/script/dom/bindings/callback.rs
+++ b/components/script/dom/bindings/callback.rs
@@ -99,16 +99,15 @@ impl CallbackInterface {
-> Fallible<JSVal> {
let mut callable = UndefinedValue();
unsafe {
- let name = CString::new(name).unwrap();
- if JS_GetProperty(cx, self.callback(), name.as_ptr(), &mut callable) == 0 {
+ let c_name = CString::new(name).unwrap();
+ if JS_GetProperty(cx, self.callback(), c_name.as_ptr(), &mut callable) == 0 {
return Err(Error::JSFailed);
}
if !callable.is_object() ||
JS_ObjectIsCallable(cx, callable.to_object()) == 0 {
- // FIXME(#347)
- //ThrowErrorMessage(cx, MSG_NOT_CALLABLE, description.get());
- return Err(Error::JSFailed);
+ return Err(Error::Type(
+ format!("The value of the {} property is not callable", name)));
}
}
Ok(callable)
diff --git a/tests/wpt/metadata/dom/traversal/TreeWalker-acceptNode-filter.html.ini b/tests/wpt/metadata/dom/traversal/TreeWalker-acceptNode-filter.html.ini
deleted file mode 100644
index a0c22ee211b..00000000000
--- a/tests/wpt/metadata/dom/traversal/TreeWalker-acceptNode-filter.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[TreeWalker-acceptNode-filter.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
index 1bd28f3b885..b7f89eeea89 100644
--- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
+++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
@@ -85,23 +85,21 @@ test(function()
assert_node(walker.currentNode, { type: Element, id: 'B1' });
}, 'Testing with undefined filter');
-// XXX Servo breaks the test when a callback isn't callable
test(function()
{
var walker = document.createTreeWalker(testElement, /*NodeFilter.*/SHOW_ELEMENT, {});
- assert_throws(null, function () { walker.firstChild(); });
+ assert_throws(new TypeError(), function () { walker.firstChild(); });
assert_node(walker.currentNode, { type: Element, id: 'root' });
- assert_throws(null, function () { walker.nextNode(); });
+ assert_throws(new TypeError(), function () { walker.nextNode(); });
assert_node(walker.currentNode, { type: Element, id: 'root' });
}, 'Testing with object lacking acceptNode property');
-// XXX Servo breaks the test when a callback isn't callable
test(function()
{
var walker = document.createTreeWalker(testElement, /*NodeFilter.*/SHOW_ELEMENT, { acceptNode: "foo" });
- assert_throws(null, function () { walker.firstChild(); });
+ assert_throws(new TypeError(), function () { walker.firstChild(); });
assert_node(walker.currentNode, { type: Element, id: 'root' });
- assert_throws(null, function () { walker.nextNode(); });
+ assert_throws(new TypeError(), function () { walker.nextNode(); });
assert_node(walker.currentNode, { type: Element, id: 'root' });
}, 'Testing with object with non-function acceptNode property');