'use strict'; const staleViewsTestFunctionGenerator = function(isCpuOptimized) { return (session, controller, t, sessionObjects) => { let done = false; const staleViews = new Set(); return session.requestReferenceSpace('viewer').then((viewerSpace) => { const glBinding = new XRWebGLBinding(session, sessionObjects.gl); const secondRafCb = function(time, frame) { for(const view of staleViews) { t.step(() => { assert_throws_dom("InvalidStateError", () => isCpuOptimized ? frame.getDepthInformation(view) : glBinding.getDepthInformation(view), "getDepthInformation() should throw when run with stale XRView"); }); } done = true; }; const firstRafCb = function(time, frame) { const pose = frame.getViewerPose(viewerSpace); for(const view of pose.views) { staleViews.add(view); } session.requestAnimationFrame(secondRafCb); }; session.requestAnimationFrame(firstRafCb); return t.step_wait(() => done); }); }; };