summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/interfaces/webvr.tentative.idl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/interfaces/webvr.tentative.idl
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/interfaces/webvr.tentative.idl')
-rw-r--r--testing/web-platform/tests/interfaces/webvr.tentative.idl204
1 files changed, 204 insertions, 0 deletions
diff --git a/testing/web-platform/tests/interfaces/webvr.tentative.idl b/testing/web-platform/tests/interfaces/webvr.tentative.idl
new file mode 100644
index 0000000000..2fc5f4e52b
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webvr.tentative.idl
@@ -0,0 +1,204 @@
+// Archived version of the WebVR spec from
+// https://w3c.github.io/webvr/archive/prerelease/1.1/index.html
+
+[Exposed=Window]
+interface VRDisplay : EventTarget {
+ readonly attribute boolean isPresenting;
+
+ /**
+ * Dictionary of capabilities describing the VRDisplay.
+ */
+ [SameObject] readonly attribute VRDisplayCapabilities capabilities;
+
+ /**
+ * If this VRDisplay supports room-scale experiences, the optional
+ * stage attribute contains details on the room-scale parameters.
+ * The stageParameters attribute can not change between null
+ * and non-null once the VRDisplay is enumerated; however,
+ * the values within VRStageParameters may change after
+ * any call to VRDisplay.submitFrame as the user may re-configure
+ * their environment at any time.
+ */
+ readonly attribute VRStageParameters? stageParameters;
+
+ /**
+ * Return the current VREyeParameters for the given eye.
+ */
+ VREyeParameters getEyeParameters(VREye whichEye);
+
+ /**
+ * An identifier for this distinct VRDisplay. Used as an
+ * association point in the Gamepad API.
+ */
+ readonly attribute unsigned long displayId;
+
+ /**
+ * A display name, a user-readable name identifying it.
+ */
+ readonly attribute DOMString displayName;
+
+ /**
+ * Populates the passed VRFrameData with the information required to render
+ * the current frame.
+ */
+ boolean getFrameData(VRFrameData frameData);
+
+ /**
+ * z-depth defining the near plane of the eye view frustum
+ * enables mapping of values in the render target depth
+ * attachment to scene coordinates. Initially set to 0.01.
+ */
+ attribute double depthNear;
+
+ /**
+ * z-depth defining the far plane of the eye view frustum
+ * enables mapping of values in the render target depth
+ * attachment to scene coordinates. Initially set to 10000.0.
+ */
+ attribute double depthFar;
+
+ /**
+ * The callback passed to `requestAnimationFrame` will be called
+ * any time a new frame should be rendered. When the VRDisplay is
+ * presenting the callback will be called at the native refresh
+ * rate of the HMD. When not presenting this function acts
+ * identically to how window.requestAnimationFrame acts. Content should
+ * make no assumptions of frame rate or vsync behavior as the HMD runs
+ * asynchronously from other displays and at differing refresh rates.
+ */
+ long requestAnimationFrame(FrameRequestCallback callback);
+
+ /**
+ * Passing the value returned by `requestAnimationFrame` to
+ * `cancelAnimationFrame` will unregister the callback.
+ */
+ undefined cancelAnimationFrame(long handle);
+
+ /**
+ * Begin presenting to the VRDisplay. Must be called in response to a user gesture.
+ * Repeat calls while already presenting will update the layers being displayed.
+ * If the number of values in the leftBounds/rightBounds arrays is not 0 or 4 for any of the passed layers the promise is rejected
+ * If the source of any of the layers is not present (null), the promise is rejected.
+ */
+ Promise<undefined> requestPresent(sequence<VRLayerInit> layers);
+
+ /**
+ * Stops presenting to the VRDisplay.
+ */
+ Promise<undefined> exitPresent();
+
+ /**
+ * Get the layers currently being presented.
+ */
+ sequence<VRLayerInit> getLayers();
+
+ /**
+ * The layer provided to the VRDisplay will be captured and presented
+ * in the HMD. Calling this function has the same effect on the source
+ * canvas as any other operation that uses its source image, and canvases
+ * created without preserveDrawingBuffer set to true will be cleared.
+ */
+ undefined submitFrame();
+};
+
+typedef (HTMLCanvasElement or
+ OffscreenCanvas) VRSource;
+
+dictionary VRLayerInit {
+ VRSource? source = null;
+
+ sequence<float> leftBounds = [];
+ sequence<float> rightBounds = [];
+};
+
+[Exposed=Window]
+interface VRDisplayCapabilities {
+ readonly attribute boolean hasPosition;
+ readonly attribute boolean hasExternalDisplay;
+ readonly attribute boolean canPresent;
+ readonly attribute unsigned long maxLayers;
+};
+
+enum VREye {
+ "left",
+ "right"
+};
+
+[Exposed=Window]
+interface VRPose {
+ readonly attribute Float32Array? position;
+ readonly attribute Float32Array? linearVelocity;
+ readonly attribute Float32Array? linearAcceleration;
+
+ readonly attribute Float32Array? orientation;
+ readonly attribute Float32Array? angularVelocity;
+ readonly attribute Float32Array? angularAcceleration;
+};
+
+[Exposed=Window]
+interface VRFrameData {
+ constructor();
+
+ readonly attribute Float32Array leftProjectionMatrix;
+ readonly attribute Float32Array leftViewMatrix;
+
+ readonly attribute Float32Array rightProjectionMatrix;
+ readonly attribute Float32Array rightViewMatrix;
+
+ readonly attribute VRPose pose;
+};
+
+[Exposed=Window]
+interface VREyeParameters {
+ readonly attribute Float32Array offset;
+
+ readonly attribute unsigned long renderWidth;
+ readonly attribute unsigned long renderHeight;
+};
+
+[Exposed=Window]
+interface VRStageParameters {
+ readonly attribute Float32Array sittingToStandingTransform;
+
+ readonly attribute float sizeX;
+ readonly attribute float sizeZ;
+};
+
+partial interface Navigator {
+ Promise<sequence<VRDisplay>> getVRDisplays();
+ readonly attribute FrozenArray<VRDisplay> activeVRDisplays;
+ readonly attribute boolean vrEnabled;
+};
+
+enum VRDisplayEventReason {
+ "mounted",
+ "navigation",
+ "requested",
+ "unmounted"
+};
+
+[Exposed=Window]
+interface VRDisplayEvent : Event {
+ constructor(DOMString type, VRDisplayEventInit eventInitDict);
+ readonly attribute VRDisplay display;
+ readonly attribute VRDisplayEventReason? reason;
+};
+
+dictionary VRDisplayEventInit : EventInit {
+ required VRDisplay display;
+ VRDisplayEventReason reason;
+};
+
+partial interface Window {
+ attribute EventHandler onvrdisplayconnect;
+ attribute EventHandler onvrdisplaydisconnect;
+ attribute EventHandler onvrdisplayactivate;
+ attribute EventHandler onvrdisplaydeactivate;
+ attribute EventHandler onvrdisplayblur;
+ attribute EventHandler onvrdisplayfocus;
+ attribute EventHandler onvrdisplaypresentchange;
+};
+
+partial interface Gamepad {
+ readonly attribute unsigned long displayId;
+};