From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- testing/web-platform/tests/webxr/META.yml | 3 + testing/web-platform/tests/webxr/anchors/META.yml | 1 + .../ar_anchor_freefloating_create_move.https.html | 94 +++++++ ...r_anchor_freefloating_delay_creation.https.html | 122 +++++++++ .../ar_anchor_freefloating_failure.https.html | 72 +++++ ...nchor_freefloating_pause_resume_stop.https.html | 115 ++++++++ .../webxr/anchors/ar_anchor_getAnchors.https.html | 58 ++++ .../webxr/anchors/ar_anchor_states.https.html | 114 ++++++++ .../tests/webxr/anchors/idlharness.https.window.js | 16 ++ .../web-platform/tests/webxr/ar-module/META.yml | 1 + .../webxr/ar-module/idlharness.https.window.js | 17 ++ ...vice_isSessionSupported_immersive-ar.https.html | 34 +++ ...xrDevice_requestSession_immersive-ar.https.html | 27 ++ .../xrSession_environmentBlendMode.https.html | 23 ++ .../ar-module/xrSession_interactionMode.https.html | 84 ++++++ .../camera-access/xrCamera_resolution.https.html | 80 ++++++ .../depth_sensing_cpu_dataUnavailable.https.html | 27 ++ .../cpu/depth_sensing_cpu_inactiveFrame.https.html | 26 ++ .../depth_sensing_cpu_incorrectUsage.https.html | 48 ++++ ...ensing_cpu_luminance_alpha_dataValid.https.html | 110 ++++++++ .../cpu/depth_sensing_cpu_staleView.https.html | 26 ++ .../webxr/depth-sensing/dataUnavailableTests.js | 58 ++++ .../depth_sensing_notEnabled.https.html | 61 +++++ .../depth_sensing_gpu_dataUnavailable.https.html | 27 ++ .../gpu/depth_sensing_gpu_inactiveFrame.https.html | 26 ++ .../depth_sensing_gpu_incorrectUsage.https.html | 46 ++++ .../gpu/depth_sensing_gpu_staleView.https.html | 26 ++ .../webxr/depth-sensing/inactiveFrameTests.js | 36 +++ .../tests/webxr/depth-sensing/staleViewsTests.js | 39 +++ .../web-platform/tests/webxr/dom-overlay/META.yml | 1 + .../webxr/dom-overlay/ar_dom_overlay.https.html | 298 +++++++++++++++++++++ .../dom-overlay/ar_dom_overlay_hit_test.https.html | 128 +++++++++ .../webxr/dom-overlay/idlharness.https.window.js | 20 ++ .../webxr/dom-overlay/nested_fullscreen.https.html | 81 ++++++ .../events_input_source_recreation.https.html | 143 ++++++++++ .../webxr/events_input_sources_change.https.html | 113 ++++++++ ...vents_referenceSpace_reset_immersive.https.html | 50 ++++ .../events_referenceSpace_reset_inline.https.html | 52 ++++ .../tests/webxr/events_session_select.https.html | 114 ++++++++ .../events_session_select_subframe.https.html | 65 +++++ .../tests/webxr/events_session_squeeze.https.html | 136 ++++++++++ .../exclusive_requestFrame_nolayer.https.html | 56 ++++ .../tests/webxr/gamepads-module/META.yml | 1 + .../gamepads-module/idlharness.https.window.js | 16 ++ .../xrInputSource_gamepad_disconnect.https.html | 159 +++++++++++ ...InputSource_gamepad_input_registered.https.html | 130 +++++++++ .../tests/webxr/getInputPose_handedness.https.html | 83 ++++++ .../tests/webxr/getInputPose_pointer.https.html | 96 +++++++ .../getViewerPose_emulatedPosition.https.html | 55 ++++ .../web-platform/tests/webxr/hand-input/META.yml | 1 + .../webxr/hand-input/idlharness.https.window.js | 16 ++ testing/web-platform/tests/webxr/hit-test/META.yml | 1 + .../hit-test/ar_hittest_source_cancel.https.html | 100 +++++++ ...ar_hittest_subscription_inputSources.https.html | 170 ++++++++++++ .../ar_hittest_subscription_refSpaces.https.html | 158 +++++++++++ ..._hittest_subscription_states_regular.https.html | 69 +++++ ...ittest_subscription_states_transient.https.html | 66 +++++ ...t_subscription_transientInputSources.https.html | 177 ++++++++++++ ...r_hittest_subscription_unlocalizable.https.html | 108 ++++++++ .../tests/webxr/hit-test/idlharness.https.html | 29 ++ .../webxr/hit-test/xrRay_constructor.https.html | 159 +++++++++++ .../tests/webxr/hit-test/xrRay_matrix.https.html | 101 +++++++ .../tests/webxr/idlharness.https.window.js | 55 ++++ testing/web-platform/tests/webxr/layers/META.yml | 1 + .../layers/xrWebGLBinding_constructor.https.html | 83 ++++++ .../xrFrame_getLightEstimate_oldSession.https.html | 57 ++++ .../xrFrame_getLightEstimate_staleFrame.https.html | 47 ++++ .../xrFrame_getLightEstimate_valid.https.html | 104 +++++++ .../xrSession_getLightProbe_ended.https.html | 21 ++ .../xrSession_getLightProbe_notEnabled.https.html | 18 ++ .../xrSession_getLightProbe_valid.https.html | 27 ++ .../xrWebGLBinding_getReflectionCubeMap.https.html | 95 +++++++ .../tests/webxr/navigator_xr_sameObject.https.html | 32 +++ .../tests/webxr/render_state_update.https.html | 95 +++++++ .../render_state_vertical_fov_immersive.https.html | 41 +++ .../render_state_vertical_fov_inline.https.html | 89 ++++++ .../tests/webxr/resources/webxr_check.html | 17 ++ .../tests/webxr/resources/webxr_math_utils.js | 67 +++++ .../tests/webxr/resources/webxr_test_asserts.js | 185 +++++++++++++ .../tests/webxr/resources/webxr_test_constants.js | 204 ++++++++++++++ .../resources/webxr_test_constants_fake_depth.js | 78 ++++++ .../resources/webxr_test_constants_fake_world.js | 79 ++++++ .../tests/webxr/resources/webxr_util.js | 241 +++++++++++++++++ ...bGLCanvasContext_create_xrcompatible.https.html | 52 ++++ ...asContext_makecompatible_contextlost.https.html | 28 ++ ...nvasContext_makecompatible_reentrant.https.html | 48 ++++ .../webxr/webxr-supported-by-feature-policy.html | 10 + .../tests/webxr/webxr_availability.http.sub.html | 39 +++ .../tests/webxr/webxr_feature_policy.https.html | 97 +++++++ .../webxr/webxr_feature_policy.https.html.headers | 1 + .../xrBoundedReferenceSpace_updates.https.html | 58 ++++ .../webxr/xrDevice_disconnect_ends.https.html | 38 +++ ...rDevice_isSessionSupported_immersive.https.html | 21 ++ ...ssionSupported_immersive_unsupported.https.html | 21 ++ .../xrDevice_isSessionSupported_inline.https.html | 22 ++ .../xrDevice_requestSession_immersive.https.html | 26 ++ ..._requestSession_immersive_no_gesture.https.html | 16 ++ ...requestSession_immersive_unsupported.https.html | 23 ++ .../xrDevice_requestSession_no_mode.https.html | 22 ++ ...uestSession_non_immersive_no_gesture.https.html | 16 ++ ...vice_requestSession_optionalFeatures.https.html | 32 +++ ...uestSession_requiredFeatures_unknown.https.html | 35 +++ .../tests/webxr/xrFrame_getPose.https.html | 101 +++++++ .../webxr/xrFrame_getViewerPose_getPose.https.html | 62 +++++ ...ame_getViewerPose_getPose_identities.https.html | 113 ++++++++ .../tests/webxr/xrFrame_lifetime.https.html | 57 ++++ .../webxr/xrFrame_session_sameObject.https.html | 25 ++ .../webxr/xrInputSource_add_remove.https.html | 68 +++++ .../xrInputSource_emulatedPosition.https.html | 62 +++++ ...xrInputSource_getPose_targetRay_grip.https.html | 50 ++++ .../tests/webxr/xrInputSource_profiles.https.html | 38 +++ .../webxr/xrInputSource_sameObject.https.html | 62 +++++ .../webxr/xrPose_transform_sameObject.https.html | 42 +++ .../webxr/xrReferenceSpace_originOffset.https.html | 135 ++++++++++ ...xrReferenceSpace_originOffsetBounded.https.html | 244 +++++++++++++++++ ...xrReferenceSpace_originOffset_viewer.https.html | 54 ++++ .../xrReferenceSpace_relationships.https.html | 58 ++++ .../webxr/xrRigidTransform_constructor.https.html | 148 ++++++++++ .../webxr/xrRigidTransform_inverse.https.html | 108 ++++++++ .../tests/webxr/xrRigidTransform_matrix.https.html | 45 ++++ .../webxr/xrRigidTransform_sameObject.https.html | 40 +++ .../xrSession_cancelAnimationFrame.https.html | 55 ++++ ...n_cancelAnimationFrame_invalidhandle.https.html | 42 +++ .../webxr/xrSession_enabledFeatures.https.html | 87 ++++++ .../tests/webxr/xrSession_end.https.html | 40 +++ .../xrSession_features_deviceSupport.https.html | 60 +++++ .../webxr/xrSession_input_events_end.https.html | 79 ++++++ ...xrSession_prevent_multiple_exclusive.https.html | 43 +++ ...requestAnimationFrame_callback_calls.https.html | 32 +++ ...ion_requestAnimationFrame_data_valid.https.html | 57 ++++ ..._requestAnimationFrame_getViewerPose.https.html | 84 ++++++ ...sion_requestAnimationFrame_timestamp.https.html | 93 +++++++ .../xrSession_requestReferenceSpace.https.html | 70 +++++ ...ssion_requestReferenceSpace_features.https.html | 82 ++++++ .../xrSession_requestSessionDuringEnd.https.html | 68 +++++ .../tests/webxr/xrSession_sameObject.https.html | 66 +++++ .../webxr/xrSession_viewer_availability.https.html | 73 +++++ .../xrSession_viewer_referenceSpace.https.html | 73 +++++ .../webxr/xrSession_visibilityState.https.html | 82 ++++++ ...aryReferenceSpace_floorlevel_updates.https.html | 65 +++++ .../tests/webxr/xrView_eyes.https.html | 45 ++++ .../tests/webxr/xrView_match.https.html | 87 ++++++ .../tests/webxr/xrView_oneframeupdate.https.html | 86 ++++++ .../tests/webxr/xrView_sameObject.https.html | 37 +++ .../webxr/xrViewerPose_secondaryViews.https.html | 94 +++++++ .../webxr/xrViewerPose_views_sameObject.https.html | 33 +++ .../tests/webxr/xrViewport_valid.https.html | 76 ++++++ .../webxr/xrWebGLLayer_constructor.https.html | 82 ++++++ .../webxr/xrWebGLLayer_framebuffer_draw.https.html | 92 +++++++ .../xrWebGLLayer_framebuffer_sameObject.https.html | 25 ++ .../xrWebGLLayer_framebuffer_scale.https.html | 58 ++++ .../xrWebGLLayer_opaque_framebuffer.https.html | 124 +++++++++ ...ebGLLayer_opaque_framebuffer_stencil.https.html | 223 +++++++++++++++ .../tests/webxr/xrWebGLLayer_viewports.https.html | 69 +++++ .../tests/webxr/xr_viewport_scale.https.html | 231 ++++++++++++++++ 155 files changed, 10735 insertions(+) create mode 100644 testing/web-platform/tests/webxr/META.yml create mode 100644 testing/web-platform/tests/webxr/anchors/META.yml create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_create_move.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_failure.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_getAnchors.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/ar_anchor_states.https.html create mode 100644 testing/web-platform/tests/webxr/anchors/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/ar-module/META.yml create mode 100644 testing/web-platform/tests/webxr/ar-module/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html create mode 100644 testing/web-platform/tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html create mode 100644 testing/web-platform/tests/webxr/ar-module/xrSession_environmentBlendMode.https.html create mode 100644 testing/web-platform/tests/webxr/ar-module/xrSession_interactionMode.https.html create mode 100644 testing/web-platform/tests/webxr/camera-access/xrCamera_resolution.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/dataUnavailableTests.js create mode 100644 testing/web-platform/tests/webxr/depth-sensing/depth_sensing_notEnabled.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_dataUnavailable.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_incorrectUsage.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_staleView.https.html create mode 100644 testing/web-platform/tests/webxr/depth-sensing/inactiveFrameTests.js create mode 100644 testing/web-platform/tests/webxr/depth-sensing/staleViewsTests.js create mode 100644 testing/web-platform/tests/webxr/dom-overlay/META.yml create mode 100644 testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay.https.html create mode 100644 testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html create mode 100644 testing/web-platform/tests/webxr/dom-overlay/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html create mode 100644 testing/web-platform/tests/webxr/events_input_source_recreation.https.html create mode 100644 testing/web-platform/tests/webxr/events_input_sources_change.https.html create mode 100644 testing/web-platform/tests/webxr/events_referenceSpace_reset_immersive.https.html create mode 100644 testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html create mode 100644 testing/web-platform/tests/webxr/events_session_select.https.html create mode 100644 testing/web-platform/tests/webxr/events_session_select_subframe.https.html create mode 100644 testing/web-platform/tests/webxr/events_session_squeeze.https.html create mode 100644 testing/web-platform/tests/webxr/exclusive_requestFrame_nolayer.https.html create mode 100644 testing/web-platform/tests/webxr/gamepads-module/META.yml create mode 100644 testing/web-platform/tests/webxr/gamepads-module/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html create mode 100644 testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html create mode 100644 testing/web-platform/tests/webxr/getInputPose_handedness.https.html create mode 100644 testing/web-platform/tests/webxr/getInputPose_pointer.https.html create mode 100644 testing/web-platform/tests/webxr/getViewerPose_emulatedPosition.https.html create mode 100644 testing/web-platform/tests/webxr/hand-input/META.yml create mode 100644 testing/web-platform/tests/webxr/hand-input/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/hit-test/META.yml create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_source_cancel.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_regular.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_transient.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_unlocalizable.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/idlharness.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html create mode 100644 testing/web-platform/tests/webxr/hit-test/xrRay_matrix.https.html create mode 100644 testing/web-platform/tests/webxr/idlharness.https.window.js create mode 100644 testing/web-platform/tests/webxr/layers/META.yml create mode 100644 testing/web-platform/tests/webxr/layers/xrWebGLBinding_constructor.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_ended.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_valid.https.html create mode 100644 testing/web-platform/tests/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html create mode 100644 testing/web-platform/tests/webxr/navigator_xr_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/render_state_update.https.html create mode 100644 testing/web-platform/tests/webxr/render_state_vertical_fov_immersive.https.html create mode 100644 testing/web-platform/tests/webxr/render_state_vertical_fov_inline.https.html create mode 100644 testing/web-platform/tests/webxr/resources/webxr_check.html create mode 100644 testing/web-platform/tests/webxr/resources/webxr_math_utils.js create mode 100644 testing/web-platform/tests/webxr/resources/webxr_test_asserts.js create mode 100644 testing/web-platform/tests/webxr/resources/webxr_test_constants.js create mode 100644 testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_depth.js create mode 100644 testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_world.js create mode 100644 testing/web-platform/tests/webxr/resources/webxr_util.js create mode 100644 testing/web-platform/tests/webxr/webGLCanvasContext_create_xrcompatible.https.html create mode 100644 testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_contextlost.https.html create mode 100644 testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_reentrant.https.html create mode 100644 testing/web-platform/tests/webxr/webxr-supported-by-feature-policy.html create mode 100644 testing/web-platform/tests/webxr/webxr_availability.http.sub.html create mode 100644 testing/web-platform/tests/webxr/webxr_feature_policy.https.html create mode 100644 testing/web-platform/tests/webxr/webxr_feature_policy.https.html.headers create mode 100644 testing/web-platform/tests/webxr/xrBoundedReferenceSpace_updates.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_disconnect_ends.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_isSessionSupported_inline.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_immersive.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_no_mode.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_optionalFeatures.https.html create mode 100644 testing/web-platform/tests/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html create mode 100644 testing/web-platform/tests/webxr/xrFrame_getPose.https.html create mode 100644 testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose.https.html create mode 100644 testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose_identities.https.html create mode 100644 testing/web-platform/tests/webxr/xrFrame_lifetime.https.html create mode 100644 testing/web-platform/tests/webxr/xrFrame_session_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrInputSource_add_remove.https.html create mode 100644 testing/web-platform/tests/webxr/xrInputSource_emulatedPosition.https.html create mode 100644 testing/web-platform/tests/webxr/xrInputSource_getPose_targetRay_grip.https.html create mode 100644 testing/web-platform/tests/webxr/xrInputSource_profiles.https.html create mode 100644 testing/web-platform/tests/webxr/xrInputSource_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrPose_transform_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrReferenceSpace_originOffset.https.html create mode 100644 testing/web-platform/tests/webxr/xrReferenceSpace_originOffsetBounded.https.html create mode 100644 testing/web-platform/tests/webxr/xrReferenceSpace_originOffset_viewer.https.html create mode 100644 testing/web-platform/tests/webxr/xrReferenceSpace_relationships.https.html create mode 100644 testing/web-platform/tests/webxr/xrRigidTransform_constructor.https.html create mode 100644 testing/web-platform/tests/webxr/xrRigidTransform_inverse.https.html create mode 100644 testing/web-platform/tests/webxr/xrRigidTransform_matrix.https.html create mode 100644 testing/web-platform/tests/webxr/xrRigidTransform_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_end.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_input_events_end.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_prevent_multiple_exclusive.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_timestamp.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestReferenceSpace.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestReferenceSpace_features.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_requestSessionDuringEnd.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_viewer_availability.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_viewer_referenceSpace.https.html create mode 100644 testing/web-platform/tests/webxr/xrSession_visibilityState.https.html create mode 100644 testing/web-platform/tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html create mode 100644 testing/web-platform/tests/webxr/xrView_eyes.https.html create mode 100644 testing/web-platform/tests/webxr/xrView_match.https.html create mode 100644 testing/web-platform/tests/webxr/xrView_oneframeupdate.https.html create mode 100644 testing/web-platform/tests/webxr/xrView_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrViewerPose_secondaryViews.https.html create mode 100644 testing/web-platform/tests/webxr/xrViewerPose_views_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrViewport_valid.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_constructor.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_draw.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_sameObject.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_scale.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html create mode 100644 testing/web-platform/tests/webxr/xrWebGLLayer_viewports.https.html create mode 100644 testing/web-platform/tests/webxr/xr_viewport_scale.https.html (limited to 'testing/web-platform/tests/webxr') diff --git a/testing/web-platform/tests/webxr/META.yml b/testing/web-platform/tests/webxr/META.yml new file mode 100644 index 0000000000..13c5d7b595 --- /dev/null +++ b/testing/web-platform/tests/webxr/META.yml @@ -0,0 +1,3 @@ +spec: https://immersive-web.github.io/webxr/ +suggested_reviewers: + - klausw diff --git a/testing/web-platform/tests/webxr/anchors/META.yml b/testing/web-platform/tests/webxr/anchors/META.yml new file mode 100644 index 0000000000..0b7f740ac5 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/anchors/ diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_create_move.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_create_move.https.html new file mode 100644 index 0000000000..87f7556007 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_create_move.https.html @@ -0,0 +1,94 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html new file mode 100644 index 0000000000..686eacf848 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html @@ -0,0 +1,122 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_failure.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_failure.https.html new file mode 100644 index 0000000000..dd03be0ad5 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_failure.https.html @@ -0,0 +1,72 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html new file mode 100644 index 0000000000..6eb6bc76e6 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html @@ -0,0 +1,115 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_getAnchors.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_getAnchors.https.html new file mode 100644 index 0000000000..50664b0a4b --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_getAnchors.https.html @@ -0,0 +1,58 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/ar_anchor_states.https.html b/testing/web-platform/tests/webxr/anchors/ar_anchor_states.https.html new file mode 100644 index 0000000000..8369549852 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/ar_anchor_states.https.html @@ -0,0 +1,114 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/anchors/idlharness.https.window.js b/testing/web-platform/tests/webxr/anchors/idlharness.https.window.js new file mode 100644 index 0000000000..b69a327229 --- /dev/null +++ b/testing/web-platform/tests/webxr/anchors/idlharness.https.window.js @@ -0,0 +1,16 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://immersive-web.github.io/anchors/ + +idl_test( + ['anchors'], + ['webxr-hit-test', 'webxr', 'dom'], + async idl_array => { + idl_array.add_objects({ + // TODO: Add object instances + }); + } +); diff --git a/testing/web-platform/tests/webxr/ar-module/META.yml b/testing/web-platform/tests/webxr/ar-module/META.yml new file mode 100644 index 0000000000..47e5ea9cd4 --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/webxr-ar-module/ diff --git a/testing/web-platform/tests/webxr/ar-module/idlharness.https.window.js b/testing/web-platform/tests/webxr/ar-module/idlharness.https.window.js new file mode 100644 index 0000000000..51cc3c4280 --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/idlharness.https.window.js @@ -0,0 +1,17 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://immersive-web.github.io/webxr-ar-module/ + +idl_test( + ['webxr-ar-module'], + ['webxr', 'dom'], + async idl_array => { + idl_array.add_objects({ + XRSession: ['xrSession'], + }); + self.xrSession = await navigator.xr.requestSession('inline'); + } +); diff --git a/testing/web-platform/tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html b/testing/web-platform/tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html new file mode 100644 index 0000000000..2cd36a17f6 --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html b/testing/web-platform/tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html new file mode 100644 index 0000000000..9984ee589d --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/ar-module/xrSession_environmentBlendMode.https.html b/testing/web-platform/tests/webxr/ar-module/xrSession_environmentBlendMode.https.html new file mode 100644 index 0000000000..beff66586c --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/xrSession_environmentBlendMode.https.html @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/webxr/ar-module/xrSession_interactionMode.https.html b/testing/web-platform/tests/webxr/ar-module/xrSession_interactionMode.https.html new file mode 100644 index 0000000000..89cdc80132 --- /dev/null +++ b/testing/web-platform/tests/webxr/ar-module/xrSession_interactionMode.https.html @@ -0,0 +1,84 @@ + + + + + + + + + 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 @@ + + + + + + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html new file mode 100644 index 0000000000..e120f0b7dd --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html new file mode 100644 index 0000000000..92c20cecbf --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html new file mode 100644 index 0000000000..44868d8cb0 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html @@ -0,0 +1,48 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html new file mode 100644 index 0000000000..db88c42558 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html @@ -0,0 +1,110 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html new file mode 100644 index 0000000000..6a411ace45 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/dataUnavailableTests.js b/testing/web-platform/tests/webxr/depth-sensing/dataUnavailableTests.js new file mode 100644 index 0000000000..7460af7132 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/dataUnavailableTests.js @@ -0,0 +1,58 @@ +'use strict'; + +const TestStates = Object.freeze({ + "ShouldSucceedScheduleRAF": 1, + "ShouldFailScheduleRAF": 2, + "ShouldSucceedTestDone": 3, +}); + +const dataUnavailableTestFunctionGenerator = function(isCpuOptimized) { + return (session, controller, t, sessionObjects) => { + let state = TestStates.ShouldSucceedScheduleRAF; + + return session.requestReferenceSpace('viewer').then((viewerSpace) => { + let done = false; + + const glBinding = new XRWebGLBinding(session, sessionObjects.gl); + + const rafCb = function(time, frame) { + const pose = frame.getViewerPose(viewerSpace); + for(const view of pose.views) { + const depthInformation = isCpuOptimized ? frame.getDepthInformation(view) + : glBinding.getDepthInformation(view); + + if (state == TestStates.ShouldSucceedScheduleRAF + || state == TestStates.ShouldSucceedTestDone) { + t.step(() => { + assert_not_equals(depthInformation, null); + }); + } else { + t.step(() => { + assert_equals(depthInformation, null); + }); + } + } + + switch(state) { + case TestStates.ShouldSucceedScheduleRAF: + controller.clearDepthSensingData(); + state = TestStates.ShouldFailScheduleRAF; + session.requestAnimationFrame(rafCb); + break; + case TestStates.ShouldFailScheduleRAF: + controller.setDepthSensingData(DEPTH_SENSING_DATA); + state = TestStates.ShouldSucceedTestDone; + session.requestAnimationFrame(rafCb); + break; + case TestStates.ShouldSucceedTestDone: + done = true; + break; + } + }; + + session.requestAnimationFrame(rafCb); + + return t.step_wait(() => done); + }); + }; +}; \ No newline at end of file diff --git a/testing/web-platform/tests/webxr/depth-sensing/depth_sensing_notEnabled.https.html b/testing/web-platform/tests/webxr/depth-sensing/depth_sensing_notEnabled.https.html new file mode 100644 index 0000000000..23bae35493 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/depth_sensing_notEnabled.https.html @@ -0,0 +1,61 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_dataUnavailable.https.html b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_dataUnavailable.https.html new file mode 100644 index 0000000000..018edf7693 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_dataUnavailable.https.html @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html new file mode 100644 index 0000000000..6116f7a041 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_incorrectUsage.https.html b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_incorrectUsage.https.html new file mode 100644 index 0000000000..9fc2e6a5f8 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_incorrectUsage.https.html @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_staleView.https.html b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_staleView.https.html new file mode 100644 index 0000000000..ecd0d479f7 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_staleView.https.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/depth-sensing/inactiveFrameTests.js b/testing/web-platform/tests/webxr/depth-sensing/inactiveFrameTests.js new file mode 100644 index 0000000000..b310f01ef8 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/inactiveFrameTests.js @@ -0,0 +1,36 @@ +'use strict'; + +const inactiveFrameTestFunctionGenerator = function(isCpuOptimized) { + return (session, controller, t, sessionObjects) => { + return session.requestReferenceSpace('viewer').then((viewerSpace) => { + let callbacksKickedOff = false; + let callbackCounter = 0; + + const glBinding = new XRWebGLBinding(session, sessionObjects.gl); + + const rafCb = function(time, frame) { + const pose = frame.getViewerPose(viewerSpace); + for(const view of pose.views) { + const callback = () => { + t.step(() => { + assert_throws_dom("InvalidStateError", + () => isCpuOptimized ? frame.getDepthInformation(view) + : glBinding.getDepthInformation(view), + "getDepthInformation() should throw when ran outside RAF"); + }); + callbackCounter--; + } + + t.step_timeout(callback, 10); + callbackCounter++; + } + + callbacksKickedOff = true; + }; + + session.requestAnimationFrame(rafCb); + + return t.step_wait(() => callbacksKickedOff && (callbackCounter == 0)); + }); + }; +}; diff --git a/testing/web-platform/tests/webxr/depth-sensing/staleViewsTests.js b/testing/web-platform/tests/webxr/depth-sensing/staleViewsTests.js new file mode 100644 index 0000000000..b1f11c9651 --- /dev/null +++ b/testing/web-platform/tests/webxr/depth-sensing/staleViewsTests.js @@ -0,0 +1,39 @@ +'use strict'; + +const staleViewsTestFunctionGenerator = function(isCpuOptimized) { + return (session, controller, t, sessionObjects) => { + let done = false; + + const staleViews = new Set(); + + return session.requestReferenceSpace('viewer').then((viewerSpace) => { + const glBinding = new XRWebGLBinding(session, sessionObjects.gl); + + const secondRafCb = function(time, frame) { + for(const view of staleViews) { + t.step(() => { + assert_throws_dom("InvalidStateError", + () => isCpuOptimized ? frame.getDepthInformation(view) + : glBinding.getDepthInformation(view), + "getDepthInformation() should throw when run with stale XRView"); + }); + } + + done = true; + }; + + const firstRafCb = function(time, frame) { + const pose = frame.getViewerPose(viewerSpace); + for(const view of pose.views) { + staleViews.add(view); + } + + session.requestAnimationFrame(secondRafCb); + }; + + session.requestAnimationFrame(firstRafCb); + + return t.step_wait(() => done); + }); + }; +}; \ No newline at end of file diff --git a/testing/web-platform/tests/webxr/dom-overlay/META.yml b/testing/web-platform/tests/webxr/dom-overlay/META.yml new file mode 100644 index 0000000000..be2b6e613a --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/dom-overlays/ diff --git a/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay.https.html b/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay.https.html new file mode 100644 index 0000000000..250adf9b24 --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay.https.html @@ -0,0 +1,298 @@ + + + + + + + + +
+
+
+
+
+ + + + +
+
+

test text

+
+ + diff --git a/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html b/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html new file mode 100644 index 0000000000..6fdf2498ed --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html @@ -0,0 +1,128 @@ + + + + + + + + + +
+
+
+ + + + +
+ + diff --git a/testing/web-platform/tests/webxr/dom-overlay/idlharness.https.window.js b/testing/web-platform/tests/webxr/dom-overlay/idlharness.https.window.js new file mode 100644 index 0000000000..0f901e5b5d --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/idlharness.https.window.js @@ -0,0 +1,20 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://immersive-web.github.io/dom-overlays/ + +idl_test( + ['webxr-dom-overlays'], + ['webxr', 'html', 'dom', 'SVG'], + async idl_array => { + self.svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + idl_array.add_objects({ + Document: ['document'], + HTMLElement: ['document.body'], + SVGElement: ['svgElement'], + Window: ['window'] + }); + } +); diff --git a/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html b/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html new file mode 100644 index 0000000000..a8fc70fca6 --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html @@ -0,0 +1,81 @@ + + + + + + + + + + +
+ + +
+
+

test text

+
+ + diff --git a/testing/web-platform/tests/webxr/events_input_source_recreation.https.html b/testing/web-platform/tests/webxr/events_input_source_recreation.https.html new file mode 100644 index 0000000000..f7ef86c273 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_input_source_recreation.https.html @@ -0,0 +1,143 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_input_sources_change.https.html b/testing/web-platform/tests/webxr/events_input_sources_change.https.html new file mode 100644 index 0000000000..b2a17d4e17 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_input_sources_change.https.html @@ -0,0 +1,113 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_referenceSpace_reset_immersive.https.html b/testing/web-platform/tests/webxr/events_referenceSpace_reset_immersive.https.html new file mode 100644 index 0000000000..d12d8f7737 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_referenceSpace_reset_immersive.https.html @@ -0,0 +1,50 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html b/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html new file mode 100644 index 0000000000..a445886a52 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html @@ -0,0 +1,52 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_session_select.https.html b/testing/web-platform/tests/webxr/events_session_select.https.html new file mode 100644 index 0000000000..9b7402d2b6 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_session_select.https.html @@ -0,0 +1,114 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_session_select_subframe.https.html b/testing/web-platform/tests/webxr/events_session_select_subframe.https.html new file mode 100644 index 0000000000..b7615c3d0b --- /dev/null +++ b/testing/web-platform/tests/webxr/events_session_select_subframe.https.html @@ -0,0 +1,65 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/events_session_squeeze.https.html b/testing/web-platform/tests/webxr/events_session_squeeze.https.html new file mode 100644 index 0000000000..122fe340a2 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_session_squeeze.https.html @@ -0,0 +1,136 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/exclusive_requestFrame_nolayer.https.html b/testing/web-platform/tests/webxr/exclusive_requestFrame_nolayer.https.html new file mode 100644 index 0000000000..c1c52f0374 --- /dev/null +++ b/testing/web-platform/tests/webxr/exclusive_requestFrame_nolayer.https.html @@ -0,0 +1,56 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/gamepads-module/META.yml b/testing/web-platform/tests/webxr/gamepads-module/META.yml new file mode 100644 index 0000000000..a6751571a7 --- /dev/null +++ b/testing/web-platform/tests/webxr/gamepads-module/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/webxr-gamepads-module/ diff --git a/testing/web-platform/tests/webxr/gamepads-module/idlharness.https.window.js b/testing/web-platform/tests/webxr/gamepads-module/idlharness.https.window.js new file mode 100644 index 0000000000..4509c67a84 --- /dev/null +++ b/testing/web-platform/tests/webxr/gamepads-module/idlharness.https.window.js @@ -0,0 +1,16 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://immersive-web.github.io/webxr-gamepads-module/ + +idl_test( + ['webxr-gamepads-module'], + ['webxr', 'dom'], + async idl_array => { + idl_array.add_objects({ + // TODO: XRInputSource + }); + } +); diff --git a/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html b/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html new file mode 100644 index 0000000000..bd69649d44 --- /dev/null +++ b/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html @@ -0,0 +1,159 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html b/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html new file mode 100644 index 0000000000..28f3084671 --- /dev/null +++ b/testing/web-platform/tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html @@ -0,0 +1,130 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/getInputPose_handedness.https.html b/testing/web-platform/tests/webxr/getInputPose_handedness.https.html new file mode 100644 index 0000000000..9dbaf3b629 --- /dev/null +++ b/testing/web-platform/tests/webxr/getInputPose_handedness.https.html @@ -0,0 +1,83 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/getInputPose_pointer.https.html b/testing/web-platform/tests/webxr/getInputPose_pointer.https.html new file mode 100644 index 0000000000..302dc399ee --- /dev/null +++ b/testing/web-platform/tests/webxr/getInputPose_pointer.https.html @@ -0,0 +1,96 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/getViewerPose_emulatedPosition.https.html b/testing/web-platform/tests/webxr/getViewerPose_emulatedPosition.https.html new file mode 100644 index 0000000000..7bffaf51a5 --- /dev/null +++ b/testing/web-platform/tests/webxr/getViewerPose_emulatedPosition.https.html @@ -0,0 +1,55 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hand-input/META.yml b/testing/web-platform/tests/webxr/hand-input/META.yml new file mode 100644 index 0000000000..caa72f8632 --- /dev/null +++ b/testing/web-platform/tests/webxr/hand-input/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/webxr-hand-input/ diff --git a/testing/web-platform/tests/webxr/hand-input/idlharness.https.window.js b/testing/web-platform/tests/webxr/hand-input/idlharness.https.window.js new file mode 100644 index 0000000000..184ec6b306 --- /dev/null +++ b/testing/web-platform/tests/webxr/hand-input/idlharness.https.window.js @@ -0,0 +1,16 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://immersive-web.github.io/webxr-hand-input/ + +idl_test( + ['webxr-hand-input'], + ['webxr', 'dom'], + async idl_array => { + idl_array.add_objects({ + // TODO + }); + } +); diff --git a/testing/web-platform/tests/webxr/hit-test/META.yml b/testing/web-platform/tests/webxr/hit-test/META.yml new file mode 100644 index 0000000000..e3f94f05a1 --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/hit-test/ diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_source_cancel.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_source_cancel.https.html new file mode 100644 index 0000000000..5e7381df02 --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_source_cancel.https.html @@ -0,0 +1,100 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html new file mode 100644 index 0000000000..ca92d390fc --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html @@ -0,0 +1,170 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html new file mode 100644 index 0000000000..a30e71949c --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html @@ -0,0 +1,158 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_regular.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_regular.https.html new file mode 100644 index 0000000000..9f5513fd1e --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_regular.https.html @@ -0,0 +1,69 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_transient.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_transient.https.html new file mode 100644 index 0000000000..e8a83a62a6 --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_states_transient.https.html @@ -0,0 +1,66 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html new file mode 100644 index 0000000000..9e0347963c --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html @@ -0,0 +1,177 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_unlocalizable.https.html b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_unlocalizable.https.html new file mode 100644 index 0000000000..d1cb1a5a5c --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/ar_hittest_subscription_unlocalizable.https.html @@ -0,0 +1,108 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/idlharness.https.html b/testing/web-platform/tests/webxr/hit-test/idlharness.https.html new file mode 100644 index 0000000000..f61959b9ed --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/idlharness.https.html @@ -0,0 +1,29 @@ + +WebXR hit-test IDL tests + + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html b/testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html new file mode 100644 index 0000000000..56b3931341 --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html @@ -0,0 +1,159 @@ + + + + + + diff --git a/testing/web-platform/tests/webxr/hit-test/xrRay_matrix.https.html b/testing/web-platform/tests/webxr/hit-test/xrRay_matrix.https.html new file mode 100644 index 0000000000..77f134a75f --- /dev/null +++ b/testing/web-platform/tests/webxr/hit-test/xrRay_matrix.https.html @@ -0,0 +1,101 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/idlharness.https.window.js b/testing/web-platform/tests/webxr/idlharness.https.window.js new file mode 100644 index 0000000000..dae201ebc9 --- /dev/null +++ b/testing/web-platform/tests/webxr/idlharness.https.window.js @@ -0,0 +1,55 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +'use strict'; + +// https://immersive-web.github.io/webxr/ + +idl_test( + ['webxr'], + ['permissions', 'webgl1', 'geometry', 'html', 'dom'], + async idl_array => { + idl_array.add_objects({ + Navigator: ['navigator'], + XR: ['navigator.xr'], + // TODO: XRSystem + XRSession: ['xrSession'], + XRRenderState: ['xrRenderState'], + // TODO: XRFrame + // TODO: XRSpace + XRReferenceSpace: ['xrReferenceSpace'], + // TODO: XRBoundedReferenceSpace + // TODO: XRView + // TODO: XRViewport + XRRigidTransform: ['new XRRigidTransform()'], + // TODO: XRPose + // TODO: XRViewerPose + // TODO: XRInputSource + XRInputSourceArray: ['xrInputSourceArray'], + XRWebGLLayer: ['xrWebGLLayer'], + WebGLRenderingContextBase: ['webGLRenderingContextBase'], + XRSessionEvent: ['xrSessionEvent'], + // TODO: XRInputSourceEvent + XRInputSourcesChangeEvent: ['xrInputSourcesChangeEvent'], + // TODO: XRReferenceSpaceEvent + // TODO: XRPermissionStatus + }); + + self.xrSession = await navigator.xr.requestSession('inline'); + self.xrRenderState = self.xrSession.renderState; + self.xrReferenceSpace = await self.xrSession.requestReferenceSpace('viewer'); + self.xrInputSourceArray = self.xrSession.inputSources; + self.xrSessionEvent = new XRSessionEvent('end', {session: self.xrSession}); + self.xrInputSourcesChangeEvent = new XRInputSourcesChangeEvent('inputsourceschange', { + session: self.xrSession, + added: [], + removed: [], + }); + + // XRWebGLRenderingContext is a typedef to either WebGLRenderingContext or WebGL2RenderingContext. + const canvas = document.createElement('canvas'); + self.webGLRenderingContextBase = canvas.getContext('webgl'); + self.xrWebGLLayer = new XRWebGLLayer(self.xrSession, self.webGLRenderingContextBase); + } +); diff --git a/testing/web-platform/tests/webxr/layers/META.yml b/testing/web-platform/tests/webxr/layers/META.yml new file mode 100644 index 0000000000..117c1adf02 --- /dev/null +++ b/testing/web-platform/tests/webxr/layers/META.yml @@ -0,0 +1 @@ +spec: https://immersive-web.github.io/layers/ diff --git a/testing/web-platform/tests/webxr/layers/xrWebGLBinding_constructor.https.html b/testing/web-platform/tests/webxr/layers/xrWebGLBinding_constructor.https.html new file mode 100644 index 0000000000..b3457cf320 --- /dev/null +++ b/testing/web-platform/tests/webxr/layers/xrWebGLBinding_constructor.https.html @@ -0,0 +1,83 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html new file mode 100644 index 0000000000..7a896aa9ff --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html new file mode 100644 index 0000000000..499a30d561 --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html new file mode 100644 index 0000000000..68c5d841fc --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html @@ -0,0 +1,104 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_ended.https.html b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_ended.https.html new file mode 100644 index 0000000000..cc046499f9 --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_ended.https.html @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html new file mode 100644 index 0000000000..23fe1c6ec5 --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_valid.https.html b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_valid.https.html new file mode 100644 index 0000000000..074c7fd1dc --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrSession_getLightProbe_valid.https.html @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html b/testing/web-platform/tests/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html new file mode 100644 index 0000000000..a68a0f2b51 --- /dev/null +++ b/testing/web-platform/tests/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html @@ -0,0 +1,95 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/navigator_xr_sameObject.https.html b/testing/web-platform/tests/webxr/navigator_xr_sameObject.https.html new file mode 100644 index 0000000000..2c3ea541a9 --- /dev/null +++ b/testing/web-platform/tests/webxr/navigator_xr_sameObject.https.html @@ -0,0 +1,32 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/render_state_update.https.html b/testing/web-platform/tests/webxr/render_state_update.https.html new file mode 100644 index 0000000000..3801a42947 --- /dev/null +++ b/testing/web-platform/tests/webxr/render_state_update.https.html @@ -0,0 +1,95 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/render_state_vertical_fov_immersive.https.html b/testing/web-platform/tests/webxr/render_state_vertical_fov_immersive.https.html new file mode 100644 index 0000000000..c09cd7c174 --- /dev/null +++ b/testing/web-platform/tests/webxr/render_state_vertical_fov_immersive.https.html @@ -0,0 +1,41 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/render_state_vertical_fov_inline.https.html b/testing/web-platform/tests/webxr/render_state_vertical_fov_inline.https.html new file mode 100644 index 0000000000..3b33fb15c3 --- /dev/null +++ b/testing/web-platform/tests/webxr/render_state_vertical_fov_inline.https.html @@ -0,0 +1,89 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/resources/webxr_check.html b/testing/web-platform/tests/webxr/resources/webxr_check.html new file mode 100644 index 0000000000..2d8e5b387d --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_check.html @@ -0,0 +1,17 @@ + + \ No newline at end of file diff --git a/testing/web-platform/tests/webxr/resources/webxr_math_utils.js b/testing/web-platform/tests/webxr/resources/webxr_math_utils.js new file mode 100644 index 0000000000..54a61c1854 --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_math_utils.js @@ -0,0 +1,67 @@ +// |matrix| - Float32Array, |input| - point-like dict (must have x, y, z, w) +let transform_point_by_matrix = function(matrix, input) { + return { + x : matrix[0] * input.x + matrix[4] * input.y + matrix[8] * input.z + matrix[12] * input.w, + y : matrix[1] * input.x + matrix[5] * input.y + matrix[9] * input.z + matrix[13] * input.w, + z : matrix[2] * input.x + matrix[6] * input.y + matrix[10] * input.z + matrix[14] * input.w, + w : matrix[3] * input.x + matrix[7] * input.y + matrix[11] * input.z + matrix[15] * input.w, + }; +} + +// Creates a unit-length quaternion. +// |input| - point-like dict (must have x, y, z, w) +let normalize_quaternion = function(input) { + const length_squared = input.x * input.x + input.y * input.y + input.z * input.z + input.w * input.w; + const length = Math.sqrt(length_squared); + + return {x : input.x / length, y : input.y / length, z : input.z / length, w : input.w / length}; +} + +// Returns negated quaternion. +// |input| - point-like dict (must have x, y, z, w) +let flip_quaternion = function(input) { + return {x : -input.x, y : -input.y, z : -input.z, w : -input.w}; +} + +// |input| - point-like dict (must have x, y, z, w) +let conjugate_quaternion = function(input) { + return {x : -input.x, y : -input.y, z : -input.z, w : input.w}; +} + +let multiply_quaternions = function(q1, q2) { + return { + w : q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z, + x : q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y, + y : q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x, + z : q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w, + } +} + +// |point| - point-like dict (must have x, y, z, w) +let normalize_perspective = function(point) { + if(point.w == 0 || point.w == 1) return point; + + return { + x : point.x / point.w, + y : point.y / point.w, + z : point.z / point.w, + w : 1 + }; +} + +// |quaternion| - point-like dict (must have x, y, z, w), +// |input| - point-like dict (must have x, y, z, w) +let transform_point_by_quaternion = function(quaternion, input) { + const q_normalized = normalize_quaternion(quaternion); + const q_conj = conjugate_quaternion(q_normalized); + const p_in = normalize_perspective(input); + + // construct a quaternion out of the point (take xyz & zero the real part). + const p = {x : p_in.x, y : p_in.y, z : p_in.z, w : 0}; + + // transform the input point + const p_mul = multiply_quaternions( q_normalized, multiply_quaternions(p, q_conj) ); + + // add back the w component of the input + return { x : p_mul.x, y : p_mul.y, z : p_mul.z, w : p_in.w }; +} diff --git a/testing/web-platform/tests/webxr/resources/webxr_test_asserts.js b/testing/web-platform/tests/webxr/resources/webxr_test_asserts.js new file mode 100644 index 0000000000..a82f7aaf90 --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_test_asserts.js @@ -0,0 +1,185 @@ +// Utility assert functions. +// Relies on resources/testharness.js to be included before this file. +// Relies on webxr_test_constants.js to be included before this file. +// Relies on webxr_math_utils.js to be included before this file. + + +// |p1|, |p2| - objects with x, y, z, w components that are floating point numbers. +// Returns the name of mismatching component between p1 and p2. +const get_mismatched_component = function(p1, p2, epsilon = FLOAT_EPSILON) { + for (const v of ['x', 'y', 'z', 'w']) { + if (Math.abs(p1[v] - p2[v]) > epsilon) { + return v; + } + } + + return null; +} + +// |p1|, |p2| - objects with x, y, z, w components that are floating point numbers. +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_point_approx_equals = function(p1, p2, epsilon = FLOAT_EPSILON, prefix = "") { + if (p1 == null && p2 == null) { + return; + } + + assert_not_equals(p1, null, prefix + "p1 must be non-null"); + assert_not_equals(p2, null, prefix + "p2 must be non-null"); + + const mismatched_component = get_mismatched_component(p1, p2, epsilon); + + if (mismatched_component !== null) { + let error_message = prefix + ' Point comparison failed.\n'; + error_message += ` p1: {x: ${p1.x}, y: ${p1.y}, z: ${p1.z}, w: ${p1.w}}\n`; + error_message += ` p2: {x: ${p2.x}, y: ${p2.y}, z: ${p2.z}, w: ${p2.w}}\n`; + error_message += ` Difference in component ${mismatched_component} exceeded the given epsilon.\n`; + assert_approx_equals(p2[mismatched_component], p1[mismatched_component], epsilon, error_message); + } +}; + +const assert_orientation_approx_equals = function(q1, q2, epsilon = FLOAT_EPSILON, prefix = "") { + if (q1 == null && q2 == null) { + return; + } + + assert_not_equals(q1, null, prefix + "q1 must be non-null"); + assert_not_equals(q2, null, prefix + "q2 must be non-null"); + + const q2_flipped = flip_quaternion(q2); + + const mismatched_component = get_mismatched_component(q1, q2, epsilon); + const mismatched_component_flipped = get_mismatched_component(q1, q2_flipped, epsilon); + + if (mismatched_component !== null && mismatched_component_flipped !== null) { + // q1 doesn't match neither q2 nor -q2, so it definitely does not represent the same orientations, + // log an assert failure. + let error_message = prefix + ' Orientation comparison failed.\n'; + error_message += ` p1: {x: ${q1.x}, y: ${q1.y}, z: ${q1.z}, w: ${q1.w}}\n`; + error_message += ` p2: {x: ${q2.x}, y: ${q2.y}, z: ${q2.z}, w: ${q2.w}}\n`; + error_message += ` Difference in component ${mismatched_component} exceeded the given epsilon.\n`; + assert_approx_equals(q2[mismatched_component], q1[mismatched_component], epsilon, error_message); + } +} + +// |p1|, |p2| - objects with x, y, z, w components that are floating point numbers. +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_point_significantly_not_equals = function(p1, p2, epsilon = FLOAT_EPSILON, prefix = "") { + + assert_not_equals(p1, null, prefix + "p1 must be non-null"); + assert_not_equals(p2, null, prefix + "p2 must be non-null"); + + let mismatched_component = get_mismatched_component(p1, p2, epsilon); + + if (mismatched_component === null) { + let error_message = prefix + ' Point comparison failed.\n'; + error_message += ` p1: {x: ${p1.x}, y: ${p1.y}, z: ${p1.z}, w: ${p1.w}}\n`; + error_message += ` p2: {x: ${p2.x}, y: ${p2.y}, z: ${p2.z}, w: ${p2.w}}\n`; + error_message += ` Difference in components did not exceeded the given epsilon.\n`; + assert_unreached(error_message); + } +}; + +// |t1|, |t2| - objects containing position and orientation. +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_transform_approx_equals = function(t1, t2, epsilon = FLOAT_EPSILON, prefix = "") { + if (t1 == null && t2 == null) { + return; + } + + assert_not_equals(t1, null, prefix + "t1 must be non-null"); + assert_not_equals(t2, null, prefix + "t2 must be non-null"); + + assert_point_approx_equals(t1.position, t2.position, epsilon, prefix + "positions must be equal"); + assert_orientation_approx_equals(t1.orientation, t2.orientation, epsilon, prefix + "orientations must be equal"); +}; + +// |m1|, |m2| - arrays of floating point numbers +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_matrix_approx_equals = function(m1, m2, epsilon = FLOAT_EPSILON, prefix = "") { + if (m1 == null && m2 == null) { + return; + } + + assert_not_equals(m1, null, prefix + "m1 must be non-null"); + assert_not_equals(m2, null, prefix + "m2 must be non-null"); + + assert_equals(m1.length, 16, prefix + "m1 must have length of 16"); + assert_equals(m2.length, 16, prefix + "m2 must have length of 16"); + + let mismatched_element = -1; + for (let i = 0; i < 16; ++i) { + if (Math.abs(m1[i] - m2[i]) > epsilon) { + mismatched_element = i; + break; + } + } + + if (mismatched_element > -1) { + let error_message = prefix + 'Matrix comparison failed.\n'; + error_message += ' Difference in element ' + mismatched_element + + ' exceeded the given epsilon.\n'; + + error_message += ' Matrix 1: [' + m1.join(',') + ']\n'; + error_message += ' Matrix 2: [' + m2.join(',') + ']\n'; + + assert_approx_equals( + m1[mismatched_element], m2[mismatched_element], epsilon, + error_message); + } +}; + +// |m1|, |m2| - arrays of floating point numbers +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_matrix_significantly_not_equals = function(m1, m2, epsilon = FLOAT_EPSILON, prefix = "") { + if (m1 == null && m2 == null) { + return; + } + + assert_not_equals(m1, null, prefix + "m1 must be non-null"); + assert_not_equals(m2, null, prefix + "m2 must be non-null"); + + assert_equals(m1.length, 16, prefix + "m1 must have length of 16"); + assert_equals(m2.length, 16, prefix + "m2 must have length of 16"); + + let mismatch = false; + for (let i = 0; i < 16; ++i) { + if (Math.abs(m1[i] - m2[i]) > epsilon) { + mismatch = true; + break; + } + } + + if (!mismatch) { + let m1_str = '['; + let m2_str = '['; + for (let i = 0; i < 16; ++i) { + m1_str += m1[i] + (i < 15 ? ', ' : ''); + m2_str += m2[i] + (i < 15 ? ', ' : ''); + } + m1_str += ']'; + m2_str += ']'; + + let error_message = prefix + 'Matrix comparison failed.\n'; + error_message += + ' No element exceeded the given epsilon ' + epsilon + '.\n'; + + error_message += ' Matrix A: ' + m1_str + '\n'; + error_message += ' Matrix B: ' + m2_str + '\n'; + + assert_unreached(error_message); + } +}; + +// |r1|, |r2| - XRRay objects +// |epsilon| - float specifying precision +// |prefix| - string used as a prefix for logging +const assert_ray_approx_equals = function(r1, r2, epsilon = FLOAT_EPSILON, prefix = "") { + assert_point_approx_equals(r1.origin, r2.origin, epsilon, prefix + "origin:"); + assert_point_approx_equals(r1.direction, r2.direction, epsilon, prefix + "direction:"); + assert_matrix_approx_equals(r1.matrix, r2.matrix, epsilon, prefix + "matrix:"); +}; diff --git a/testing/web-platform/tests/webxr/resources/webxr_test_constants.js b/testing/web-platform/tests/webxr/resources/webxr_test_constants.js new file mode 100644 index 0000000000..1a0d7bddad --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_test_constants.js @@ -0,0 +1,204 @@ +// assert_equals can fail when comparing floats due to precision errors, so +// use assert_approx_equals with this constant instead +const FLOAT_EPSILON = 0.001; + +// Identity matrix +const IDENTITY_MATRIX = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1]; + +const IDENTITY_TRANSFORM = { + position: [0, 0, 0], + orientation: [0, 0, 0, 1], +}; + +// A valid pose matrix/transform for when we don't care about specific values +// Note that these two should be identical, just different representations +const VALID_POSE_MATRIX = [0, 1, 0, 0, + 0, 0, 1, 0, + 1, 0, 0, 0, + 1, 1, 1, 1]; + +const VALID_POSE_TRANSFORM = { + position: [1, 1, 1], + orientation: [0.5, 0.5, 0.5, 0.5] +}; + +const VALID_PROJECTION_MATRIX = + [1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0]; + +// This is a decomposed version of the above. +const VALID_FIELD_OF_VIEW = { + upDegrees: 71.565, + downDegrees: -45, + leftDegrees:-63.4349, + rightDegrees: 75.9637 +}; + +// A valid input grip matrix for when we don't care about specific values +const VALID_GRIP = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 4, 3, 2, 1]; + +const VALID_GRIP_TRANSFORM = { + position: [4, 3, 2], + orientation: [0, 0, 0, 1] +}; + +// A valid input pointer offset for when we don't care about specific values +const VALID_POINTER = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 1, 1]; + +const VALID_POINTER_TRANSFORM = { + position: [0, 0, 1], + orientation: [0, 0, 0, 1] +}; + +// A Valid Local to floor matrix/transform for when we don't care about specific +// values. Note that these should be identical, just different representations. +const VALID_FLOOR_ORIGIN_MATRIX = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 1, 1.65, -1, 1]; + +const VALID_FLOOR_ORIGIN = { + position: [-1.0, -1.65, 1.0], + orientation: [0, 0, 0, 1] +}; + +const VALID_BOUNDS = [ + { x: 3.0, z: -2.0 }, + { x: 3.5, z: 0.0 }, + { x: 3.0, z: 2.0 }, + { x: -3.0, z: 2.0 }, + { x: -3.5, z: 0.0 }, + { x: -3.0, z: -2.0 } +]; + +const VALID_RESOLUTION = { + width: 200, + height: 200 +}; + +const LEFT_OFFSET = { + position: [-0.1, 0, 0], + orientation: [0, 0, 0, 1] +}; + +const RIGHT_OFFSET = { + position: [0.1, 0, 0], + orientation: [0, 0, 0, 1] +}; + +const FIRST_PERSON_OFFSET = { + position: [0, 0.1, 0], + orientation: [0, 0, 0, 1] +}; + +const VALID_VIEWS = [{ + eye:"left", + projectionMatrix: VALID_PROJECTION_MATRIX, + viewOffset: LEFT_OFFSET, + resolution: VALID_RESOLUTION + }, { + eye:"right", + projectionMatrix: VALID_PROJECTION_MATRIX, + viewOffset: RIGHT_OFFSET, + resolution: VALID_RESOLUTION + }, +]; + +const VALID_SECONDARY_VIEWS = [{ + eye: "none", + projectionMatrix: VALID_PROJECTION_MATRIX, + viewOffset: FIRST_PERSON_OFFSET, + resolution: VALID_RESOLUTION, + isFirstPersonObserver: true + } +]; + +const NON_IMMERSIVE_VIEWS = [{ + eye: "none", + projectionMatrix: VALID_PROJECTION_MATRIX, + viewOffset: IDENTITY_TRANSFORM, + resolution: VALID_RESOLUTION, + } +]; + +const ALL_FEATURES = [ + 'viewer', + 'local', + 'local-floor', + 'bounded-floor', + 'unbounded', + 'hit-test', + 'dom-overlay', + 'light-estimation', + 'anchors', + 'depth-sensing', + 'secondary-views', + 'camera-access', +]; + +const TRACKED_IMMERSIVE_DEVICE = { + supportsImmersive: true, + supportedModes: [ "inline", "immersive-vr"], + views: VALID_VIEWS, + secondaryViews: VALID_SECONDARY_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: ALL_FEATURES, + environmentBlendMode: "opaque", + interactionMode: "world-space" +}; + +const IMMERSIVE_AR_DEVICE = { + supportsImmersive: true, + supportedModes: [ "inline", "immersive-ar"], + views: VALID_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: ALL_FEATURES, + environmentBlendMode: "additive", + interactionMode: "screen-space" +}; + +const VALID_NON_IMMERSIVE_DEVICE = { + supportsImmersive: false, + supportedModes: ["inline"], + views: NON_IMMERSIVE_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: ALL_FEATURES, + environmentBlendMode: "opaque", + interactionMode: "screen-space" +}; + +const VALID_CONTROLLER = { + handedness: "none", + targetRayMode: "tracked-pointer", + pointerOrigin: VALID_POINTER_TRANSFORM, + profiles: [] +}; + +const RIGHT_CONTROLLER = { + handedness: "right", + targetRayMode: "tracked-pointer", + pointerOrigin: VALID_POINTER_TRANSFORM, + profiles: [] +}; + +const SCREEN_CONTROLLER = { + handedness: "none", + targetRayMode: "screen", + pointerOrigin: VALID_POINTER_TRANSFORM, + profiles: [] +}; + +// From: https://immersive-web.github.io/webxr/#default-features +const DEFAULT_FEATURES = { + "inline": ["viewer"], + "immersive-vr": ["viewer", "local"], + "immersive-ar": ["viewer", "local"], +}; diff --git a/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_depth.js b/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_depth.js new file mode 100644 index 0000000000..36890d398d --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_depth.js @@ -0,0 +1,78 @@ +'use strict'; + +// This file introduces constants used to mock depth data for depth sensing API. + +const convertDepthBufferToArrayBuffer = function (data, desiredFormat) { + if(desiredFormat == "luminance-alpha") { + const result = new ArrayBuffer(data.length * 2); // each entry has 2 bytes + const view = new Uint16Array(result); + + for(let i = 0; i < data.length; ++i) { + view[i] = data[i]; + } + + return new Uint8Array(result); + } else if(desiredFormat == "float32") { + const result = new ArrayBuffer(data.length * 4); // each entry has 4 bytes + const view = new Float32Array(result); + + for(let i = 0; i < data.length; ++i) { + view[i] = data[i]; + } + + return new Uint8Array(result); + } else { + throw new Error("Unrecognized data format!"); + } +} + +// Let's assume that the depth values are in cm, Xcm = x * 1/100m +const RAW_VALUE_TO_METERS = 1/100; + +const createDepthSensingData = function() { + const depthSensingBufferHeight = 5; + const depthSensingBufferWidth = 7; + const depthSensingBuffer = [ + 1, 1, 1, 1, 1, 1, 1, // first row + 1, 2, 3, 4, 5, 6, 7, + 1, 4, 9, 16, 25, 36, 49, + 1, 8, 27, 64, 125, 216, 343, + 1, 16, 81, 256, 625, 1296, 2401, + ]; // depthSensingBuffer value at column c, row r is Math.pow(c+1, r). + + // Let's assume that the origin of the depth buffer is in the bottom right + // corner, with X's growing to the left and Y's growing upwards. + // This corresponds to the origin at 2401 in the above matrix, with X axis + // growing from 2401 towards 1296, and Y axis growing from 2401 towards 343. + // This corresponds to a rotation around Z axis by 180 degrees, with origin at [1,1]. + const depthSensingBufferFromViewerTransform = { + position: [1, 1, 0], + orientation: [0, 0, 1, 0], + }; + + return { + depthData: convertDepthBufferToArrayBuffer(depthSensingBuffer, "luminance-alpha"), + width: depthSensingBufferWidth, + height: depthSensingBufferHeight, + normDepthBufferFromNormView: depthSensingBufferFromViewerTransform, + rawValueToMeters: RAW_VALUE_TO_METERS, + }; +}; + +const DEPTH_SENSING_DATA = createDepthSensingData(); + +// Returns expected depth value at |column|, |row| coordinates, expressed +// in depth buffer's coordinate system. +const getExpectedValueAt = function(column, row) { + return Math.pow(column+1, row) * RAW_VALUE_TO_METERS; +}; + +const VALID_DEPTH_CONFIG_CPU_USAGE = { + usagePreference: ['cpu-optimized'], + dataFormatPreference: ['luminance-alpha', 'float32'], +}; + +const VALID_DEPTH_CONFIG_GPU_USAGE = { + usagePreference: ['gpu-optimized'], + dataFormatPreference: ['luminance-alpha', 'float32'], +}; diff --git a/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_world.js b/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_world.js new file mode 100644 index 0000000000..7e428e2155 --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_test_constants_fake_world.js @@ -0,0 +1,79 @@ +'use strict'; + +// This file introduces constants used to mock fake world for the purposes of hit test. + +// Generates FakeXRWorldInit dictionary with given dimensions. +// The generated fake world will have floor and front wall treated as planes, +// side walls treated as meshes, and ceiling treated as points. +// width - X axis, in meters +// height - Y axis, in meters +// length - Z axis, in meters +function createFakeWorld( + width, height, length, + front_wall_and_floor_type = "plane", + side_walls_type = "mesh", + ceiling_type = "point") { + // Vertices: + const BOTTOM_LEFT_FRONT = { x: -width/2, y: 0, z: -length/2, w: 1}; + const BOTTOM_RIGHT_FRONT = { x: width/2, y: 0, z: -length/2, w: 1}; + + const TOP_LEFT_FRONT = { x: -width/2, y: height, z: -length/2, w: 1}; + const TOP_RIGHT_FRONT = { x: width/2, y: height, z: -length/2, w: 1}; + + const BOTTOM_LEFT_BACK = { x: -width/2, y: 0, z: length/2, w: 1}; + const BOTTOM_RIGHT_BACK = { x: width/2, y: 0, z: length/2, w: 1}; + + const TOP_LEFT_BACK = { x: -width/2, y: height, z: length/2, w: 1}; + const TOP_RIGHT_BACK = { x: width/2, y: height, z: length/2, w: 1}; + + // Faces: + const FRONT_WALL_AND_FLOOR_FACES = [ + // Front wall: + { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT] }, + { vertices: [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT] }, + // Floor: + { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK] }, + { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK] }, + ]; + + const CEILING_FACES = [ + // Ceiling: + { vertices: [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] }, + { vertices: [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK] }, + ]; + + const SIDE_WALLS_FACES = [ + // Left: + { vertices: [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK] }, + { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK] }, + // Right: + { vertices: [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] }, + { vertices: [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK] }, + ]; + + // Regions: + const FRONT_WALL_AND_FLOOR_REGION = { + type: front_wall_and_floor_type, + faces: FRONT_WALL_AND_FLOOR_FACES, + }; + + const SIDE_WALLS_REGION = { + type: side_walls_type, + faces: SIDE_WALLS_FACES, + }; + + const CEILING_REGION = { + type: ceiling_type, + faces: CEILING_FACES, + }; + + return { + hitTestRegions : [ + FRONT_WALL_AND_FLOOR_REGION, + SIDE_WALLS_REGION, + CEILING_REGION, + ] + }; +} + +const VALID_FAKE_WORLD = createFakeWorld(5.0, 2.0, 5.0); diff --git a/testing/web-platform/tests/webxr/resources/webxr_util.js b/testing/web-platform/tests/webxr/resources/webxr_util.js new file mode 100644 index 0000000000..625f76450e --- /dev/null +++ b/testing/web-platform/tests/webxr/resources/webxr_util.js @@ -0,0 +1,241 @@ +'use strict'; + +// These tests rely on the User Agent providing an implementation of the +// WebXR Testing API (https://github.com/immersive-web/webxr-test-api). +// +// In Chromium-based browsers, this implementation is provided by a JavaScript +// shim in order to reduce the amount of test-only code shipped to users. To +// enable these tests the browser must be run with these options: +// +// --enable-blink-features=MojoJS,MojoJSTest + +// Debugging message helper, by default does nothing. Implementations can +// override this. +var xr_debug = function(name, msg) {}; + +function xr_promise_test(name, func, properties, glContextType, glContextProperties) { + promise_test(async (t) => { + if (glContextType === 'webgl2') { + // Fast fail on platforms not supporting WebGL2. + assert_implements('WebGL2RenderingContext' in window, 'webgl2 not supported.'); + } + // Perform any required test setup: + xr_debug(name, 'setup'); + + assert_implements(navigator.xr, 'missing navigator.xr - ensure test is run in a secure context.'); + + // Only set up once. + if (!navigator.xr.test) { + // Load test-only API helpers. + const script = document.createElement('script'); + script.src = '/resources/test-only-api.js'; + script.async = false; + const p = new Promise((resolve, reject) => { + script.onload = () => { resolve(); }; + script.onerror = e => { reject(e); }; + }) + document.head.appendChild(script); + await p; + + if (isChromiumBased) { + // Chrome setup + await loadChromiumResources(); + } else if (isWebKitBased) { + // WebKit setup + await setupWebKitWebXRTestAPI(); + } + } + + // Either the test api needs to be polyfilled and it's not set up above, or + // something happened to one of the known polyfills and it failed to be + // setup properly. Either way, the fact that xr_promise_test is being used + // means that the tests expect navigator.xr.test to be set. By rejecting now + // we can hopefully provide a clearer indication of what went wrong. + assert_implements(navigator.xr.test, 'missing navigator.xr.test, even after attempted load'); + + let gl = null; + let canvas = null; + if (glContextType) { + canvas = document.createElement('canvas'); + document.body.appendChild(canvas); + gl = canvas.getContext(glContextType, glContextProperties); + } + + // Ensure that any devices are disconnected when done. If this were done in + // a .then() for the success case, a test that expected failure would + // already be marked done at the time that runs and the shutdown would + // interfere with the next test. + t.add_cleanup(async () => { + // Ensure system state is cleaned up. + xr_debug(name, 'cleanup'); + await navigator.xr.test.disconnectAllDevices(); + }); + + xr_debug(name, 'main'); + return func(t, gl); + }, name, properties); +} + +// A utility function for waiting one animation frame before running the callback +// +// This is only needed after calling FakeXRDevice methods outside of an animation frame +// +// This is so that we can paper over the potential race allowed by the "next animation frame" +// concept https://immersive-web.github.io/webxr-test-api/#xrsession-next-animation-frame +function requestSkipAnimationFrame(session, callback) { + session.requestAnimationFrame(() => { + session.requestAnimationFrame(callback); + }); +} + +// A test function which runs through the common steps of requesting a session. +// Calls the passed in test function with the session, the controller for the +// device, and the test object. +function xr_session_promise_test( + name, func, fakeDeviceInit, sessionMode, sessionInit, properties, + glcontextPropertiesParam, gllayerPropertiesParam) { + const glcontextProperties = (glcontextPropertiesParam) ? glcontextPropertiesParam : {}; + const gllayerProperties = (gllayerPropertiesParam) ? gllayerPropertiesParam : {}; + + function runTest(t, glContext) { + let testSession; + let testDeviceController; + let sessionObjects = {gl: glContext}; + + // Ensure that any pending sessions are ended when done. This needs to + // use a cleanup function to ensure proper sequencing. If this were + // done in a .then() for the success case, a test that expected + // failure would already be marked done at the time that runs, and the + // shutdown would interfere with the next test which may have started. + t.add_cleanup(async () => { + // If a session was created, end it. + if (testSession) { + await testSession.end().catch(() => {}); + } + }); + + return navigator.xr.test.simulateDeviceConnection(fakeDeviceInit) + .then((controller) => { + testDeviceController = controller; + return sessionObjects.gl.makeXRCompatible(); + }) + .then(() => new Promise((resolve, reject) => { + // Perform the session request in a user gesture. + xr_debug(name, 'simulateUserActivation'); + navigator.xr.test.simulateUserActivation(() => { + xr_debug(name, 'document.hasFocus()=' + document.hasFocus()); + navigator.xr.requestSession(sessionMode, sessionInit || {}) + .then((session) => { + xr_debug(name, 'session start'); + testSession = session; + session.mode = sessionMode; + session.sessionInit = sessionInit; + let glLayer = new XRWebGLLayer(session, sessionObjects.gl, gllayerProperties); + glLayer.context = sessionObjects.gl; + // Session must have a baseLayer or frame requests + // will be ignored. + session.updateRenderState({ + baseLayer: glLayer + }); + sessionObjects.glLayer = glLayer; + xr_debug(name, 'session.visibilityState=' + session.visibilityState); + try { + resolve(func(session, testDeviceController, t, sessionObjects)); + } catch(err) { + reject("Test function failed with: " + err); + } + }) + .catch((err) => { + xr_debug(name, 'error: ' + err); + reject( + 'Session with params ' + + JSON.stringify(sessionMode) + + ' was rejected on device ' + + JSON.stringify(fakeDeviceInit) + + ' with error: ' + err); + }); + }); + })); + } + + xr_promise_test( + name + ' - webgl', + runTest, + properties, + 'webgl', + {alpha: false, antialias: false, ...glcontextProperties} + ); + xr_promise_test( + name + ' - webgl2', + runTest, + properties, + 'webgl2', + {alpha: false, antialias: false, ...glcontextProperties}); +} + + +// This function wraps the provided function in a +// simulateUserActivation() call, and resolves the promise with the +// result of func(), or an error if one is thrown +function promise_simulate_user_activation(func) { + return new Promise((resolve, reject) => { + navigator.xr.test.simulateUserActivation(() => { + try { let a = func(); resolve(a); } catch(e) { reject(e); } + }); + }); +} + +// This functions calls a callback with each API object as specified +// by https://immersive-web.github.io/webxr/spec/latest/, allowing +// checks to be made on all ojects. +// Arguements: +// callback: A callback function with two arguements, the first +// being the API object, the second being the name of +// that API object. +function forEachWebxrObject(callback) { + callback(window.navigator.xr, 'navigator.xr'); + callback(window.XRSession, 'XRSession'); + callback(window.XRSessionCreationOptions, 'XRSessionCreationOptions'); + callback(window.XRFrameRequestCallback, 'XRFrameRequestCallback'); + callback(window.XRPresentationContext, 'XRPresentationContext'); + callback(window.XRFrame, 'XRFrame'); + callback(window.XRLayer, 'XRLayer'); + callback(window.XRView, 'XRView'); + callback(window.XRViewport, 'XRViewport'); + callback(window.XRViewerPose, 'XRViewerPose'); + callback(window.XRWebGLLayer, 'XRWebGLLayer'); + callback(window.XRWebGLLayerInit, 'XRWebGLLayerInit'); + callback(window.XRCoordinateSystem, 'XRCoordinateSystem'); + callback(window.XRFrameOfReference, 'XRFrameOfReference'); + callback(window.XRStageBounds, 'XRStageBounds'); + callback(window.XRSessionEvent, 'XRSessionEvent'); + callback(window.XRCoordinateSystemEvent, 'XRCoordinateSystemEvent'); +} + +// Code for loading test API in Chromium. +async function loadChromiumResources() { + await loadScript('/resources/chromium/webxr-test-math-helper.js'); + await import('/resources/chromium/webxr-test.js'); + await loadScript('/resources/testdriver.js'); + await loadScript('/resources/testdriver-vendor.js'); + + // This infrastructure is also used by Chromium-specific internal tests that + // may need additional resources (e.g. internal API extensions), this allows + // those tests to rely on this infrastructure while ensuring that no tests + // make it into public WPTs that rely on APIs outside of the webxr test API. + if (typeof(additionalChromiumResources) !== 'undefined') { + for (const path of additionalChromiumResources) { + await loadScript(path); + } + } + + xr_debug = navigator.xr.test.Debug; +} + +function setupWebKitWebXRTestAPI() { + // WebKit setup. The internals object is used by the WebKit test runner + // to provide JS access to internal APIs. In this case it's used to + // ensure that XRTest is only exposed to wpt tests. + navigator.xr.test = internals.xrTest; + return Promise.resolve(); +} diff --git a/testing/web-platform/tests/webxr/webGLCanvasContext_create_xrcompatible.https.html b/testing/web-platform/tests/webxr/webGLCanvasContext_create_xrcompatible.https.html new file mode 100644 index 0000000000..3cdbce99cc --- /dev/null +++ b/testing/web-platform/tests/webxr/webGLCanvasContext_create_xrcompatible.https.html @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_contextlost.https.html b/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_contextlost.https.html new file mode 100644 index 0000000000..354c614792 --- /dev/null +++ b/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_contextlost.https.html @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_reentrant.https.html b/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_reentrant.https.html new file mode 100644 index 0000000000..f54a878d45 --- /dev/null +++ b/testing/web-platform/tests/webxr/webGLCanvasContext_makecompatible_reentrant.https.html @@ -0,0 +1,48 @@ + + + + + + diff --git a/testing/web-platform/tests/webxr/webxr-supported-by-feature-policy.html b/testing/web-platform/tests/webxr/webxr-supported-by-feature-policy.html new file mode 100644 index 0000000000..2843849a34 --- /dev/null +++ b/testing/web-platform/tests/webxr/webxr-supported-by-feature-policy.html @@ -0,0 +1,10 @@ + +Test that xr is advertised in the feature list + + + + diff --git a/testing/web-platform/tests/webxr/webxr_availability.http.sub.html b/testing/web-platform/tests/webxr/webxr_availability.http.sub.html new file mode 100644 index 0000000000..515b2ad1a8 --- /dev/null +++ b/testing/web-platform/tests/webxr/webxr_availability.http.sub.html @@ -0,0 +1,39 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/webxr_feature_policy.https.html b/testing/web-platform/tests/webxr/webxr_feature_policy.https.html new file mode 100644 index 0000000000..b493ec73cc --- /dev/null +++ b/testing/web-platform/tests/webxr/webxr_feature_policy.https.html @@ -0,0 +1,97 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/webxr_feature_policy.https.html.headers b/testing/web-platform/tests/webxr/webxr_feature_policy.https.html.headers new file mode 100644 index 0000000000..2c75896233 --- /dev/null +++ b/testing/web-platform/tests/webxr/webxr_feature_policy.https.html.headers @@ -0,0 +1 @@ +Feature-Policy: xr-spatial-tracking 'none' diff --git a/testing/web-platform/tests/webxr/xrBoundedReferenceSpace_updates.https.html b/testing/web-platform/tests/webxr/xrBoundedReferenceSpace_updates.https.html new file mode 100644 index 0000000000..c5f9b7f325 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrBoundedReferenceSpace_updates.https.html @@ -0,0 +1,58 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_disconnect_ends.https.html b/testing/web-platform/tests/webxr/xrDevice_disconnect_ends.https.html new file mode 100644 index 0000000000..644a4d68e4 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_disconnect_ends.https.html @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive.https.html b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive.https.html new file mode 100644 index 0000000000..2f1129fe16 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive.https.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html new file mode 100644 index 0000000000..41ae338787 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_inline.https.html b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_inline.https.html new file mode 100644 index 0000000000..bf8d14a8f5 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_isSessionSupported_inline.https.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive.https.html new file mode 100644 index 0000000000..6ff8821670 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive.https.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html new file mode 100644 index 0000000000..b124a21230 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html new file mode 100644 index 0000000000..9e3d2f0cd9 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_no_mode.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_no_mode.https.html new file mode 100644 index 0000000000..9c1ebb7efd --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_no_mode.https.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html new file mode 100644 index 0000000000..5995059255 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_optionalFeatures.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_optionalFeatures.https.html new file mode 100644 index 0000000000..f7737624a6 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_optionalFeatures.https.html @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html b/testing/web-platform/tests/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html new file mode 100644 index 0000000000..6da40af700 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrFrame_getPose.https.html b/testing/web-platform/tests/webxr/xrFrame_getPose.https.html new file mode 100644 index 0000000000..9cd7922f64 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrFrame_getPose.https.html @@ -0,0 +1,101 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose.https.html b/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose.https.html new file mode 100644 index 0000000000..05cbf78523 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose.https.html @@ -0,0 +1,62 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose_identities.https.html b/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose_identities.https.html new file mode 100644 index 0000000000..ba2269147e --- /dev/null +++ b/testing/web-platform/tests/webxr/xrFrame_getViewerPose_getPose_identities.https.html @@ -0,0 +1,113 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrFrame_lifetime.https.html b/testing/web-platform/tests/webxr/xrFrame_lifetime.https.html new file mode 100644 index 0000000000..e457ef020f --- /dev/null +++ b/testing/web-platform/tests/webxr/xrFrame_lifetime.https.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrFrame_session_sameObject.https.html b/testing/web-platform/tests/webxr/xrFrame_session_sameObject.https.html new file mode 100644 index 0000000000..d1d4beb164 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrFrame_session_sameObject.https.html @@ -0,0 +1,25 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrInputSource_add_remove.https.html b/testing/web-platform/tests/webxr/xrInputSource_add_remove.https.html new file mode 100644 index 0000000000..0025331198 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrInputSource_add_remove.https.html @@ -0,0 +1,68 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrInputSource_emulatedPosition.https.html b/testing/web-platform/tests/webxr/xrInputSource_emulatedPosition.https.html new file mode 100644 index 0000000000..8a4aec48a8 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrInputSource_emulatedPosition.https.html @@ -0,0 +1,62 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrInputSource_getPose_targetRay_grip.https.html b/testing/web-platform/tests/webxr/xrInputSource_getPose_targetRay_grip.https.html new file mode 100644 index 0000000000..bac9e90494 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrInputSource_getPose_targetRay_grip.https.html @@ -0,0 +1,50 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrInputSource_profiles.https.html b/testing/web-platform/tests/webxr/xrInputSource_profiles.https.html new file mode 100644 index 0000000000..de70c9058f --- /dev/null +++ b/testing/web-platform/tests/webxr/xrInputSource_profiles.https.html @@ -0,0 +1,38 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrInputSource_sameObject.https.html b/testing/web-platform/tests/webxr/xrInputSource_sameObject.https.html new file mode 100644 index 0000000000..999b4d82b6 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrInputSource_sameObject.https.html @@ -0,0 +1,62 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrPose_transform_sameObject.https.html b/testing/web-platform/tests/webxr/xrPose_transform_sameObject.https.html new file mode 100644 index 0000000000..9ea07fcd3b --- /dev/null +++ b/testing/web-platform/tests/webxr/xrPose_transform_sameObject.https.html @@ -0,0 +1,42 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset.https.html b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset.https.html new file mode 100644 index 0000000000..d93f696a2d --- /dev/null +++ b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset.https.html @@ -0,0 +1,135 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrReferenceSpace_originOffsetBounded.https.html b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffsetBounded.https.html new file mode 100644 index 0000000000..fd961735ec --- /dev/null +++ b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffsetBounded.https.html @@ -0,0 +1,244 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset_viewer.https.html b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset_viewer.https.html new file mode 100644 index 0000000000..8a9fb344a3 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrReferenceSpace_originOffset_viewer.https.html @@ -0,0 +1,54 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrReferenceSpace_relationships.https.html b/testing/web-platform/tests/webxr/xrReferenceSpace_relationships.https.html new file mode 100644 index 0000000000..5b680fb861 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrReferenceSpace_relationships.https.html @@ -0,0 +1,58 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrRigidTransform_constructor.https.html b/testing/web-platform/tests/webxr/xrRigidTransform_constructor.https.html new file mode 100644 index 0000000000..01e069c80b --- /dev/null +++ b/testing/web-platform/tests/webxr/xrRigidTransform_constructor.https.html @@ -0,0 +1,148 @@ + + + + + + diff --git a/testing/web-platform/tests/webxr/xrRigidTransform_inverse.https.html b/testing/web-platform/tests/webxr/xrRigidTransform_inverse.https.html new file mode 100644 index 0000000000..d4fdc15396 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrRigidTransform_inverse.https.html @@ -0,0 +1,108 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrRigidTransform_matrix.https.html b/testing/web-platform/tests/webxr/xrRigidTransform_matrix.https.html new file mode 100644 index 0000000000..df804193ff --- /dev/null +++ b/testing/web-platform/tests/webxr/xrRigidTransform_matrix.https.html @@ -0,0 +1,45 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrRigidTransform_sameObject.https.html b/testing/web-platform/tests/webxr/xrRigidTransform_sameObject.https.html new file mode 100644 index 0000000000..8ff4f5c258 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrRigidTransform_sameObject.https.html @@ -0,0 +1,40 @@ + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame.https.html b/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame.https.html new file mode 100644 index 0000000000..2b3403fe46 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame.https.html @@ -0,0 +1,55 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html b/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html new file mode 100644 index 0000000000..f036e3080f --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html b/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html new file mode 100644 index 0000000000..ba9045597c --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html @@ -0,0 +1,87 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_end.https.html b/testing/web-platform/tests/webxr/xrSession_end.https.html new file mode 100644 index 0000000000..dccc550be5 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_end.https.html @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html b/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html new file mode 100644 index 0000000000..2e06523224 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html @@ -0,0 +1,60 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_input_events_end.https.html b/testing/web-platform/tests/webxr/xrSession_input_events_end.https.html new file mode 100644 index 0000000000..b7f64617ee --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_input_events_end.https.html @@ -0,0 +1,79 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_prevent_multiple_exclusive.https.html b/testing/web-platform/tests/webxr/xrSession_prevent_multiple_exclusive.https.html new file mode 100644 index 0000000000..602bbc4cb9 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_prevent_multiple_exclusive.https.html @@ -0,0 +1,43 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html new file mode 100644 index 0000000000..ee29b8794a --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html @@ -0,0 +1,32 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html new file mode 100644 index 0000000000..812c79c1d5 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html new file mode 100644 index 0000000000..68ad344320 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html @@ -0,0 +1,84 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_timestamp.https.html b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_timestamp.https.html new file mode 100644 index 0000000000..ee6bb49432 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestAnimationFrame_timestamp.https.html @@ -0,0 +1,93 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace.https.html b/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace.https.html new file mode 100644 index 0000000000..b8765fd060 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace.https.html @@ -0,0 +1,70 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace_features.https.html b/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace_features.https.html new file mode 100644 index 0000000000..a20223fca3 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestReferenceSpace_features.https.html @@ -0,0 +1,82 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_requestSessionDuringEnd.https.html b/testing/web-platform/tests/webxr/xrSession_requestSessionDuringEnd.https.html new file mode 100644 index 0000000000..38133b616a --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_requestSessionDuringEnd.https.html @@ -0,0 +1,68 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_sameObject.https.html b/testing/web-platform/tests/webxr/xrSession_sameObject.https.html new file mode 100644 index 0000000000..1795ee7a72 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_sameObject.https.html @@ -0,0 +1,66 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_viewer_availability.https.html b/testing/web-platform/tests/webxr/xrSession_viewer_availability.https.html new file mode 100644 index 0000000000..b630be14ab --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_viewer_availability.https.html @@ -0,0 +1,73 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_viewer_referenceSpace.https.html b/testing/web-platform/tests/webxr/xrSession_viewer_referenceSpace.https.html new file mode 100644 index 0000000000..1768c96849 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_viewer_referenceSpace.https.html @@ -0,0 +1,73 @@ + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrSession_visibilityState.https.html b/testing/web-platform/tests/webxr/xrSession_visibilityState.https.html new file mode 100644 index 0000000000..12655f4be0 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_visibilityState.https.html @@ -0,0 +1,82 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html b/testing/web-platform/tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html new file mode 100644 index 0000000000..f1e907d6bb --- /dev/null +++ b/testing/web-platform/tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html @@ -0,0 +1,65 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrView_eyes.https.html b/testing/web-platform/tests/webxr/xrView_eyes.https.html new file mode 100644 index 0000000000..ac017cd800 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrView_eyes.https.html @@ -0,0 +1,45 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrView_match.https.html b/testing/web-platform/tests/webxr/xrView_match.https.html new file mode 100644 index 0000000000..2ef430734d --- /dev/null +++ b/testing/web-platform/tests/webxr/xrView_match.https.html @@ -0,0 +1,87 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrView_oneframeupdate.https.html b/testing/web-platform/tests/webxr/xrView_oneframeupdate.https.html new file mode 100644 index 0000000000..6c50f6f0c9 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrView_oneframeupdate.https.html @@ -0,0 +1,86 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrView_sameObject.https.html b/testing/web-platform/tests/webxr/xrView_sameObject.https.html new file mode 100644 index 0000000000..2defa72206 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrView_sameObject.https.html @@ -0,0 +1,37 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrViewerPose_secondaryViews.https.html b/testing/web-platform/tests/webxr/xrViewerPose_secondaryViews.https.html new file mode 100644 index 0000000000..446fedf14f --- /dev/null +++ b/testing/web-platform/tests/webxr/xrViewerPose_secondaryViews.https.html @@ -0,0 +1,94 @@ + + + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrViewerPose_views_sameObject.https.html b/testing/web-platform/tests/webxr/xrViewerPose_views_sameObject.https.html new file mode 100644 index 0000000000..af64111d82 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrViewerPose_views_sameObject.https.html @@ -0,0 +1,33 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrViewport_valid.https.html b/testing/web-platform/tests/webxr/xrViewport_valid.https.html new file mode 100644 index 0000000000..c64c56cfdd --- /dev/null +++ b/testing/web-platform/tests/webxr/xrViewport_valid.https.html @@ -0,0 +1,76 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_constructor.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_constructor.https.html new file mode 100644 index 0000000000..5796e1e0ef --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_constructor.https.html @@ -0,0 +1,82 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_draw.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_draw.https.html new file mode 100644 index 0000000000..eb797cf93a --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_draw.https.html @@ -0,0 +1,92 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_sameObject.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_sameObject.https.html new file mode 100644 index 0000000000..75efc626d6 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_sameObject.https.html @@ -0,0 +1,25 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_scale.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_scale.https.html new file mode 100644 index 0000000000..065fc3df4e --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_framebuffer_scale.https.html @@ -0,0 +1,58 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html new file mode 100644 index 0000000000..f0d63de501 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html @@ -0,0 +1,124 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html new file mode 100644 index 0000000000..17f991f180 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html @@ -0,0 +1,223 @@ + + + + + + + diff --git a/testing/web-platform/tests/webxr/xrWebGLLayer_viewports.https.html b/testing/web-platform/tests/webxr/xrWebGLLayer_viewports.https.html new file mode 100644 index 0000000000..8654e9e587 --- /dev/null +++ b/testing/web-platform/tests/webxr/xrWebGLLayer_viewports.https.html @@ -0,0 +1,69 @@ + + + + + + + + diff --git a/testing/web-platform/tests/webxr/xr_viewport_scale.https.html b/testing/web-platform/tests/webxr/xr_viewport_scale.https.html new file mode 100644 index 0000000000..a3e3a4e5bd --- /dev/null +++ b/testing/web-platform/tests/webxr/xr_viewport_scale.https.html @@ -0,0 +1,231 @@ + + + + + + + + -- cgit v1.2.3