Automatic update from web-platform-tests assert_not_reached() -> assert_unreached() in wpt There is no assert_not_reached() in testharness.js. Replace with assert_unreached(). Change-Id: I06a7858263c04cfa045b090695d33e973817c62a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7687372 Commit-Queue: Rune Lillesveen <futhark@chromium.org> Reviewed-by: Morten Stenshorne <mstensho@chromium.org> Cr-Commit-Position: refs/heads/main@{#1603318} -- wpt-commits: e9b7718c7db0682db8f2d0ee0e30e49b2e391a66 wpt-pr: 58672
83 lines
2.7 KiB
HTML
83 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<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 testName = "Ensures that the XRSession's visibilityState is correctly "
|
|
+ "reported and that the associated visibilitychange event fires.";
|
|
|
|
let watcherDone = new Event("watcherdone");
|
|
let frameFired = new Event("framefired");
|
|
|
|
let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
|
|
|
|
let testFunction = function(session, fakeDeviceController, t) {
|
|
let eventWatcher = new EventWatcher(
|
|
t, session, ["visibilitychange", "framefired", "watcherdone"]);
|
|
let eventPromise = eventWatcher.wait_for(
|
|
["visibilitychange", "visibilitychange", "framefired", "watcherdone"]);
|
|
|
|
function onFrame(timestamp, frame) {
|
|
t.step( () => {
|
|
// The session should not fire any animation frames while the visibility
|
|
// state is hidden.
|
|
assert_not_equals(session.visibilityState, "hidden");
|
|
});
|
|
|
|
// Make sure the frame does fire when the visibility is changed back to "visible"
|
|
session.dispatchEvent(frameFired);
|
|
}
|
|
|
|
function onSessionVisibilityChangeHidden(event) {
|
|
t.step( () => {
|
|
assert_equals(session.visibilityState, "hidden");
|
|
});
|
|
|
|
session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
|
session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
|
|
|
|
session.requestAnimationFrame(onFrame)
|
|
|
|
t.step_timeout(() => {
|
|
fakeDeviceController.simulateVisibilityChange("visible");
|
|
}, 300);
|
|
}
|
|
|
|
function onSessionVisibilityChangeVisible(event) {
|
|
t.step( () => {
|
|
assert_equals(session.visibilityState, "visible");
|
|
});
|
|
|
|
session.removeEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
|
|
session.addEventListener("visibilitychange", onSessionVisibilityChangeInvalid, false);
|
|
fakeDeviceController.simulateVisibilityChange("visible");
|
|
|
|
t.step_timeout(() => {
|
|
session.dispatchEvent(watcherDone);
|
|
}, 300);
|
|
}
|
|
|
|
function onSessionVisibilityChangeInvalid(event) {
|
|
t.step( () => {
|
|
assert_unreached("Should not fire visibilitychange events for the same state");
|
|
});
|
|
}
|
|
|
|
t.step( () => {
|
|
// Session visibility should start out as "visible"
|
|
assert_equals(session.visibilityState, "visible");
|
|
});
|
|
|
|
session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
|
fakeDeviceController.simulateVisibilityChange("hidden");
|
|
|
|
return eventPromise;
|
|
};
|
|
|
|
xr_session_promise_test(
|
|
testName, testFunction, fakeDeviceInitParams, 'immersive-vr');
|
|
|
|
</script>
|