diff options
Diffstat (limited to 'testing/web-platform/tests/screen-orientation/hidden_document.html')
-rw-r--r-- | testing/web-platform/tests/screen-orientation/hidden_document.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/screen-orientation/hidden_document.html b/testing/web-platform/tests/screen-orientation/hidden_document.html new file mode 100644 index 0000000000..4d018a882a --- /dev/null +++ b/testing/web-platform/tests/screen-orientation/hidden_document.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<meta name="timeout" content="long" /> +<title> + Prevent hidden documents from locking orientation +</title> +<link rel="help" href="https://github.com/w3c/screen-orientation/pull/232" /> +<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 src="/page-visibility/resources/window_state_context.js"></script> +<script type="module"> + import { makeCleanup, getOppositeOrientation } from "./resources/orientation-utils.js"; + + promise_test(async (t) => { + const { minimize, restore } = window_state_context(t); + t.add_cleanup(restore); + + await minimize(); + + assert_equals(document.visibilityState, "hidden", "Document must be hidden"); + await promise_rejects_dom(t, "SecurityError", screen.orientation.lock("landscape") ); + }, "hidden documents must reject went trying to call lock or unlock"); + + promise_test(async (t) => { + const { minimize, restore } = window_state_context(t); + t.add_cleanup(restore); + + await minimize(); + + assert_equals(document.visibilityState, "hidden", "Document must be hidden"); + assert_throws_dom("SecurityError", () => screen.orientation.unlock()); + }, "hidden documents must reject went trying to call unlock"); + + promise_test(async (t) => { + const { minimize, restore } = window_state_context(t); + t.add_cleanup(restore); + t.add_cleanup(makeCleanup()); + await screen.orientation.lock(getOppositeOrientation()); + + await minimize(); + + assert_equals(document.visibilityState, "hidden", "Document must be hidden"); + assert_throws_dom("SecurityError", () => screen.orientation.unlock()); + }, "hidden documents must not unlock the screen orientation"); + + promise_test(async (t) => { + const { minimize, restore } = window_state_context(t); + t.add_cleanup(restore); + t.add_cleanup(makeCleanup()); + await screen.orientation.lock(getOppositeOrientation()); + + await minimize(); + + assert_equals(document.visibilityState, "hidden"); + await promise_rejects_dom(t, "SecurityError", screen.orientation.lock(getOppositeOrientation())); + + // Maximize, now everything should work as expected. + await restore(); + + assert_equals(document.visibilityState, "visible"); + await screen.orientation.lock(getOppositeOrientation()); + screen.orientation.unlock(); + }, "Once maximized, a minimized window can lock or unlock the screen orientation again"); +</script> |