| /* |
| * Copyright (C) 2020 Igalia S.L. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| * THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| [ |
| EnabledBySetting=WebXREnabled, |
| Conditional=WEBXR, |
| Exposed=Window, |
| InterfaceName=XRTest, |
| LegacyNoInterfaceObject |
| ] interface WebXRTest { |
| // Simulates connecting a device to the system. |
| // Used to instantiate a fake device for use in tests. |
| [CallWith=ScriptExecutionContext] Promise<WebFakeXRDevice> simulateDeviceConnection(FakeXRDeviceInit init); |
| |
| // Simulates a user activation (aka user gesture) for the current scope. |
| // The activation is only guaranteed to be valid in the provided function and only applies to WebXR |
| // Device API methods. |
| [CallWith=Document] undefined simulateUserActivation(XRSimulateUserActivationFunction f); |
| |
| // Disconnect all fake devices |
| Promise<undefined> disconnectAllDevices(); |
| }; |
| |
| [ |
| EnabledBySetting=WebXREnabled, |
| Conditional=WEBXR, |
| ] dictionary FakeXRDeviceInit { |
| // Deprecated - use `supportedModes` instead. |
| required boolean supportsImmersive; |
| // Sequence of modes that should be supported by this device. |
| sequence<XRSessionMode> supportedModes; |
| required sequence<FakeXRViewInit> views; |
| |
| // https://immersive-web.github.io/webxr/#feature-name |
| // The list of feature names that this device supports. |
| // Any requests for features not in this list should be rejected, with the exception of those |
| // that are guaranteed regardless of device availability (e.g. 'viewer'). |
| // If not specified/empty, the device supports no features. |
| // NOTE: This is meant to emulate hardware support, not whether a feature is |
| // currently available (e.g. bounds not being tracked per below) |
| sequence<any> supportedFeatures; |
| |
| // The bounds coordinates. If empty, no bounded reference space is currently tracked. |
| // If not, must have at least three elements. |
| sequence<FakeXRBoundsPoint> boundsCoordinates; |
| |
| // A transform used to identify the physical position of the user's floor. |
| // If not set, indicates that the device cannot identify the physical floor. |
| FakeXRRigidTransformInit floorOrigin; |
| |
| // native origin of the viewer |
| // If not set, the device is currently assumed to not be tracking, and xrFrame.getViewerPose should |
| // not return a pose. |
| // |
| // This sets the viewer origin *shortly after* initialization; since the viewer origin at initialization |
| // is used to provide a reference origin for all matrices. |
| FakeXRRigidTransformInit viewerOrigin; |
| }; |