4 <script src="../../http/tests/inspector/resources/inspector-test.js"></script>
5 <script src="resources/shaderProgram-utilities-webgl.js"></script>
6 <script id="vertex-shader" type="x-shader/x-vertex">
7 attribute vec3 position;
9 gl_Position = vec4(position, 1.0);
12 <script id="fragment-shader" type="x-shader/x-fragment">
13 precision mediump float;
16 gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
21 createProgram("webgl");
22 linkProgram("vertex-shader", "fragment-shader");
23 context.useProgram(program);
30 function clearContext() {
31 context.clearColor(0.0, 0.0, 0.0, 1.0);
32 context.clear(context.COLOR_BUFFER_BIT);
35 function drawArrays() {
43 let vertexBuffer = context.createBuffer();
44 context.bindBuffer(context.ARRAY_BUFFER, vertexBuffer);
45 context.bufferData(context.ARRAY_BUFFER, new Float32Array(vertexes), context.STATIC_DRAW);
47 let position = context.getAttribLocation(program, "position");
48 context.vertexAttribPointer(position, 3, context.FLOAT, false, 0, 0);
49 context.enableVertexAttribArray(position);
51 context.drawArrays(context.TRIANGLES, 0, 3);
54 function drawElements() {
62 let vertexBuffer = context.createBuffer();
63 context.bindBuffer(context.ARRAY_BUFFER, vertexBuffer);
64 context.bufferData(context.ARRAY_BUFFER, new Float32Array(vertexes), context.STATIC_DRAW);
66 let indexes = [0, 1, 2];
67 let indexBuffer = context.createBuffer();
68 context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, indexBuffer);
69 context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint16Array(indexes), context.STATIC_DRAW);
71 let position = context.getAttribLocation(program, "position");
72 context.vertexAttribPointer(position, 3, context.FLOAT, false, 0, 0);
73 context.enableVertexAttribArray(position);
75 context.drawElements(context.TRIANGLES, indexes.length, context.UNSIGNED_SHORT, 0);
79 let suite = InspectorTest.createAsyncSuite("Canvas.setShaderProgramDisabled");
81 let shaderProgram = WI.canvasManager.shaderPrograms[0];
82 let originalContent = null;
84 function validTest({name, disabled, evaluateString}) {
87 test(resolve, reject) {
88 CanvasAgent.setShaderProgramDisabled(shaderProgram.identifier, disabled, (error) => {
94 InspectorTest.evaluateInPage(evaluateString, (error) => {
100 CanvasAgent.requestContent(shaderProgram.canvas.identifier)
101 .then(({content}) => {
103 InspectorTest.expectEqual(content, originalContent, "Disabling a shader program should prevent it from drawing.");
105 InspectorTest.expectNotEqual(content, originalContent, "Re-enabling a shader program should allow it to draw.");
107 .then(resolve, reject);
115 name: "Canvas.setShaderProgramDisabled.disabledDrawArrays",
117 evaluateString: `drawArrays()`,
121 name: "Canvas.setShaderProgramDisabled.disabledDrawElements",
123 evaluateString: `drawElements()`,
127 name: "Canvas.setShaderProgramDisabled.reenabledDrawArrays",
129 evaluateString: `drawArrays()`,
133 name: "Canvas.setShaderProgramDisabled.reenabledDrawElements",
135 evaluateString: `drawElements()`,
139 name: "Canvas.setShaderProgramDisabled.invalidProgramId",
140 description: "Invalid program identifiers should cause an error.",
141 test(resolve, reject) {
142 const programId = "INVALID_PROGRAM_ID";
143 const disabled = false;
144 CanvasAgent.setShaderProgramDisabled(programId, disabled, (error) => {
145 InspectorTest.expectThat(error, "Should produce an error.");
146 InspectorTest.log("Error: " + error);
152 CanvasAgent.requestContent(shaderProgram.canvas.identifier, (error, content) => {
153 originalContent = content;
155 suite.runTestCasesAndFinish();
160 <body onload="load()">
161 <p>Test disabling and re-enabling of shader programs.</p>