dataUnavailableTests.js (1807B)
1 'use strict'; 2 3 const TestStates = Object.freeze({ 4 "ShouldSucceedScheduleRAF": 1, 5 "ShouldFailScheduleRAF": 2, 6 "ShouldSucceedTestDone": 3, 7 }); 8 9 const dataUnavailableTestFunction = function(session, controller, t, sessionObjects) { 10 let state = TestStates.ShouldSucceedScheduleRAF; 11 const isCpuOptimized = session.depthUsage === 'cpu-optimized'; 12 13 return session.requestReferenceSpace('viewer').then((viewerSpace) => { 14 let done = false; 15 16 const glBinding = new XRWebGLBinding(session, sessionObjects.gl); 17 18 const rafCb = function(time, frame) { 19 const pose = frame.getViewerPose(viewerSpace); 20 for(const view of pose.views) { 21 const depthInformation = isCpuOptimized ? frame.getDepthInformation(view) 22 : glBinding.getDepthInformation(view); 23 24 if (state == TestStates.ShouldSucceedScheduleRAF 25 || state == TestStates.ShouldSucceedTestDone) { 26 t.step(() => { 27 assert_not_equals(depthInformation, null); 28 }); 29 } else { 30 t.step(() => { 31 assert_equals(depthInformation, null); 32 }); 33 } 34 } 35 36 switch(state) { 37 case TestStates.ShouldSucceedScheduleRAF: 38 controller.clearDepthSensingData(); 39 state = TestStates.ShouldFailScheduleRAF; 40 session.requestAnimationFrame(rafCb); 41 break; 42 case TestStates.ShouldFailScheduleRAF: 43 controller.setDepthSensingData(DEPTH_SENSING_DATA); 44 state = TestStates.ShouldSucceedTestDone; 45 session.requestAnimationFrame(rafCb); 46 break; 47 case TestStates.ShouldSucceedTestDone: 48 done = true; 49 break; 50 } 51 }; 52 53 session.requestAnimationFrame(rafCb); 54 55 return t.step_wait(() => done); 56 }); 57 };