blob: 1b79a520c6df17cd66174591b405f9252a756cb1 [file] [log] [blame]
<!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="resources/vr-test-utils.js "></script>
<canvas id="webgl-canvas"></canvas>
<script src="resources/presentation-setup.js"></script>
<script>
let fakeDisplays = fakeVRDisplays();
vr_test( (t, deviceController) => {
let watcherDone = new Event("watcherdone");
let eventWatcher = new EventWatcher(t, window, ["vrdisplayactivate",
"watcherdone"]);
eventWatcher.wait_for(["vrdisplayactivate",
"watcherdone"])
.then( () => {
t.done();
});
return navigator.getVRDisplays().then( (displays) => {
var display = displays[0];
function onDisplayActivate() {
display.requestPresent([{source: webglCanvas}]).then( () => {
window.dispatchEvent(watcherDone);
}, (err) => {
t.step( () => {
assert_unreached(err);
}, "requestPresent rejected");
t.done();
});
}
window.addEventListener("vrdisplayactivate", onDisplayActivate, false);
// Timeout here is required because addEventListener sends a call to mojo to
// register the listener on the backend, which doesn't go through until the
// javascript pauses.
setTimeout(() => {
deviceController.forceActivate(2 /*Display mounted, although any int 0-3 is valid*/);
}, 100);
}, (err) => {
t.step( () => {
assert_unreached(err);
}, "getVRDisplays rejected");
t.done();
});
}, [fakeDisplays["Pixel"]],
"Test vrdisplayactivate fires when display activates and resulting event can be used to present");
</script>