Update interfaces/webxr.idl (#14013)

Source: https://github.com/tidoust/reffy-reports/blob/a232594/whatwg/idl/webxr.idl
Build: https://travis-ci.org/tidoust/reffy-reports/builds/461143420
diff --git a/interfaces/webxr.idl b/interfaces/webxr.idl
index ffa9ed4..5561369 100644
--- a/interfaces/webxr.idl
+++ b/interfaces/webxr.idl
@@ -5,7 +5,8 @@
 
 [SecureContext, Exposed=Window] interface XR : EventTarget {
   // Methods
-  Promise<XRDevice?> requestDevice();
+  Promise<void> supportsSessionMode(XRSessionMode mode);
+  Promise<XRSession> requestSession(optional XRSessionCreationOptions parameters);
 
   // Events
   attribute EventHandler ondevicechange;
@@ -16,14 +17,14 @@
   [SameObject] readonly attribute XR xr;
 };
 
-[SecureContext, Exposed=Window] interface XRDevice {
-  // Methods
-  Promise<void> supportsSession(optional XRSessionCreationOptions options);
-  Promise<XRSession> requestSession(optional XRSessionCreationOptions options);
+enum XRSessionMode {
+  "inline",
+  "immersive-vr",
+  "immersive-ar"
 };
 
 dictionary XRSessionCreationOptions {
-  boolean immersive = false;
+  XRSessionMode mode = "inline";
   XRPresentationContext outputContext;
 };
 
@@ -35,8 +36,7 @@
 
 [SecureContext, Exposed=Window] interface XRSession : EventTarget {
   // Attributes
-  readonly attribute XRDevice device;
-  readonly attribute boolean immersive;
+  readonly attribute XRSessionMode mode;
   readonly attribute XRPresentationContext outputContext;
   readonly attribute XREnvironmentBlendMode environmentBlendMode;
 
@@ -60,6 +60,7 @@
   attribute EventHandler onresetpose;
   attribute EventHandler onend;
   attribute EventHandler onselect;
+  attribute EventHandler oninputsourceschange;
   attribute EventHandler onselectstart;
   attribute EventHandler onselectend;
 };
@@ -68,10 +69,9 @@
 
 [SecureContext, Exposed=Window] interface XRFrame {
   readonly attribute XRSession session;
-  readonly attribute FrozenArray<XRView> views;
 
-  XRDevicePose? getDevicePose(XRCoordinateSystem coordinateSystem);
-  XRInputPose? getInputPose(XRInputSource inputSource, XRCoordinateSystem coordinateSystem);
+  XRViewerPose? getViewerPose(XRFrameOfReference frameOfRef);
+  XRInputPose? getInputPose(XRInputSource inputSource, XRFrameOfReference frameOfRef);
 };
 
 [SecureContext, Exposed=Window] interface XRCoordinateSystem : EventTarget {
@@ -108,6 +108,7 @@
 [SecureContext, Exposed=Window] interface XRView {
   readonly attribute XREye eye;
   readonly attribute Float32Array projectionMatrix;
+  readonly attribute Float32Array viewMatrix;
 };
 
 [SecureContext, Exposed=Window] interface XRViewport {
@@ -117,10 +118,9 @@
   readonly attribute long height;
 };
 
-[SecureContext, Exposed=Window] interface XRDevicePose {
-  readonly attribute Float32Array poseModelMatrix;
-
-  Float32Array getViewMatrix(XRView view);
+[SecureContext, Exposed=Window] interface XRViewerPose {
+  readonly attribute Float32Array poseMatrix;
+  readonly attribute FrozenArray<XRView> views;
 };
 
 enum XRHandedness {
@@ -165,7 +165,6 @@
   boolean depth = true;
   boolean stencil = false;
   boolean alpha = true;
-  boolean multiview = false;
   double framebufferScaleFactor = 1.0;
 };
 
@@ -180,7 +179,6 @@
   readonly attribute boolean depth;
   readonly attribute boolean stencil;
   readonly attribute boolean alpha;
-  readonly attribute boolean multiview;
 
   readonly attribute WebGLFramebuffer framebuffer;
   readonly attribute unsigned long framebufferWidth;
@@ -195,11 +193,11 @@
 };
 
 partial dictionary WebGLContextAttributes {
-    XRDevice compatibleXRDevice = null;
+    boolean xrCompatible = null;
 };
 
 partial interface mixin WebGLRenderingContextBase {
-    Promise<void> setCompatibleXRDevice(XRDevice device);
+    Promise<void> makeXRCompatible();
 };
 
 [SecureContext, Exposed=Window] interface XRPresentationContext {