<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script type="module">
  import { getOppositeOrientation } from "/screen-orientation/resources/orientation-utils.js";
  promise_test(async t => {
    t.add_cleanup(async () => {
      try {
        await document.exitFullscreen();
      } catch (e) {}
      screen.orientation.unlock();
    });
    await test_driver.bless("request full screen", () => {
      return document.documentElement.requestFullscreen();
    });
    const newOrientation = getOppositeOrientation();
    // This will reject, because the event will call lock() again.
    const pMustReject = screen.orientation.lock(newOrientation);
    // This one resolves, because we are re-locking.
    const pMustResolve = new Promise(r => {
      screen.orientation.onchange = () => {
        r(screen.orientation.lock("any"));
      };
    });
    await promise_rejects(t, "AbortError", pMustReject);
    await pMustResolve;
  }, "Re-locking orientation during event dispatch must reject existing orientationPendingPromise");
</script>
