| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../vr/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="../vr/resources/mock-vr-service.js"></script> |
| <script src="../vr/resources/test-constants.js"></script> |
| <canvas id="webgl-canvas"></canvas> |
| <script src="../vr/resources/presentation-setup.js"></script> |
| <script> |
| let fakeDisplays = fakeVRDisplays(); |
| |
| vr_test( (t) => { |
| return navigator.xr.requestDevice().then( (device) => { |
| runWithUserGesture( () => { |
| device.requestSession({ exclusive: true }).then( (session) => { |
| |
| promise_test( function() { |
| return promise_rejects(this, new TypeError(), |
| session.requestFrameOfReference("foo")); |
| }, "requestFrameOfReference rejected for unknown requested type."); |
| |
| return Promise.all([ |
| session.requestFrameOfReference("headModel").then( (frameOfRef) => { |
| t.step( () => { |
| assert_true(frameOfRef instanceof XRCoordinateSystem); |
| assert_true(frameOfRef instanceof XRFrameOfReference); |
| }, "'headModel' Frame of Reference is the correct type."); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("requestFrameOfReference 'headModel' rejected"); |
| }); |
| }), |
| |
| session.requestFrameOfReference("eyeLevel").then( (frameOfRef) => { |
| t.step( () => { |
| assert_true(frameOfRef instanceof XRCoordinateSystem); |
| assert_true(frameOfRef instanceof XRFrameOfReference); |
| }, "'eyeLevel' Frame of Reference is the correct type."); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("requestFrameOfReference 'eyeLevel' rejected"); |
| }); |
| }), |
| |
| session.requestFrameOfReference("stage").then( (frameOfRef) => { |
| t.step( () => { |
| assert_true(frameOfRef instanceof XRCoordinateSystem); |
| assert_true(frameOfRef instanceof XRFrameOfReference); |
| }, "'stage' Frame of Reference is the correct type."); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("requestFrameOfReference 'stage' rejected"); |
| }); |
| }) |
| ]); |
| |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("requestSession rejected"); |
| }); |
| }).then( () => { |
| t.done(); |
| }); |
| }); |
| }, (err) => { |
| t.step( () => { |
| assert_unreached("requestDevice rejected"); |
| }); |
| }); |
| }, [fakeDisplays["Pixel"]], |
| "requestFrameOfReference returns the expected objects"); |
| |
| </script> |