| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script src="resources/shaderProgram-utilities-webgl.js"></script> |
| <script id="vertex-shader" type="x-shader/x-vertex"> |
| void main(void) { |
| gl_Position = vec4(0.0, 0.0, 0.0, 1.0); |
| } |
| </script> |
| <script id="fragment-shader" type="x-shader/x-fragment"> |
| precision mediump float; |
| |
| void main(void) { |
| gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); |
| } |
| </script> |
| <script> |
| function load() { |
| createProgram("webgl"); |
| linkProgram("vertex-shader", "fragment-shader"); |
| |
| runTest(); |
| } |
| |
| function test() { |
| let suite = InspectorTest.createAsyncSuite("Canvas.updateShader.WebGL"); |
| |
| function validSourceTest({name, shaderType, source}) { |
| suite.addTestCase({ |
| name, |
| test(resolve, reject) { |
| let shaderProgram = WI.canvasManager.shaderPrograms[0]; |
| if (!shaderProgram) { |
| reject("Missing shader program") |
| return; |
| } |
| |
| let programId = shaderProgram.identifier; |
| |
| CanvasAgent.updateShader(programId, shaderType, source) |
| .then(() => CanvasAgent.requestShaderSource(programId, shaderType)) |
| .then(({source}) => InspectorTest.log(source)) |
| .then(resolve, reject); |
| } |
| }); |
| } |
| |
| validSourceTest({ |
| name: "Canvas.updateShader.WebGL.Vertex.Valid", |
| shaderType: WI.ShaderProgram.ShaderType.Vertex, |
| source: ` |
| void main(void) { |
| gl_Position = vec4(1, 2, 3, 4); |
| } |
| `, |
| }); |
| |
| validSourceTest({ |
| name: "Canvas.updateShader.WebGL.Fragment.Valid", |
| shaderType: WI.ShaderProgram.ShaderType.Fragment, |
| source: ` |
| precision mediump float; |
| |
| void main(void) { |
| gl_FragColor = vec4(0.1, 0.2, 0.3, 0.4); |
| } |
| `, |
| }); |
| |
| function invalidSourceTest({name, shaderType, source}) { |
| suite.addTestCase({ |
| name, |
| test(resolve, reject) { |
| let shaderProgram = WI.canvasManager.shaderPrograms[0]; |
| if (!shaderProgram) { |
| reject("Missing shader program") |
| return; |
| } |
| |
| CanvasAgent.updateShader(shaderProgram.identifier, shaderType, source, (error) => { |
| InspectorTest.expectThat(error, "Should produce error."); |
| InspectorTest.log("Error: " + error); |
| resolve(); |
| }); |
| } |
| }); |
| } |
| |
| invalidSourceTest({ |
| name: "Canvas.updateShader.WebGL.Vertex.Invalid", |
| shaderType: WI.ShaderProgram.ShaderType.Vertex, |
| source: "INVALID", |
| }); |
| |
| invalidSourceTest({ |
| name: "Canvas.updateShader.WebGL.Fragment.Invalid", |
| shaderType: WI.ShaderProgram.ShaderType.Fragment, |
| source: "INVALID", |
| }); |
| |
| suite.addTestCase({ |
| name: "Canvas.updateShader.WebGL.ShaderType.Invalid", |
| description: "Invalid shader types should cause an error.", |
| test(resolve, reject) { |
| let shaderProgram = WI.canvasManager.shaderPrograms[0]; |
| if (!shaderProgram) { |
| reject("Missing shader program") |
| return; |
| } |
| |
| const shaderType = "INVALID_SHADER_TYPE"; |
| const source = "INVALID_SOURCE"; |
| CanvasAgent.updateShader(shaderProgram.identifier, shaderType, source, (error) => { |
| InspectorTest.expectThat(error, "Should produce an error."); |
| InspectorTest.log("Error: " + error); |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="load()"> |
| <p>WebGL tests for Canvas.updateShader command.</p> |
| </body> |
| </html> |