blob: 263d496641b99156cca4a79dfcd50fc4a7770ae1 [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/device/vr/public/mojom/vr_service.mojom.js"></script>
<script src="../external/wpt/resources/chromium/webxr-test.js"></script>
<script src="resources/vr-test-utils.js "></script>
<script>
let fakeDisplays = fakeVRDisplays();
vr_test( (t) => {
return navigator.getVRDisplays().then( (displays) => {
let display = displays[0];
function onAnimationFrameBad() {
t.step( () => {
assert_unreached();
}, "Unregistered callback was called");
t.done();
}
let counter = 0;
function onAnimationFrameGood() {
counter++;
if (counter >= 4) {
t.done();
// Intentionally don't return immediately so that display.rAF gets
// called again to make sure it doesn't cause unexpected behavior like
// it did with crbug.com/679401
}
display.requestAnimationFrame(onAnimationFrameGood);
}
let handle = display.requestAnimationFrame(onAnimationFrameBad);
display.cancelAnimationFrame(handle);
display.requestAnimationFrame(onAnimationFrameGood);
}, (err) => {
t.step( () => {
assert_unreached("getVRDisplays rejected");
});
t.done();
});
}, [fakeDisplays["Pixel"]],
"requestAnimationFrame callbacks can be unregistered with cancelAnimationFrame");
</script>