| <!DOCTYPE html> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src="resources/webxr_util.js"></script> |
| <script src="resources/webxr_test_constants.js"></script> |
| <script src="resources/webxr_test_asserts.js"></script> |
| |
| <script> |
| let testName = |
| "'XRBoundedReferenceSpace updates properly when the changes are applied"; |
| |
| let fakeDeviceInitParams = { |
| supportsImmersive: true, |
| supportedModes: ["inline", "immersive-vr"], |
| views: VALID_VIEWS, |
| viewerOrigin: IDENTITY_TRANSFORM, |
| floorOrigin: VALID_FLOOR_ORIGIN, |
| supportedFeatures: ALL_FEATURES |
| }; |
| |
| let testFunction = function(session, fakeDeviceController, t) { |
| |
| return new Promise((resolve, reject) => { |
| session.requestReferenceSpace('bounded-floor') |
| .then((referenceSpace) => { |
| t.step(() => { |
| // A bounded space may be created if no bounds have been set but the system has the capability to support bounded-floor |
| // A lack of bounds is indicated by an empty boundsGeometry |
| assert_equals(referenceSpace.boundsGeometry.length, 0); |
| }); |
| |
| function onFrame(time, xrFrame) { |
| // After the bounds have been explicitly set, they should be what we expect. |
| t.step(() => { |
| assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length); |
| for (i = 0; i < VALID_BOUNDS.length; ++i) { |
| let valid_point = VALID_BOUNDS[i]; |
| let bounds_point = referenceSpace.boundsGeometry[i]; |
| assert_equals(valid_point.x, bounds_point.x); |
| assert_equals(bounds_point.y, 0.0); |
| assert_equals(valid_point.z, bounds_point.z); |
| assert_equals(bounds_point.w, 1.0); |
| } |
| }); |
| |
| resolve(); |
| } |
| |
| // Now set the bounds explicitly and check again on the next frame. |
| fakeDeviceController.setBoundsGeometry(VALID_BOUNDS); |
| requestSkipAnimationFrame(session, onFrame); |
| }); |
| }); |
| }; |
| |
| xr_session_promise_test(testName, testFunction, fakeDeviceInitParams, 'immersive-vr', { 'requiredFeatures': ['bounded-floor'] }); |
| |
| </script> |