requestPresent.js (2196B)
1 // requestPresent.js 2 // 3 // This file provides helpers for testing VRDisplay requestPresent. 4 5 function attachVRDisplay(test) { 6 assert_equals( 7 typeof navigator.getVRDisplays, 8 "function", 9 "'navigator.getVRDisplays()' must be defined." 10 ); 11 return VRSimulationDriver.AttachWebVRDisplay(); 12 } 13 14 function setupVRDisplay(test) { 15 assert_equals( 16 typeof navigator.getVRDisplays, 17 "function", 18 "'navigator.getVRDisplays()' must be defined." 19 ); 20 return VRSimulationDriver.AttachWebVRDisplay() 21 .then(() => { 22 return navigator.getVRDisplays(); 23 }) 24 .then(displays => { 25 assert_equals( 26 displays.length, 27 1, 28 "displays.length must be one after attach." 29 ); 30 vrDisplay = displays[0]; 31 return validateNewVRDisplay(test, vrDisplay); 32 }); 33 } 34 35 // Validate the settings off a freshly created VRDisplay (prior to calling 36 // requestPresent). 37 function validateNewVRDisplay(test, display) { 38 assert_true( 39 display.capabilities.canPresent, 40 "display.capabilities.canPresent must always be true for HMDs." 41 ); 42 assert_equals( 43 display.capabilities.maxLayers, 44 1, 45 "display.capabilities.maxLayers must always be 1 when display.capabilities.canPresent is true for current spec revision." 46 ); 47 assert_false( 48 display.isPresenting, 49 "display.isPresenting must be false before calling requestPresent." 50 ); 51 assert_equals( 52 display.getLayers().length, 53 0, 54 "display.getLayers() should have no layers if not presenting." 55 ); 56 var promise = display.exitPresent(); 57 return promise_rejects(test, null, promise); 58 } 59 60 // Validate the settings off a VRDisplay after requestPresent promise is 61 // rejected or after exitPresent is fulfilled. 62 function validateDisplayNotPresenting(test, display) { 63 assert_false( 64 display.isPresenting, 65 "display.isPresenting must be false if requestPresent is rejected or after exitPresent is fulfilled." 66 ); 67 assert_equals( 68 display.getLayers().length, 69 0, 70 "display.getLayers() should have no layers if requestPresent is rejected or after exitPresent is fulfilled." 71 ); 72 var promise = display.exitPresent(); 73 return promise_rejects(test, null, promise); 74 }