blob: cd4c130b20c25ce8b50220ebf74e5bad2e8fb8d1 [file] [log] [blame]
<!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="../external/wpt/webxr/resources/webxr_test_constants.js"></script>
<script src="../xr/resources/xr-internal-device-mocking.js"></script>
<script src="../xr/resources/xr-test-utils.js"></script>
<canvas id="webgl-canvas"></canvas>
<script>
let testName = "Ensures hit-test returns expected mock results";
let fakeDeviceInitParams = { supportsImmersive: true,
supportsEnvironmentIntegration: true };
let requestSessionModes = [ 'immersive-ar' ];
let expectedHitMatrix = [1, 0, 0, 1,
0, 1, 0, 2,
0, 0, 1, 3,
0, 0, 0, 1];
let testFunction = function(session, t, fakeDeviceController) {
assert_equals(session.mode, 'immersive-ar');
assert_not_equals(session.environmentBlendMode, 'opaque');
return session.requestReferenceSpace('local').then((referenceSpace) => {
let ray = new XRRay({x : 0.0, y : 0.0, z : 0.0}, {x : 1.0, y : 0.0, z: 0.0});
let hit = new device.mojom.XRHitResult();
hit.hitMatrix = expectedHitMatrix;
fakeDeviceController.setHitTestResults({ results: [hit] });
return session.requestHitTest(ray, referenceSpace).then(
(hitResults) => {
t.step(() => {
// Test that hit results are what we expected.
assert_equals(hitResults.length, 1);
assert_equals(hitResults[0].hitMatrix.length, 16);
assert_matrices_approx_equal(
hitResults[0].hitMatrix,
expectedHitMatrix,
FLOAT_EPSILON,
"Hit test matrix does not equals input test matrix");
});
});
});
};
xr_session_promise_test(
testFunction, fakeDeviceInitParams, requestSessionModes, testName);
</script>