| <!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> |