<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/device/vr/public/mojom/vr_service.mojom.js"></script>
<script src="../external/wpt/resources/chromium/webxr-test.js"></script>
<script src="../external/wpt/webxr/resources/webxr_test_constants.js"></script>
<script src="../xr/resources/xr-internal-device-mocking.js"></script>
<script src="../xr/resources/xr-test-utils.js"></script>
<canvas id="webgl-canvas"></canvas>

<script>
let testName = "inlineVerticalFieldOfView is set appropriately on immersively sessions";

let fakeDeviceInitParams = { supportsImmersive: true };

let requestSessionModes =  ['immersive-vr'];

let testFunction = function(session, t, fakeDeviceController) {

  // Session must have a baseLayer or frame requests will be ignored.
  session.updateRenderState({
    baseLayer: new XRWebGLLayer(session, gl, {
        compositionDisabled: session.mode == 'inline' })
  });

  return new Promise((resolve, reject) => {
      // inlineVerticalFieldOfView should be null for immersive sessions;
      t.step(() => {
        assert_equals(session.renderState.inlineVerticalFieldOfView, null);
      });

      // Trying to set it should throw an exception
      try {
        session.updateRenderState({
          inlineVerticalFieldOfView: 1.0
        });

        t.step(() => {
          assert_unreached("Should not be able to set inlineVerticalFieldOfView on immersive sessions");
        });
      } catch(err) {
        t.step(() => {
          assert_equals(err.name, "InvalidStateError");
        });
      }

      resolve();
  });
};

xr_session_promise_test(
  testFunction, fakeDeviceInitParams, requestSessionModes, testName);

</script>
