| <!DOCTYPE html> |
| <body> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src="resources/webxr_util.js"></script> |
| <script src="resources/webxr_test_constants.js"></script> |
| <script> |
| |
| function testNoDevice(t, gl) { |
| assert_false(gl.getContextAttributes().xrCompatible); |
| return promise_rejects_dom(t, "InvalidStateError", gl.makeXRCompatible()); |
| } |
| |
| xr_promise_test("Creating a webgl context with no device", |
| testNoDevice, null, 'webgl'); |
| |
| xr_promise_test("Creating a webgl2 context with no device", |
| testNoDevice, null, 'webgl2'); |
| |
| function testOffscreenCanvas(canvas, glContextType) { |
| let gl = canvas.getContext('webgl'); |
| |
| return gl.makeXRCompatible().then(() => { |
| assert_true(gl.getContextAttributes().xrCompatible); |
| }); |
| } |
| |
| function testXrCompatible(t, gl) { |
| return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) |
| .then( (controller) => { |
| return gl.makeXRCompatible(); |
| }).then( () => { |
| assert_true(gl.getContextAttributes().xrCompatible); |
| |
| return testOffscreenCanvas(document.createElement('canvas'), 'webgl'); |
| }).then( () => { |
| return testOffscreenCanvas(document.createElement('canvas'), 'webgl2'); |
| }).then( () => { |
| return testOffscreenCanvas(new OffscreenCanvas(1, 1), 'webgl'); |
| }).then( () => { |
| return testOffscreenCanvas(new OffscreenCanvas(1, 1), 'webgl2'); |
| }); |
| } |
| |
| xr_promise_test("An XR-compatible webgl context can be created", |
| testXrCompatible, null, 'webgl'); |
| |
| xr_promise_test("An XR-compatible webgl2 context can be created", |
| testXrCompatible, null, 'webgl2'); |
| |
| </script> |
| </body> |