// 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); } );