diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/webxr/camera-access | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/webxr/camera-access')
-rw-r--r-- | testing/web-platform/tests/webxr/camera-access/xrCamera_resolution.https.html | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webxr/camera-access/xrCamera_resolution.https.html b/testing/web-platform/tests/webxr/camera-access/xrCamera_resolution.https.html new file mode 100644 index 0000000000..d6d8690807 --- /dev/null +++ b/testing/web-platform/tests/webxr/camera-access/xrCamera_resolution.https.html @@ -0,0 +1,80 @@ +<!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_asserts.js"></script> +<script src="../resources/webxr_test_constants.js"></script> +<script src="../resources/webxr_test_constants_fake_world.js"></script> + +<script> + +const fakeDeviceInitParams = { + supportedModes: ["immersive-ar"], + views: VALID_VIEWS, + supportedFeatures: ALL_FEATURES, +}; + +const test_camera_present = (session, fakeDeviceController, t) => { + return session.requestReferenceSpace('viewer').then(viewerRefSpace => { + return new Promise((resolve, reject) => { + const requestAnimationFrameCallbackWithCamera = (time, frame) => { + const viewerPose = frame.getViewerPose(viewerRefSpace); + + t.step(() => { + let foundCamera = false; + + assert_not_equals(viewerPose, null, "Viewer pose should not be null!"); + assert_equals(viewerPose.views.length, VALID_VIEWS.length, "View lengths should match!"); + + for (const view of viewerPose.views) { + if (view.camera) { + assert_equals(view.camera.width, 333, "Width doesn't match expectations!"); + assert_equals(view.camera.height, 444, "Height doesn't match expectations!"); + + foundCamera = true; + } + } + + assert_true(foundCamera, "There should be at least one camera! Didn't find any.") + }); + + resolve(); + }; + + const requestAnimationFrameCallbackNoCamera = (time, frame) => { + + const viewerPose = frame.getViewerPose(viewerRefSpace); + t.step(() => { + assert_not_equals(viewerPose, null, "Viewer pose should not be null!"); + assert_equals(viewerPose.views.length, VALID_VIEWS.length, "View lengths should match!"); + + for (const view of viewerPose.views) { + assert_equals(view.camera, null, "Camera should be null!"); + } + }); + + const views_with_camera = VALID_VIEWS.map((element, index) => { + return { + ...element, + resolution: { width: 111 * (index+1), height: 222 * (index+1)}, + cameraImageInit: { width: 333, height: 444 }, + }; + }); + fakeDeviceController.setViews(views_with_camera); + + // After this rAFcb, the test is supposed to continue w/ a callback that + // expects XRCamera to be present: + session.requestAnimationFrame(requestAnimationFrameCallbackWithCamera); + }; + + // Kick off the test - start with rAFcb w/o an XRCamera: + session.requestAnimationFrame(requestAnimationFrameCallbackNoCamera); + }); + }); +}; + +xr_session_promise_test("XRCamera object is present and carries expected dimensions", + test_camera_present, + fakeDeviceInitParams, 'immersive-ar', {'requiredFeatures': ['camera-access']}); + +</script>
\ No newline at end of file |