<!DOCTYPE html>
<body>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <script src="resources/webxr_util.js"></script>
  <canvas></canvas>

  <script>
    xr_promise_test("Requested session has device set",
     (t) => {
      return XRTest.simulateDeviceConnection({ supportsImmersive:true })
        .then( (controller) => { return navigator.xr.requestDevice() })
        .then( (device) => new Promise((resolve) => {
          XRTest.simulateUserActivation( () => {
            resolve(device.requestSession({ immersive: true }).then( (session) => {
              assert_true(session.immersive);
              assert_equals(session.device, device);
            }));
          });
        }));
    });
  </script>
</body>

