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