tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xrWebGLBinding_createCylinderLayer.https.html (2692B)


      1 <!doctype html>
      2 <title>XRWebGLBinding::createCylinderLayer</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 
     14    function testCreateCylinderLayer(xrSession, deviceController, t, { gl, xrBinding, xrSpace }) {
     15        return new Promise((resolve, reject) => {
     16            const valid_init = {
     17                space: xrSpace,
     18                viewPixelWidth: 1024,
     19                viewPixelHeight: 1024
     20            };
     21 
     22            t.step(() => {
     23                // Cylinder radius must be greater than or equal to 0.
     24                let invalid_radius = Object.assign({}, valid_init, { radius: -5 });
     25                assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_radius), "radius is negative");
     26            });
     27 
     28            t.step(() => {
     29                // Cylinder aspectRatio must be greater than 0.
     30                let invalid_aspect_ratio = Object.assign({}, valid_init, { aspectRatio: 0 });
     31                assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_aspect_ratio), "aspectRatio is 0");
     32            });
     33 
     34            t.step(() => {
     35                // Cylinder central angle must be greater than or equal to 0.
     36                let invalid_central_angle = Object.assign({}, valid_init, { centralAngle: -6 });
     37                assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_central_angle), "centralAngle is negative");
     38            });
     39 
     40            t.step(() => {
     41                // Cylinder central angle should not be greater than 2pi.
     42                let invalid_central_angle = Object.assign({}, valid_init, { centralAngle: 7.0 });
     43                assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_central_angle), "centralAngle is greater than 2pi");
     44            });
     45 
     46            // Test that a valid init works.
     47            t.step(() => {
     48                const layer = xrBinding.createCylinderLayer(valid_init);
     49                assert_true(layer instanceof XRCylinderLayer, "Valid init parameters must create an XRCylinderLayer");
     50                resolve();
     51            });
     52        });
     53    }
     54 
     55    xr_layer_promise_test("Ensure XrWebGLBinding::createCylinderLayer throws the appropriate errors",
     56        testCreateCylinderLayer, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', { requiredFeatures: ['layers'] });
     57 </script>