Skip to content

Commit

Permalink
Bug 1603336 [wpt PR 20737] - Various webxr WPT fixes, a=testonly
Browse files Browse the repository at this point in the history
Automatic update from web-platform-tests
Update webxr timestamp test to not compare against window.rAF()

The exact desired behavior is unclear, see immersive-web/webxr#943 and immersive-web/webxr#225

--
Fix xrDevice_requestSession_no_mode to test for a throw, not a rejection

--
Allow spawning inline sessions without interaction

--

wpt-commits: be18a267fd4eaac9228ce681c68b3f7fa73d19e3, e9a537ff548399c0ff48f4d554081a86af30fb56, 39bacd5cc2180c62ca0468e646be16f81f353f28
wpt-pr: 20737

UltraBlame original commit: c6dbb106ae576d0dae4ef26b2de2a6d892ec3880
  • Loading branch information
marco-c committed Dec 20, 2019
1 parent 8c4ceef commit 64fe804
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@
return navigator.xr.test.simulateDeviceConnection(VALID_NON_IMMERSIVE_DEVICE)
.then( (controller) => new Promise((resolve) => {
navigator.xr.test.simulateUserActivation( () => {
resolve(promise_rejects(
t,
new TypeError(),
navigator.xr.requestSession()
))
t.step_func(() => {
assert_throws(new TypeError(), () => navigator.xr.requestSession())
})
resolve()
});
}));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,23 @@
let counter = 0;
let windowFrameTime = 0;
let frameTime = 0;
let lastFrameTime = 0;
let firstFrame = true;

function onFrameFirst(time, xrFrame) {
lastFrameTime = frameTime;
frameTime = time;
firstFrame = false;
let now = performance.now();

t.step( () => {
// This callback must be the first one called.
assert_equals(counter, 0);

// window.requestAnimationFrame and session.requestAnimationFrame
// should be providing timestamps that are on the same scale and
// within a resonable margin of error of eachother. This means that
// this frame's timestamp should be larger than one provided to a
// previous window.requestAnimationFrame and should also be within
// a sane delta of it. One minute is probably overly generous here,
// but it will at least catch cases where the times are reported with
// entirely different bases.
assert_greater_than(frameTime, windowFrameTime);
assert_approx_equals(frameTime, windowFrameTime, ONE_MINUTE);
if (!firstFrame) {
assert_greater_than(frameTime, lastFrameTime);
assert_approx_equals(frameTime, lastFrameTime, TEN_SECONDS);
}

// There's going to be some disparity between performance.now() and
// the timestamp passed into the callback, but it shouldn't be huge.
Expand All @@ -47,6 +45,12 @@
assert_approx_equals(frameTime, now, TEN_SECONDS);
});

if (firstFrame) {
session.requestAnimationFrame(onFrameFirst);
} else {
resolve();
}

counter++;
}

Expand All @@ -65,21 +69,14 @@
// Make sure all the previous callbacks fired as expected.
assert_equals(counter, 11);
});

// Finished.
resolve();
}

window.requestAnimationFrame((time) => {
windowFrameTime = time;

// Queue up several callbacks
session.requestAnimationFrame(onFrameFirst);
for (let i = 0; i < 10; ++i) {
session.requestAnimationFrame(onFrameSubsequent);
}
session.requestAnimationFrame(onFrameLast);
});
session.requestAnimationFrame(onFrameFirst);
// Queue up several callbacks
for (let i = 0; i < 10; ++i) {
session.requestAnimationFrame(onFrameSubsequent);
}
session.requestAnimationFrame(onFrameLast);

}));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@
navigator.xr.test.simulateUserActivation(() => {
navigator.xr.requestSession('immersive-vr')
.then((session) => {
try {
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
assert_unreached("XRWebGLLayer should fail when created with a context that is not XRCompatible")
} catch (err) {
assert_equals(err.name, "InvalidStateError");
}
t.step_func(() => {
try {
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
assert_unreached("XRWebGLLayer should fail when created with a context that is not XRCompatible")
} catch (err) {
assert_equals(err.name, "InvalidStateError");
}
})

gl.makeXRCompatible();

Expand Down

0 comments on commit 64fe804

Please sign in to comment.