diff options
Diffstat (limited to 'testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html')
-rw-r--r-- | testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html b/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html new file mode 100644 index 0000000000..a8fc70fca6 --- /dev/null +++ b/testing/web-platform/tests/webxr/dom-overlay/nested_fullscreen.https.html @@ -0,0 +1,81 @@ +<!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 src="../resources/webxr_util.js"></script> +<script src="../resources/webxr_test_constants.js"></script> +<script src="../resources/webxr_test_asserts.js"></script> + +<style type="text/css"> + div { + padding: 10px; + min-width: 10px; + min-height: 10px; + } + iframe { + border: 0; + width: 20px; + height: 20px; + } +</style> +<div id="div_overlay"> + <canvas> + </canvas> +</div> +<div id="div_other"> + <p>test text</p> +</div> + +<script> + +const fakeDeviceInitParams = { + supportedModes: ["immersive-ar"], + views: VALID_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: ALL_FEATURES, +}; + +// This test verifies that WebXR DOM Overlay mode works when the document is +// already in fullscreen mode when the session starts. (This should work both +// for a fullscreen-based overlay implementation and for one that treats the +// overlay as an independent output.) +promise_test( + async (setup) => { + setup.add_cleanup(() => document.exitFullscreen()); + + // Fullscreen the <body> element before running the test. Currently, this + // can't be an arbitrary element because the simulateUserActivation call + // adds a button to <body> which is only clickable if it's visible. + await test_driver.bless("fullscreen", + () => document.body.requestFullscreen()); + + const overlayElement = document.getElementById('div_overlay'); + + xr_session_promise_test( + "Check XR session from fullscreen", + (session, fakeDeviceController, t) => { + // The overlay element should have a transparent background. + assert_equals(window.getComputedStyle(overlayElement).backgroundColor, + 'rgba(0, 0, 0, 0)'); + + // Check that the pseudostyle is set. + assert_equals(document.querySelector(':xr-overlay'), overlayElement); + + // Wait for one animation frame before exiting. + return new Promise((resolve) => session.requestAnimationFrame(resolve)); + }, + fakeDeviceInitParams, 'immersive-ar', { + requiredFeatures: ['dom-overlay'], + domOverlay: { root: overlayElement } + } + ); + + // The setup promise_test automatically succeeds if it gets here + // without raising an exception. It'll pass even on systems that + // don't support WebXR or DOM Overlay. + }, + "fullscreen setup" +); + +</script> |