Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/virtual/vr/html/idlharness.html |
| diff --git a/third_party/WebKit/LayoutTests/virtual/vr/html/idlharness.html b/third_party/WebKit/LayoutTests/virtual/vr/html/idlharness.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..11484f69a7abf417a1b88c0a1889c3c9bba5ceb7 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/virtual/vr/html/idlharness.html |
| @@ -0,0 +1,274 @@ |
| +<!doctype html> |
| +<html> |
| + <head> |
| + <meta charset=utf-8> |
| + <title>WebVR IDL test</title> |
| + <link rel="help" href="https://w3c.github.io/webvr/"> |
| + |
| + <script src=../../../resources/testharness.js></script> |
| + <script src=../../../resources/testharnessreport.js></script> |
| + <script src=../../../resources/WebIDLParser.js></script> |
| + <script src=../../../resources/idlharness.js></script> |
| +<script id="webvr_idl" type=text/plain> |
| +// Archived version of the WebVR spec from |
| +// https://w3c.github.io/webvr/archive/prerelease/1.1/index.html |
| + |
| +interface VRDisplay : EventTarget { |
| + readonly attribute boolean isConnected; |
| + 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); |
| + |
| + /** |
| + * Return a VRPose containing the future predicted pose of the VRDisplay |
| + * when the current frame will be presented. The value returned will not |
| + * change until JavaScript has returned control to the browser. |
| + * |
| + * The VRPose will contain the position, orientation, velocity, |
| + * and acceleration of each of these properties. |
| + */ |
| + [NewObject] VRPose getPose(); |
| + |
| + /** |
| + * Reset the pose for this display, treating its current position and |
| + * orientation as the "origin/zero" values. VRPose.position, |
| + * VRPose.orientation, and VRStageParameters.sittingToStandingTransform may be |
| + * updated when calling resetPose(). This should be called in only |
| + * sitting-space experiences. |
| + */ |
| + void resetPose(); |
| + |
| + /** |
| + * 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. |
| + */ |
| + void 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 VRLayers 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<void> requestPresent(sequence<VRLayer> layers); |
| + |
| + /** |
| + * Stops presenting to the VRDisplay. |
| + */ |
| + Promise<void> exitPresent(); |
| + |
| + /** |
| + * Get the layers currently being presented. |
| + */ |
| + sequence<VRLayer> getLayers(); |
| + |
| + /** |
| + * The VRLayer 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. |
| + */ |
| + void submitFrame(); |
| +}; |
| + |
| +typedef (HTMLCanvasElement or |
| + OffscreenCanvas) VRSource; |
| + |
| +dictionary VRLayer { |
| + VRSource? source = null; |
| + |
| + sequence<float> leftBounds = []; |
| + sequence<float> rightBounds = []; |
| +}; |
| + |
| +interface VRDisplayCapabilities { |
| + readonly attribute boolean hasPosition; |
| + readonly attribute boolean hasOrientation; |
| + readonly attribute boolean hasExternalDisplay; |
| + readonly attribute boolean canPresent; |
| + readonly attribute unsigned long maxLayers; |
| +}; |
| + |
| +enum VREye { |
| + "left", |
| + "right" |
| +}; |
| + |
| +interface VRFieldOfView { |
| + readonly attribute double upDegrees; |
| + readonly attribute double rightDegrees; |
| + readonly attribute double downDegrees; |
| + readonly attribute double leftDegrees; |
| +}; |
| + |
| +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; |
| +}; |
| + |
| +[Constructor] |
| +interface VRFrameData { |
| + readonly attribute DOMHighResTimeStamp timestamp; |
| + |
| + readonly attribute Float32Array leftProjectionMatrix; |
| + readonly attribute Float32Array leftViewMatrix; |
| + |
| + readonly attribute Float32Array rightProjectionMatrix; |
| + readonly attribute Float32Array rightViewMatrix; |
| + |
| + readonly attribute VRPose pose; |
| +}; |
| + |
| +interface VREyeParameters { |
| + readonly attribute Float32Array offset; |
| + |
| + [SameObject] readonly attribute VRFieldOfView fieldOfView; |
| + |
| + readonly attribute unsigned long renderWidth; |
| + readonly attribute unsigned long renderHeight; |
| +}; |
| + |
| +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" |
| +}; |
| + |
| +[Constructor(DOMString type, VRDisplayEventInit eventInitDict)] |
| +interface VRDisplayEvent : Event { |
| + 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 HTMLIFrameElement { |
| + attribute boolean allowvr; |
| +}; |
| + |
| +partial interface Gamepad { |
| + readonly attribute unsigned long displayId; |
| +}; |
| +</script> |
| + </head> |
| + <body> |
| + <h1 class="instructions">Description</h1> |
| + <p class="instructions"> |
| + This test verifies that implementations of the WebVR API match its WebIDL definition. |
| + </p> |
| + |
| + <div id='log'></div> |
| + |
| + <script> |
| + setup( () => { |
| + var idl_array = new IdlArray(); |
| + idl_array.add_untested_idls("[PrimaryGlobal] interface Window {};"); |
| + idl_array.add_untested_idls("interface Navigator {};"); |
| + idl_array.add_untested_idls("interface ArrayBuffer {};"); |
| + idl_array.add_untested_idls("interface HTMLMediaElement {};"); |
|
Lei Lei
2016/12/20 18:22:17
Why do we need to test HTMLMediaElement?
Should w
bsheedy
2016/12/20 18:31:06
HTMLMediaElement and ArrayBuffer were leftover fro
Lei Lei
2016/12/20 18:34:07
Please remove those two lines if not needed.
|
| + idl_array.add_untested_idls("interface Event {};"); |
| + idl_array.add_untested_idls("interface EventTarget {};"); |
| + idl_array.add_untested_idls("interface HTMLIFrameElement {};"); |
| + idl_array.add_untested_idls("interface Gamepad {};"); |
| + |
| + idl_array.add_idls(document.getElementById("webvr_idl").textContent); |
| + |
| + idl_array.test(); |
| + done(); |
| + }, {explicit_done: true}); |
| + </script> |
| + </body> |
| +</html> |