xrWebGLBinding_createQuadLayer.https.html (1834B)
1 <!doctype html> 2 <title>XRWebGLBinding::createQuadLayer</title> 3 <link rel="help" href="https://immersive-web.github.io/layers/#dom-xrwebglbinding-createquadlayer"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="../resources/webxr_util.js"></script> 7 <script src="../resources/webxr_test_constants.js"></script> 8 <script src="./xr_layer_promise_test.js"></script> 9 10 <canvas id="webgl-canvas"></canvas> 11 12 <script> 13 function testCreateQuadLayer(xrSession, deviceController, t, { gl, xrBinding, xrSpace }) { 14 return new Promise((resolve, reject) => { 15 const valid_init = { 16 space: xrSpace, 17 viewPixelWidth: 1024, 18 viewPixelHeight: 1024 19 }; 20 // Width and height must be greater than 0. 21 t.step(() => { 22 let invalid_width = Object.assign({}, valid_init, { width: 0 }); 23 assert_throws_js(TypeError, () => xrBinding.createQuadLayer(invalid_width), "width is 0"); 24 }); 25 26 t.step(() => { 27 let invalid_height = Object.assign({}, valid_init, { height: 0 }); 28 assert_throws_js(TypeError, () => xrBinding.createQuadLayer(invalid_height), "height is 0"); 29 }); 30 31 // Test that a valid init works. 32 t.step(() => { 33 const layer = xrBinding.createQuadLayer(valid_init); 34 assert_true(layer instanceof XRQuadLayer, "Valid init parameters must create an XRQuadLayer"); 35 resolve(); 36 }); 37 }); 38 } 39 40 xr_layer_promise_test("Ensure XrWebGLBinding::createQuadLayer throws the appropriate errors.", 41 testCreateQuadLayer, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', { requiredFeatures: ['layers'] }); 42 43 </script>