Don't try to unwrap the result of requestAnimationFrame callback

This commit is contained in:
David Zbarsky 2015-07-31 16:27:35 -04:00
parent 5bab439ab6
commit b77698a649
6 changed files with 39 additions and 1 deletions

View file

@ -531,7 +531,8 @@ impl<'a> WindowMethods for &'a Window {
let callback = move |now: f64| { let callback = move |now: f64| {
// TODO: @jdm The spec says that any exceptions should be suppressed; // TODO: @jdm The spec says that any exceptions should be suppressed;
callback.Call__(Finite::wrap(now), ExceptionHandling::Report).unwrap(); // https://github.com/servo/servo/issues/6928
let _ = callback.Call__(Finite::wrap(now), ExceptionHandling::Report);
}; };
doc.r().request_animation_frame(Box::new(callback)) doc.r().request_animation_frame(Box::new(callback))

View file

@ -8978,3 +8978,4 @@
[HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7)] [HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7)]
expected: FAIL expected: FAIL

View file

@ -56,3 +56,4 @@
[CloseEvent interface: existence and properties of interface prototype object] [CloseEvent interface: existence and properties of interface prototype object]
expected: FAIL expected: FAIL

View file

@ -773,6 +773,12 @@
"url": "/_mozilla/mozilla/window_requestAnimationFrame.html" "url": "/_mozilla/mozilla/window_requestAnimationFrame.html"
} }
], ],
"mozilla/window_requestAnimationFrame2.html": [
{
"path": "mozilla/window_requestAnimationFrame2.html",
"url": "/_mozilla/mozilla/window_requestAnimationFrame2.html"
}
],
"mozilla/window_setInterval.html": [ "mozilla/window_setInterval.html": [
{ {
"path": "mozilla/window_setInterval.html", "path": "mozilla/window_setInterval.html",

View file

@ -0,0 +1,6 @@
[window_requestAnimationFrame2.html]
type: testharness
expected: TIMEOUT
[Test throwing an error inside requestAnimationFrame callback]
expected: NOTRUN

View file

@ -0,0 +1,23 @@
<html>
<head>
<title>Test throwing an error inside requestAnimationFrame callback</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
var stepCalled = false;
function step() {
if (stepCalled) {
setTimeout(done, 0);
} else {
stepCalled = true;
window.requestAnimationFrame(step);
}
throw new Error();
}
window.requestAnimationFrame(step);
assert_equals(true, true, "rAF should not throw errors");
</script>
</body>
</html>