// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // https://immersive-web.github.io/webxr/#xrsession-interface enum XRSessionMode { "inline", "immersive-vr", "immersive-ar", }; enum XREnvironmentBlendMode { "opaque", "additive", "alpha-blend", }; enum XRVisibilityState { "visible", "visible-blurred", "hidden", }; enum XRInteractionMode { "screen-space", "world-space" }; enum XRImageTrackingScore { "untrackable", "trackable", }; enum XRReflectionFormat { "srgba8", "rgba16f", }; [ ActiveScriptWrappable, SecureContext, Exposed=Window, RuntimeEnabled=WebXR ] interface XRSession : EventTarget { readonly attribute XREnvironmentBlendMode environmentBlendMode; readonly attribute XRInteractionMode interactionMode; readonly attribute XRVisibilityState visibilityState; [RuntimeEnabled=WebXRFrameRate] readonly attribute float? frameRate; [RuntimeEnabled=WebXRFrameRate] readonly attribute Float32Array? supportedFrameRates; [SameObject] readonly attribute XRRenderState renderState; [CallWith=ScriptState, MeasureAs=XRSessionGetInputSources, SameObject] readonly attribute XRInputSourceArray inputSources; [SameObject] readonly attribute XRDOMOverlayState domOverlayState; readonly attribute XRReflectionFormat preferredReflectionFormat; [RuntimeEnabled=WebXREnabledFeatures] readonly attribute FrozenArray enabledFeatures; [RuntimeEnabled=WebXRSpecParity] readonly attribute boolean isSystemKeyboardSupported; [RuntimeEnabled=WebXRLayers] readonly attribute unsigned short maxRenderLayers; attribute EventHandler onend; attribute EventHandler onselect; attribute EventHandler oninputsourceschange; attribute EventHandler onselectstart; attribute EventHandler onselectend; attribute EventHandler onvisibilitychange; attribute EventHandler onsqueeze; attribute EventHandler onsqueezestart; attribute EventHandler onsqueezeend; [RuntimeEnabled=WebXRVisibilityMask] attribute EventHandler onvisibilitymaskchange; [RuntimeEnabled=WebXRFrameRate] attribute EventHandler onframeratechange; [RaisesException] void updateRenderState(optional XRRenderStateInit init = {}); [RuntimeEnabled=WebXRFrameRate, RaisesException] Promise updateTargetFrameRate(float rate); [CallWith=ScriptState, RaisesException] Promise requestReferenceSpace(XRReferenceSpaceType type); unsigned long requestAnimationFrame(XRFrameRequestCallback callback); void cancelAnimationFrame(unsigned long handle); [CallWith=ScriptState, Measure, RaisesException] Promise end(); // https://github.com/immersive-web/hit-test/blob/master/hit-testing-explainer.md [CallWith=ScriptState, MeasureAs=XRSessionRequestHitTestSource, RaisesException] Promise requestHitTestSource(XRHitTestOptionsInit options); [CallWith=ScriptState, MeasureAs=XRSessionRequestHitTestSourceForTransientInput, RaisesException] Promise requestHitTestSourceForTransientInput(XRTransientInputHitTestOptionsInit options); [CallWith=ScriptState, MeasureAs=XRSessionRequestLightProbe, RaisesException] Promise requestLightProbe(optional XRLightProbeInit options = {}); [RuntimeEnabled=WebXRImageTracking, CallWith=ScriptState, MeasureAs=XRSessionGetTrackedImageScores, RaisesException] Promise> getTrackedImageScores(); [RaisesException] undefined pauseDepthSensing(); [RaisesException] undefined resumeDepthSensing(); [RuntimeEnabled=WebXRPlaneDetection, CallWith=ScriptState, RaisesException] Promise initiateRoomCapture(); [RaisesException] readonly attribute XRDepthUsage? depthUsage; [RaisesException] readonly attribute XRDepthDataFormat? depthDataFormat; [RaisesException] readonly attribute XRDepthType? depthType; [RaisesException] readonly attribute boolean? depthActive; };