blob: 0a376e332c99c9d52a6af6c9e7b9329ee2bd16db [file] [log] [blame]
<!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>
<script src="resources/test-constants.js"></script>
<script>
let fakeDisplays = fakeVRDisplays();
vr_test( (t, mock_service) => {
return navigator.getVRDisplays().then( (displays) => {
var display = displays[0];
var expected_pose = VALID_POSE;
var fd1 = new VRFrameData();
var fd2 = new VRFrameData();
mock_service.mockVRDisplays_[0].setPose(expected_pose);
var counter = 0;
function onFrame() {
display.requestAnimationFrame(onFrame);
t.step( () => {
assert_true(display.getFrameData(fd1));
assert_true(display.getFrameData(fd2));
}, "getFrameData successfully updated object");
t.step( () => {
for (let i = 0; i < 16; i++) {
assert_equals(fd1.leftProjectionMatrix[i],
fd2.leftProjectionMatrix[i]);
assert_equals(fd1.leftViewMatrix[i], fd2.leftViewMatrix[i]);
assert_equals(fd1.rightProjectionMatrix[i],
fd2.rightProjectionMatrix[i]);
assert_equals(fd1.rightViewMatrix[i], fd2.rightViewMatrix[i]);
}
let counter = 0;
for (let field in fd1.pose) {
counter++;
assert_equals(fd1.pose[field].length, fd2.pose[field].length);
assert_greater_than(fd1.pose[field].length, 0);
for (let i = 0; i < fd1.pose[field].length; i++) {
assert_equals(fd1.pose[field][i], fd2.pose[field][i]);
}
}
assert_equals(counter, 6);
}, "frame data matches within the same frame");
t.done();
}
display.requestAnimationFrame(onFrame);
}, (err) => {
t.step( () => {
assert_unreached("getVRDisplays rejected");
});
});
}, [fakeDisplays["Pixel"]],
"getFrameData returns the same data within a single frame");
</script>