55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
// 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);
|
|
}
|
|
);
|