| <!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> |
| <canvas id="webgl-canvas"></canvas> |
| <script src="resources/presentation-setup.js"></script> |
| <script> |
| let fakeDisplays = fakeVRDisplays(); |
| |
| vr_test( (t) => { |
| return navigator.getVRDisplays().then( (displays) => { |
| var display = displays[0]; |
| |
| runWithUserGesture( () => { |
| display.requestPresent([{ source : webglCanvas }]).then( () => { |
| t.step( () => { |
| assert_true(display.isPresenting); |
| }, "Display should be presenting"); |
| |
| // Call requestPresent again after a short delay, but without a user |
| // gesture. Should resolve because it's already presenting. |
| setTimeout( () => { |
| display.requestPresent([{ source : webglCanvas }]).then( () => { |
| t.step( () => { |
| assert_true(display.isPresenting); |
| }, "Display should still be presenting"); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached(err); |
| }, "Should never reach here"); |
| }).then( () => { |
| t.done(); |
| }); |
| }, 100); |
| |
| }, (err) => { |
| t.step( () => { |
| assert_unreached(err); |
| }, "Should never reach here"); |
| t.done(); |
| }); |
| }); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached(err); |
| }, "getVRDisplays rejected"); |
| t.done(); |
| }); |
| }, [fakeDisplays["Pixel"]], |
| "Test requestPresent resolves without a user gesture when already presenting"); |
| |
| </script> |