xrSession_requestAnimationFrame_data_valid.https.html (1843B)
1 <!DOCTYPE html> 2 <body> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script src="resources/webxr_util.js"></script> 6 <script src="resources/webxr_test_constants.js"></script> 7 8 <script> 9 const testName = "RequestAnimationFrame resolves with good data"; 10 11 const fakeDeviceInitOptions = TRACKED_IMMERSIVE_DEVICE; 12 13 let testSession; 14 15 function checkView(view) { 16 assert_not_equals(view, null); 17 assert_not_equals(view.transform, null); 18 19 let inv_view_transform = view.transform.inverse; 20 assert_not_equals(inv_view_transform, null); 21 assert_not_equals(inv_view_transform.matrix, null); 22 assert_equals(inv_view_transform.matrix.length, 16); 23 } 24 25 let testFunction = function(session, testDeviceController) { 26 testSession = session; 27 return session.requestReferenceSpace('local') 28 .then((referenceSpace) => new Promise((resolve) => { 29 30 function onFrame(time, xrFrame) { 31 assert_true(xrFrame instanceof XRFrame); 32 33 let viewerPose = xrFrame.getViewerPose(referenceSpace); 34 35 assert_not_equals(viewerPose, null); 36 for(let i = 0; i < IDENTITY_MATRIX.length; i++) { 37 assert_equals(viewerPose.transform.matrix[i], IDENTITY_MATRIX[i]); 38 } 39 40 assert_not_equals(viewerPose.views, null); 41 assert_equals(viewerPose.views.length, 2); 42 checkView(viewerPose.views[0]); 43 checkView(viewerPose.views[1]); 44 45 // Test does not complete until the returned promise resolves. 46 resolve(); 47 } 48 49 testSession.requestAnimationFrame(onFrame); 50 }) 51 ); 52 } 53 54 xr_session_promise_test( 55 testName, testFunction, fakeDeviceInitOptions, 'immersive-vr'); 56 </script> 57 </body>