| <!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> |
| |
| <canvas id="webgl-canvas"></canvas> |
| <script src="resources/presentation-setup.js"></script> |
| <script> |
| let fakeDisplays = fakeVRDisplays(); |
| |
| // This test verifies that timestamps are consistent when switching between |
| // magic window and presentation mode. |
| |
| vr_test( (t) => { |
| return navigator.getVRDisplays().then( (displays) => { |
| |
| let display = displays[0]; |
| |
| let usingPresentingRAF = false; |
| let lastTime = -1; |
| let lastrAFTime = -1; |
| let tolerance_ms = 250; |
| |
| function onAnimationFrame(time) { |
| var currentTime = window.performance.now(); |
| if (lastTime != -1) { |
| var timeDiff = currentTime - lastTime; |
| var rAFDiff = time - lastrAFTime; |
| if (usingPresentingRAF) { |
| t.step( () => { |
| assert_approx_equals(rAFDiff, timeDiff, tolerance_ms); |
| }, "timestamps not continuous"); |
| } |
| } |
| lastTime = currentTime; |
| lastrAFTime = time; |
| |
| if (usingPresentingRAF) { |
| t.done(); |
| } |
| if (!display.isPresenting) { |
| runWithUserGesture( () => { |
| display.requestPresent([{ source : webglCanvas }]).then( () => { |
| t.step( () => { |
| assert_true(display.isPresenting); |
| }, "Display should be presenting"); |
| usingPresentingRAF = true; |
| display.requestAnimationFrame(onAnimationFrame); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached(err); |
| }, "requestPresent rejected"); |
| }); |
| }); |
| } |
| } |
| display.requestAnimationFrame(onAnimationFrame); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("getVRDisplays rejected"); |
| }); |
| t.done(); |
| }); |
| }, [fakeDisplays["Pixel"]], |
| "requestAnimationFrame timestamp is consistent between magic window and presentation."); |
| |
| </script> |