blob: de118fc34eab3e096a49ffd0be56abfba5a33fb2 [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/fake-vr-displays.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/device/vr/vr_service.mojom.js"></script>
<script src="resources/mock-vr-service.js"></script>
<script src="resources/test-constants.js"></script>
<script>
let fakeDisplays = fakeVRDisplays();
vr_test( (t, mock_service) => {
return navigator.getVRDisplays().then( (displays) => {
var display = displays[0];
var expected_pose = VALID_POSE;
var fd = new VRFrameData();
var counter = 0;
function onFrame() {
window.requestAnimationFrame(onFrame);
if (counter == 0) {
t.step( () => {
assert_false(display.getFrameData(fd));
}, "Expecting to not get framedata since there is no pose");
mock_service.mockVRDisplays_[0].setPose(expected_pose);
t.step( () => {
assert_false(display.getFrameData(fd));
}, "Does not update within the same frame");
} else {
t.step( () => {
assert_false(display.getFrameData(fd));
}, "getFrameData is expected to return false when not in a display RAF callback");
t.done();
}
counter++;
}
window.requestAnimationFrame(onFrame);
}, (err) => {
t.step( () => {
assert_unreached("getVRDisplays rejected");
});
});
}, [fakeDisplays["Pixel"]],
"getFrameData updates on the next frame");
</script>