<!DOCTYPE html>
<body>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <script src="resources/webxr_util.js"></script>
  <script src="resources/webxr_test_constants.js"></script>
  <script>
    let immersiveTestName = "XRSession cancelAnimationFrame does not have unexpected "
      + "behavior when given invalid handles on immersive testSession";
    let nonImmersiveTestName = "XRSession cancelAnimationFrame does not have unexpected "
      + "behavior when given invalid handles on non-immersive testSession";

    let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;

    let testFunction = (testSession) => new Promise((resolve) => {
      let counter = 0;

      function onFrame(time, vrFrame) {
        if(counter <= 10) {
          testSession.requestAnimationFrame(onFrame);
        } else {
          resolve();
        }
        counter++;
      }

      let handle = testSession.requestAnimationFrame(onFrame);
      testSession.cancelAnimationFrame(0);
      testSession.cancelAnimationFrame(-1);
      testSession.cancelAnimationFrame(handle + 1);
      testSession.cancelAnimationFrame(handle - 1);
      testSession.cancelAnimationFrame(0.5);
      testSession.cancelAnimationFrame(null);
    });

    xr_session_promise_test(
      immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
    xr_session_promise_test(
      nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');

  </script>
</body>
