| <!DOCTYPE html> |
| <body> |
| <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 = "getLightEstimate rejects if probe is from wrong session"; |
| let testFunction = (session, controller, t, sessionObjects) => new Promise((resolve) => { |
| let staleLightProbe = null; |
| let newSession = null; |
| |
| function onFrame(time, frame) { |
| t.step(() => { |
| // Attempting to get a lightEstimate with a probe created for a |
| // different session should throw an exception. |
| assert_throws_dom('InvalidStateError', () => frame.getLightEstimate(staleLightProbe)); |
| }); |
| |
| // Cleanup the new session we made and then resolve. |
| resolve(newSession.end()); |
| } |
| |
| // Request a default lightProbe |
| let probeInit = {reflectionFormat: session.preferredReflectionFormat }; |
| session.requestLightProbe(probeInit).then((probe) => { |
| staleLightProbe = probe; |
| return session.end(); |
| }).then(() => { |
| // Need to request a new session. |
| navigator.xr.test.simulateUserActivation( () => { |
| navigator.xr.requestSession('immersive-ar', {'requiredFeatures': ['light-estimation']}) |
| .then((session2) => { |
| |
| let glLayer = new XRWebGLLayer(session2, sessionObjects.gl); |
| glLayer.context = sessionObjects.gl; |
| // Session must have a baseLayer or frame requests will be ignored. |
| session2.updateRenderState({ |
| baseLayer: glLayer |
| }); |
| newSession = session2; |
| newSession.requestAnimationFrame(onFrame); |
| }); |
| }); |
| }); |
| }); |
| |
| xr_session_promise_test( |
| testName, |
| testFunction, |
| IMMERSIVE_AR_DEVICE, |
| 'immersive-ar', |
| {'requiredFeatures': ['light-estimation']}); |
| |
| </script> |
| </body> |