diff options
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'); |